(I promised the JBossTS guys that I would post this for the community once the forums came back online. Below are the questions and answers I obtained offline - might be useful to the community hence this post)
Watching my Oracle instance via Oracle Enterprise Manager, I can see the JBossTS periodic recovery query "SELECT formatid, globalid, branchid FROM SYS.DBA_PENDING_TRANSACTIONS" being executed concurrently (each server in my cluster is querying this).
1) Is there a way I can have only one server/JBossTS manager do this at any one time?
2) Is there a potential for problems if multiple JBossTS instances attempt to recover using the periodic recovery mechanism?
3) This is a very expensive query (based on the data I'm getting back from Oracle EM) and I think even if there aren't any problems with concurrently executing this, I'd prefer to only have a single server in the cluster perform it (if that's possible).
Answer to 1)
No, they operate autonomously. You can start the nodes at different times, which will offset the recovery cycle in each, but that's definitely in the 'orrible kludge category.
Answer to 2)
Not if they are correctly configured. Each node puts a node id into Xids it creates and recovers only Xids containing that id, leaving the others alone.
Answer to 3)
It's not currently. You'd need to share the objectstore between nodes and run the recovery manager on only one node. It's something we are mulling over for EAP6, although its not as attractive as it first appears - the singleton becomes a point of failure for the whole cluster and the
performance impact of network writes to the objectstore is bad.