[jboss-dev-forums] [Design of Messaging on JBoss (Messaging/JBoss)] - Re: Can the transaction manager retry commit or rollback?

mark.little@jboss.com do-not-reply at jboss.com
Mon Sep 18 07:15:46 EDT 2006


"timfox" wrote : I was hoping you were going to answer :)
  | 

Given the amount of corporate spam we get, sometimes email is easier ;-)

anonymous wrote : 
  | We currently log prepared states in the db (this will change).
  | 
  | So after the prepare has completed the prepared state has been logged durably.
  | 
  | The thing in memory is our "Transaction" class, which has methods prepare(), commit(), rollback() etc.
  | 
  | When a prepare comes in we add the Transaction instance to the in memory map.
  | 
  | This means that when we receive a subsequent commit/rollback we look in the map, get the instance and call commit/rollback on it.
  | 
  | This then moves the prepared state from the log to permanent storage.
  | 
  | So, if I remove the Transaction instance from memory after commit/rollback irrespective of whether an exception occurs, then if another commit/rollback comes in without recover (recover repopulates the map from the log) it won't find it.
  | 
  | If I don't remove the instance then I get a memory leak.
  | 
  | AFAICT the solution here is to repopulate the map if a commit/rollback comes in and it isn't in the map - which is a bit of a pain....

Aren't you going to have to do this anyway if you have a crash failure, given that the map is in volatile store?

View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=3972263#3972263

Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=3972263



More information about the jboss-dev-forums mailing list