Details
-
Bug
-
Status: Open
-
Major
-
Resolution: Unresolved
-
None
-
None
-
None
Description
AtAbort_AppendOnly
while ((pending = (AppendOnlyHashEntryPendingCleanup *) hash_seq_search(&status)) != NULL)
{
if (pending->nestedLevel >= currentLevel)
{
/*
* the sub transaction which include the truncate/alter operator has been aborted,
* so its aoentry is not staled anymore.
*/
aoentry = AORelLookupHashEntry(pending->relid);
if (aoentry)
{ Insist(aoentry->staleTid == CurrentXid); aoentry->staleTid = InvalidTransactionId; //clear flag stale }
hash_search(AppendOnlyHashEntryPendingDeleteCleanup,
(void *) &pending->relid,
HASH_REMOVE,
&found);
}
}
If an error occurs during execution, aoentry->staleTid is not assigned,abort will failed and
AOSegFileLock cannot free, which maybe cause when abort the entire transaction cannot get the lock