#At file:///home/os136802/mysql/develop/repo/falcon-bug41357/ based on revid:jstarkey@stripped
3073 Olav Sandstaa 2009-03-24
Follow-up to patch for Bug#41357 falcon.falcon_bug_34351_C fails with assertion IS_CONSISTENT_READ
In the initial fix there was a change to Transaction::needToLock(). This
change assumed that the record pointer always referred to a RecordVersion
object. This assumption is wrong. It is possible that the object is a
Record object.
This resulted in the ASSERT(transState != NULL) being hit when running
falcon_backlog test.
This patch changes the code in Transaction::needToLock() so that it
works correctly both when the record parameter referes a RecordVersion
object and a Record object.
@ storage/falcon/Transaction.cpp
Fix Transaction::needToLock() so that it handles the record argument points to a Record object
as well as RecordVersion objects.
modified:
storage/falcon/Transaction.cpp
=== modified file 'storage/falcon/Transaction.cpp'
--- a/storage/falcon/Transaction.cpp 2009-03-24 19:38:00 +0000
+++ b/storage/falcon/Transaction.cpp 2009-03-24 21:13:10 +0000
@@ -743,7 +743,10 @@ bool Transaction::visible(Transaction *
bool Transaction::visible(const TransactionState* transState, int forWhat) const
{
- ASSERT(transState != NULL);
+ // If the transaction state is NULL it has been committed long ago
+
+ if (!transState)
+ return true;
// If we're the transaction in question, consider us committed
@@ -795,13 +798,12 @@ bool Transaction::needToLock(Record* rec
for (Record* candidate = record; candidate != NULL; candidate = candidate->getPriorVersion())
{
TransactionState* transState = candidate->getTransactionState();
- ASSERT(transState != NULL);
-
+
if (visible(transState, FOR_WRITING))
{
if (candidate->state == recDeleted)
{
- if (transState->state == Committed)
+ if (!transState || transState->state == Committed)
return false; // Committed and deleted
return true; // Just in case this rolls back.
Attachment: [text/bzr-bundle] bzr/olav@sun.com-20090324211310-6ig6tbp0kp6zowml.bundle
| Thread |
|---|
| • bzr commit into mysql-6.0-falcon-team branch (olav:3073) Bug#41357 | Olav Sandstaa | 24 Mar |