Assertion failure in TransactionIndexBucket#allocateTransactionStatus
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Akiban Persistit |
Fix Released
|
Medium
|
Peter Beaman |
Bug Description
Observed in 8-hour stress test run.
Stress2txn [Thread-1154] FAILED [Thread-1154]: java.lang.
at com.persistit.
at com.persistit.
at com.persistit.
at com.persistit.
at com.persistit.
at com.persistit.
at com.persistit.
at java.lang.
The likely culprit is that commitStatus() briefly locks and then unlocks a TransactionStatus and this assert is caused by a race.
Note that this bug has exactly the same title as
https:/
but is caused by an entirely different mechanism. The bug is benign in that the assert is on a transient condition that will be rectified shortly. The solution will be to test the isLocked() condition, and if set briefly tryLock to wait for the thread performing commitStatus to finish.
Related branches
- Nathan Williams: Pending requested
-
Diff: 770 lines (+287/-80)18 files modifiedsrc/main/java/com/persistit/BufferPool.java (+6/-5)
src/main/java/com/persistit/CheckpointManager.java (+2/-2)
src/main/java/com/persistit/JournalManager.java (+3/-20)
src/main/java/com/persistit/JournalManagerBench.java (+2/-1)
src/main/java/com/persistit/Persistit.java (+53/-27)
src/main/java/com/persistit/SessionId.java (+10/-0)
src/main/java/com/persistit/Transaction.java (+0/-1)
src/main/java/com/persistit/TransactionIndexBucket.java (+5/-9)
src/main/java/com/persistit/TransactionStatus.java (+20/-0)
src/main/java/com/persistit/VolumeHeader.java (+9/-1)
src/main/java/com/persistit/logging/LogBase.java (+3/-0)
src/main/java/com/persistit/util/Util.java (+4/-0)
src/test/java/com/persistit/IOFailureTest.java (+2/-0)
src/test/java/com/persistit/TransactionTest2.java (+43/-9)
src/test/java/com/persistit/stress/AbstractStressTest.java (+3/-1)
src/test/java/com/persistit/stress/AbstractSuite.java (+4/-4)
src/test/java/com/persistit/stress/StartStop.java (+2/-0)
src/test/java/com/persistit/unit/ExchangeTest.java (+116/-0)
Changed in akiban-persistit: | |
status: | New → Confirmed |
assignee: | nobody → Peter Beaman (pbeaman) |
Changed in akiban-persistit: | |
status: | Confirmed → Fix Committed |
Changed in akiban-persistit: | |
status: | Fix Committed → Fix Released |