These are questions asked in the context of the proposed architecture described in the forum thread titled, "Sample JDO Architecture for Follow Up Questions".
Questions about blocking/locking. With my PersistenceManager multiThreaded=true architecture, I desire to know where ObjectDB is actually blocking/locking so I might adapt to achieve better concurrency.
1) Where are locks when accessing PersistenceManager by multiple threads?
2) Does it lock at PersistenceManager.currentTransaction()?
3) Does it lock at transaction.begin() if optimistic=false?
4) Does it lock at transaction.commit() if optimistic=true?
5) ObjectDB 1.0 Manual (Support > Knowledge Base > ObjectDB 1.0 Manual > 5. JDO Connections >5.3 javax.jdo.Transaction > Automatic Lock Management > Last sentence) states "On short running transactions, however, or when the probability for lock conflicts is high, datastore transactions are preferred." But, newer version 2.6.8_05 ObjectDB defaults optimistic=true, perhaps implying optimistic=true now has less overhead either way. Maybe a shared single PersistenceManager (multiThreaded=true) makes all my requests sequential and therefore ObjectDB 1.0 Manual's statement suggests datastore transactions (optimistic=false) would be faster. With my described multithreaded and queued architecture, with high throughput, especially on read, is desired, should I use optimistic=true to get more concurrency?