List:Commits« Previous MessageNext Message »
From:Christopher Powers Date:January 21 2009 12:36am
Subject:bzr commit into mysql-6.0-falcon-team branch (christopher.powers:2968)
Bug#42131
View as plain text  
#At file:///home/cpowers/work/dev/dev-03/mysql/

 2968 Christopher Powers	2009-01-20
      Bug #42131 falcon_backlog test crashes in Record::getEncodedValue
      
      Record chill now exclusively locks the record version chain before deleting
      the record memory.
modified:
  storage/falcon/SRLUpdateRecords.cpp

per-file messages:
  storage/falcon/SRLUpdateRecords.cpp
    SRLUpdateRecords::chill() now locks syncPrior before chilling.
    
    It uses a 50ms wait to defer to other tasks already accessing the record chain. If
    an exclusive lock cannot be acquired, the record is not chilled.
    
    This is a provisional resolution to a syncPrior/syncWrite deadlock that
    can be triggered by a low-level thaw on a concurrent thread already
    holding syncPrior. Such a deadlock can occur while pruning record versions
    during during a scavenge.
=== modified file 'storage/falcon/SRLUpdateRecords.cpp'
--- a/storage/falcon/SRLUpdateRecords.cpp	2009-01-17 08:22:44 +0000
+++ b/storage/falcon/SRLUpdateRecords.cpp	2009-01-21 00:35:50 +0000
@@ -42,6 +42,13 @@ bool SRLUpdateRecords::chill(Transaction
 {
 	Sync syncPrior(record->getSyncPrior(), "SRLUpdateRecords::chill");
 	
+	// Exclusively lock the record chain before chilling the record. Use a 50ms wait to defer
+	// to other tasks accessing the record chain.
+	//
+	// This is a provisional resolution to a syncPrior/syncWrite deadlock that can be triggered
+	// by a low-level thaw on a concurrent thread already holding syncPrior. Such a deadlock
+	// can occur while pruning record versions during during a scavenge.
+	
 	try
 		{
 		syncPrior.lock(Exclusive, 50);

Thread
bzr commit into mysql-6.0-falcon-team branch (christopher.powers:2968)Bug#42131Christopher Powers21 Jan