List:Commits« Previous MessageNext Message »
From:cpowers Date:April 25 2008 5:44am
Subject:bk commit into 6.0 tree (cpowers:1.2645) BUG#36330
View as plain text  
Below is the list of changes that have just been committed into a local
6.0 repository of cpowers.  When cpowers does a push these changes
will be propagated to the main repository and, within 24 hours after the
push, to the public repository.
For information on how to access the public repository
see http://dev.mysql.com/doc/mysql/en/installing-source-tree.html

ChangeSet@stripped, 2008-04-24 22:44:18-05:00, cpowers@stripped +4 -0
  Bug #36330: Falcon DBT2 crash in Transaction::needToLock
  - Added syncPrior protection to Transaction::needToLock() 
  - Removed RecordVersion::getSyncPrior()
  - Record::getSyncPrior() now returns syncObject

  storage/falcon/Record.cpp@stripped, 2008-04-24 22:44:16-05:00, cpowers@stripped +1 -1
    Record::getSyncPrior() now returns syncObject pointer rather than NULL.

  storage/falcon/RecordVersion.cpp@stripped, 2008-04-24 22:44:16-05:00, cpowers@stripped
+0 -4
    Removed getSyncPrior().

  storage/falcon/RecordVersion.h@stripped, 2008-04-24 22:44:16-05:00, cpowers@stripped
+0 -1
    Removed getSyncPrior().

  storage/falcon/Transaction.cpp@stripped, 2008-04-24 22:44:16-05:00, cpowers@stripped
+3 -0
    Transaction::needToLock() - Added syncPrior protection to prior record version scan.

diff -Nrup a/storage/falcon/Record.cpp b/storage/falcon/Record.cpp
--- a/storage/falcon/Record.cpp	2008-04-22 14:46:06 -05:00
+++ b/storage/falcon/Record.cpp	2008-04-24 22:44:16 -05:00
@@ -956,5 +956,5 @@ int Record::getSize(void)
 
 SyncObject* Record::getSyncPrior(void)
 {
-	return NULL;
+	return format->table->getSyncPrior(this);
 }
diff -Nrup a/storage/falcon/RecordVersion.cpp b/storage/falcon/RecordVersion.cpp
--- a/storage/falcon/RecordVersion.cpp	2008-04-11 21:22:43 -05:00
+++ b/storage/falcon/RecordVersion.cpp	2008-04-24 22:44:16 -05:00
@@ -457,7 +457,3 @@ void RecordVersion::serialize(Serialize*
 		stream->putInt(2);
 }
 
-SyncObject* RecordVersion::getSyncPrior()
-{
-	return format->table->getSyncPrior(this);
-}
diff -Nrup a/storage/falcon/RecordVersion.h b/storage/falcon/RecordVersion.h
--- a/storage/falcon/RecordVersion.h	2008-04-09 09:51:56 -05:00
+++ b/storage/falcon/RecordVersion.h	2008-04-24 22:44:16 -05:00
@@ -56,7 +56,6 @@ public:
 	virtual void		print(void);
 	virtual int			getSize(void);
 	virtual void		serialize(Serialize* stream);
-	virtual SyncObject* getSyncPrior();
 
 	void				commit();
 
diff -Nrup a/storage/falcon/Transaction.cpp b/storage/falcon/Transaction.cpp
--- a/storage/falcon/Transaction.cpp	2008-04-11 21:22:44 -05:00
+++ b/storage/falcon/Transaction.cpp	2008-04-24 22:44:16 -05:00
@@ -748,6 +748,9 @@ bool Transaction::needToLock(Record* rec
 {
 	// Find the first visible record version
 
+	Sync syncPrior(record->getSyncPrior(), "Transaction::needToLock");
+	syncPrior.lock(Shared);
+
 	for (Record* candidate = record; 
 		 candidate != NULL;
 		 candidate = candidate->getPriorVersion())
Thread
bk commit into 6.0 tree (cpowers:1.2645) BUG#36330cpowers25 Apr