IllegalStateException in Transaction#prepare

Bug #1041003 reported by Peter Beaman
8
This bug affects 1 person
Affects Status Importance Assigned to Milestone
Akiban Persistit
Medium
Peter Beaman

Bug Description

UpdDelAtomics failed with this stack trace:

ERROR [Network-Worker-Thread-8] 2012-08-23 17:25:58,506 ErrorResponse.java (line 91) ErrorCode of ERROR importance
java.lang.IllegalStateException: Record size 199 is too long for Transaction buffer in Transaction_100000016 depth=1 status=<ts=17,070,849 tc=UNCOMMITTED mvv=0> owner=Network-Worker-Thread-8
        at com.persistit.Transaction.prepare(Transaction.java:1142)
        at com.persistit.Transaction.writeStoreRecordToJournal(Transaction.java:1176)
        at com.persistit.Transaction.store(Transaction.java:1105)
        at com.persistit.Exchange.storeInternal(Exchange.java:1370)
        at com.persistit.Exchange.store(Exchange.java:1294)
        at com.persistit.Exchange.store(Exchange.java:2539)
        at com.akiban.server.store.PersistitStore.writeRow(PersistitStore.java:376)
        at com.akiban.server.store.PersistitStore.writeRow(PersistitStore.java:338)
        at com.akiban.server.store.DelegatingStore.writeRow(DelegatingStore.java:80)
        at com.akiban.qp.persistitadapter.OperatorStore.writeRow(OperatorStore.java:177)
        at com.akiban.server.service.dxl.BasicDMLFunctions.writeRow(BasicDMLFunctions.java:583)
        at com.akiban.server.service.dxl.HookableDMLFunctions.writeRow(HookableDMLFunctions.java:275)
        at com.akiban.server.message.WriteRowRequest.executeDML(WriteRowRequest.java:69)
        at com.akiban.server.message.WriteRowRequest.executeDML(WriteRowRequest.java:44)
        at com.akiban.server.message.DMLRequest.execute(DMLRequest.java:86)
        at com.akiban.server.service.network.DefaultRequestHandler.executeMessage(DefaultRequestHandler.java:78)
        at com.akiban.server.service.network.DefaultRequestHandler.handleRequest(DefaultRequestHandler.java:58)
        at com.akiban.server.service.network.RequestRunner.run(RequestRunner.java:72)
        at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
        at java.lang.Thread.run(Thread.java:619)

Related branches

Revision history for this message
Peter Beaman (pbeaman) wrote :

I believe the circumstances are that our test automation software deleted the journal files, causing a prior journal I/O operation to fail with an IOException, specifically in the JournalManager#writeTransactionToJournal method. That exception left the transaction ByteBuffer in a flipped condition; the buffer.clear() method was never called.

In summary, I think this bug requires an extraordinary event (deleting the journal files of the running server), but the consequence also needs to be handled better.

Changed in akiban-persistit:
status: New → Confirmed
importance: Undecided → Medium
assignee: nobody → Peter Beaman (pbeaman)
Peter Beaman (pbeaman)
visibility: private → public
Changed in akiban-persistit:
milestone: none → 3.1.8
Peter Beaman (pbeaman)
Changed in akiban-persistit:
status: Confirmed → Fix Committed
Peter Beaman (pbeaman)
Changed in akiban-persistit:
status: Fix Committed → Fix Released
To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Other bug subscribers