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.,