Lock table not pruned
Bug #1126868 reported by
Peter Beaman
This bug affects 1 person
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Akiban Persistit |
Fix Released
|
High
|
Peter Beaman |
Bug Description
Akiban Server fails DataLoadingTest due to a full temporary volume. This is likely due to an accumulation of lock table records which should be pruned after transactions commit.
Related branches
lp:~pbeaman/akiban-persistit/fix-1126868-lock-table-pruning
- Akiban Build User: Needs Fixing
- Nathan Williams: Approve
-
Diff: 1090 lines (+312/-112)24 files modifiedsrc/main/java/com/persistit/Buffer.java (+19/-12)
src/main/java/com/persistit/BufferPool.java (+2/-2)
src/main/java/com/persistit/CleanupManager.java (+14/-7)
src/main/java/com/persistit/Exchange.java (+14/-8)
src/main/java/com/persistit/IntegrityCheck.java (+1/-1)
src/main/java/com/persistit/Management.java (+8/-3)
src/main/java/com/persistit/ManagementImpl.java (+2/-0)
src/main/java/com/persistit/Persistit.java (+21/-11)
src/main/java/com/persistit/Transaction.java (+39/-0)
src/main/java/com/persistit/TransactionIndex.java (+12/-0)
src/main/java/com/persistit/Tree.java (+2/-2)
src/main/java/com/persistit/Volume.java (+20/-9)
src/main/java/com/persistit/VolumeStorageL2.java (+89/-0)
src/main/java/com/persistit/VolumeStorageT2.java (+15/-14)
src/main/java/com/persistit/VolumeStructure.java (+6/-4)
src/main/java/com/persistit/ui/AdminUISummaryPanel.java (+2/-2)
src/main/java/com/persistit/ui/AdminUITreePanel.java (+1/-1)
src/main/java/com/persistit/ui/VTComboBoxModel.java (+1/-1)
src/main/resources/com/persistit/ui/AdminUI.properties (+2/-2)
src/test/java/com/persistit/Bug1041293Test.java (+3/-2)
src/test/java/com/persistit/CleanupManagerTest.java (+3/-1)
src/test/java/com/persistit/ExchangeLockTest.java (+29/-24)
src/test/java/com/persistit/MVCCPruneBufferTest.java (+5/-5)
src/test/java/com/persistit/TestShim.java (+2/-1)
Changed in akiban-persistit: | |
status: | New → Fix Committed |
Changed in akiban-persistit: | |
milestone: | none → 3.2.6 |
status: | Fix Committed → Fix Released |
To post a comment you must log in.
The recently added Exchange#lock method has a flaw that was exploited by Akiban Server Data Loading Test. It is possible for transactions inserting locks with sequentially varying keys to accumulate in the lock volume in such a way that pruning can't keep up. The result is that the lock volume, which is intended to be a very small in-memory structure, instead exceeds 2GB in size. To fix this will require some additional logic in the pruning code.