Hi Hobo,
The map transactionsAndLogsOccupied is expected to
contain one entry per transaction, with xid as its key. The first time a
transaction's log is written to the log, an entry is created inside
this map (*1). And when a transaction commits/rollsback, that entry is
removed (*2). These are the only two places for the transaction's entry
to enter/exit this map. The code places are:
*1 TransactionLogsUtility.trackTransactionLogsUsage: "transactionsAndLogsOccupied.put(xid, logsOccupied);"
*2 GatheringDiskWriter.cleanupTransactionInfo: "transactionsAndLogsOccupied.remove(xid);".
Do
you find this issue intermittent or frequent? If you can reproduce this
with a simple test-case, and send the details to me, I can diagnose
locally.
You can also try to debug why this map has the entry
missing - it is generally not expected. Has this xid's entry even
entered into the map earlier? Does the map contain entries for other
transactions? Is this issue happening for some specific types of
transaction? Are your xid's unique?
I think the problem here must be different that issue#154. Please let me know how your analysis proceeds.
Thanks,
Nitin