Pruning incompete on simple DUPLICATE_KEY error
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Akiban Persistit |
Fix Released
|
High
|
Peter Beaman |
Bug Description
Server: r2590
Persistit: r422
First noticed when testing REST POST, but happens through SQL just as easily:
test=> CREATE TABLE t(id INT NOT NULL PRIMARY KEY);
CREATE TABLE
test=> INSERT INTO t VALUES (1);
INSERT 0 1
test=> INSERT INTO t VALUES (1);
ERROR: Non-unique key for index PRIMARY: {(long)1}
And shortly thereafter, pruning warnings star to appear in the log:
2013-02-25 18:04:18,513 [PostgresServer
2013-02-25 18:04:24,246 [PostgresServer
com.akiban.
at com.akiban.
at com.akiban.
at com.akiban.
at com.akiban.
at com.akiban.
at com.akiban.
at com.akiban.
at com.akiban.
at com.akiban.
at com.akiban.
at com.akiban.
at com.akiban.
at com.akiban.
at com.akiban.
at com.akiban.
at com.akiban.
at com.akiban.
at java.lang.
2013-02-25 18:04:24,631 [CLEANUP_MANAGER] WARN TreeService - [CLEANUP_MANAGER] WARNING Transaction <ts=5,098 tc=ABORTED mvv=1> pruning incomplete at JournalAddress 1,200,882{5,098} after rollback
2013-02-25 18:04:29,637 [CLEANUP_MANAGER] WARN TreeService - [CLEANUP_MANAGER] WARNING Transaction <ts=5,098 tc=ABORTED mvv=1> pruning incomplete at JournalAddress 1,200,882{5,098} after rollback
<repeat forever>
Marking as HIGH as this will fill up the log with cruft and, more importantly, keep journal files around.
Related branches
- 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)
Looks like it is somehow related to the recently added lock mechanism. The warning doesn't happen if everything in PersistitStore# lockKey( ) is commented out.
This is probably a Persistit bug, and not server, but I'll leave it as-is until fully confirmed.