"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#...
Reply to the post :
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&a...