Skip to Main Content

Berkeley DB Family

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

Infinite loop in Transaction.commit

721322Sep 8 2009 — edited Sep 9 2009
Hi.

I’m using the pure java implementation of Berkeley DB je-3.3.75.jar.
My application uses transactions heavily. But sometimes it hangs on Berkeley DB operations such as ‘commit’ or ‘put’.
The hangs are quite rarely events. My application had been working for more than a month before the first hang.
I haven’t managed to write a test for reproducing the problem.

There is some java code how I use the Java Berkeley DB.

// Creating of Environment
EnvironmentConfig envConfig = new EnvironmentConfig();
envConfig.setAllowCreate(true);
envConfig.setTransactional(true);
envConfig.setTxnWriteNoSync(true);


Using transaction

Transaction txn = null;
txn = environment.beginTransaction(null, transactionConfig)
try {
txn = environment.beginTransaction(null, transactionConfig);
// Some operations
….
txn.commit();
} catch (DatabaseException e) {
if (txn != null)
txn.abort();
}

Please, take a look on a stack trace. I sent kill –QUIT to the process. It looks like a infinite loop. Other threads are locked because the current thread is locked in commit and can't unlock the rows which it holds.

"Thread-9" prio=10 tid=0x084ef800 nid=0x1d runnable
[0x71b7a000..0x71b7a9f0]
java.lang.Thread.State: RUNNABLE
at java.util.zip.Adler32.updateBytes(Native Method)
at java.util.zip.Adler32.update(Adler32.java:49)
at
com.sleepycat.je.log.LogEntryHeader.addPostMarshallingInfo(LogEntryHeader.
java:296)
at
com.sleepycat.je.log.LogManager.serialLogInternal(LogManager.java:508)
at
com.sleepycat.je.log.SyncedLogManager.serialLog(SyncedLogManager.java:41)
- locked <0x7b2d26b0> (a com.sleepycat.je.latch.Latch)
at com.sleepycat.je.log.LogManager.multiLog(LogManager.java:318)
at com.sleepycat.je.log.LogManager.log(LogManager.java:279)
at com.sleepycat.je.log.LogManager.log(LogManager.java:268)
at
com.sleepycat.je.log.LogManager.logForceFlush(LogManager.java:130)
at com.sleepycat.je.txn.Txn.logCommitEntry(Txn.java:773)
at com.sleepycat.je.txn.Txn.commit(Txn.java:603)
- locked <0x7b308c38> (a com.sleepycat.je.txn.Txn)
at com.sleepycat.je.txn.Txn.commit(Txn.java:498)
at com.sleepycat.je.Transaction.commit(Transaction.java:144)
at
db.cbrgw.cache.AbstractBerkelyDBStorage$TransactionWrapper.commit(Abstract
BerkelyDBStorage.java:210)


Regards,
Alexey.
Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Oct 7 2009
Added on Sep 8 2009
7 comments
2,488 views