I was looking at moving the Simulator managed entities into a different database and found that Transaction.java is not able to switch to the right DB based on context of its execution.
To explain further: The ServerResource for simulator which is the bottommost layer manages a set of Daos which alter entities in the database : `simulator`. When the context goes back to the middle manager layers of CS (ResourceManagerImpl say) after a Command is executed at the ServerResource all the Daos in the Managers seem to access the `simulator` db instead of the `cloud` db for their operations. I noticed that Transaction.java holds a threadlocal store where it retains the _previously used database. 1) Is this a bad design for the simulator in that it tries to alter db entities at the ServerResource? 2) Or is this a bug in the way transactions are managed? 3) Or is this the wrong way to switch databases? txn = Transaction.open(Transaction.SIMULATOR_DB) try { txn.start(); .... some persistence code here.... txn.commit(); } catch (Exception ex) { txn.rollback(); } finally { txn.close(); } Thanks, -- Prasanna.,