From: <ad...@jb...> - 2004-09-12 08:01:30
|
Your misunderstanding is that we don't need to log each XAResource (branch Xid) in each transaction. All we need to do is log the global XIDs that have been prepared and those that have been committed. We need a separate list of 'XAResources'. When we recover, we ask each XAResource what XIDs it knows about and compare (ignoring the branch). For our own XAResources, we can just log the ObjectName of the ManagedConnectionFactory provided by jca. For other people's XAResources (e.g. DTM), we need a handle/proxy (serialized in a persistent location) that lets us reconnect to that server. The downside to this approach however is that we cannot do a partial recovery. We must have all XAResources available (including remote servers or an alternate server with the failed server's recovery log) at recovery time. With your approach, it would be possible to do a partial recovery without all XAResources available. If an XAResource that is not available didn't take part in a transaction we could recover this transaction. The downside of your approach is that you do a lot more logging. In practise with either approaches, a failure to reconnect to an XAResource probably means you'll have to fallback to Heuristics, unless you can afford not to reboot the server. View the original post : http://www.jboss.org/index.html?module=bb&op=viewtopic&p=3847927#3847927 Reply to the post : http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&p=3847927 |