List:Commits« Previous MessageNext Message »
From:Jim Starkey Date:September 5 2007 9:48pm
Subject:bk commit into 6.0-falcon tree (jas:1.2595)
View as plain text  
Below is the list of changes that have just been committed into a local
6.0-falcon repository of jas. When jas 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, 2007-09-05 15:48:16-04:00, jas@stripped +4 -0
  Print pending updates as part of pending transaction dump.

  storage/falcon/Database.cpp@stripped, 2007-09-05 15:48:12-04:00,
jas@stripped +1 -0
    Add dormant diagnostic call.

  storage/falcon/Transaction.cpp@stripped, 2007-09-05 15:48:12-04:00,
jas@stripped +48 -8
    Print pending updates as part of pending transaction dump.

  storage/falcon/Transaction.h@stripped, 2007-09-05 15:48:12-04:00,
jas@stripped +1 -0
    Print pending updates as part of pending transaction dump.

  storage/falcon/TransactionManager.cpp@stripped, 2007-09-05 15:48:12-04:00,
jas@stripped +1 -1
    Clean up pending transaction dump.

diff -Nrup a/storage/falcon/Database.cpp b/storage/falcon/Database.cpp
--- a/storage/falcon/Database.cpp	2007-09-05 13:03:23 -04:00
+++ b/storage/falcon/Database.cpp	2007-09-05 15:48:12 -04:00
@@ -1610,6 +1610,7 @@ void Database::scavenge()
 
 void Database::retireRecords(bool forced)
 {
+	//transactionManager->printBlockage();
 	int cycle = scavengeCycle;
 	Sync lock(&syncScavenge, "Database::retireRecords");
 	lock.lock(Exclusive);
diff -Nrup a/storage/falcon/Transaction.cpp b/storage/falcon/Transaction.cpp
--- a/storage/falcon/Transaction.cpp	2007-09-05 13:03:23 -04:00
+++ b/storage/falcon/Transaction.cpp	2007-09-05 15:48:12 -04:00
@@ -134,6 +134,7 @@ void Transaction::initialize(Connection*
 		freeSavePoints = localSavePoints + n;
 		}
 	
+	blockingRecord = NULL;
 	thread = Thread::getThread("Transaction::init");
 	syncActive.lock(NULL, Exclusive);
 	Transaction *oldest = transactionManager->findOldest();
@@ -751,7 +752,11 @@ void Transaction::commitRecords()
 
 State Transaction::getRelativeState(Record* record, uint32 flags)
 {
-	return getRelativeState(record->getTransaction(), record->getTransactionId(),
flags);
+    blockingRecord = record;
+	State state = getRelativeState(record->getTransaction(),
record->getTransactionId(), flags);
+	blockingRecord = NULL;
+
+	return state;
 }
 
 /***
@@ -1113,19 +1118,54 @@ void Transaction::printBlocking(int leve
 {
 	int locks = 0;
 	int updates = 0;
+	int inserts = 0;
+	int deletes = 0;
+	RecordVersion *record;
 
-	for (RecordVersion *record = firstRecord; record; record = record->nextInTrans)
+	for (record = firstRecord; record; record = record->nextInTrans)
 		if (record->state == recLock)
 			++locks;
-		else
+		else if (!record->hasRecord())
+			++deletes;
+		else if (record->priorVersion)
 			++updates;
+		else
+			++inserts;
+
+	Log::debug ("%*s Trans %d, thread %d, locks %d, inserts %d, deleted %d, updates %d\n", 
+				level * INDENT, "", transactionId,
+				thread->threadId, locks, inserts, deletes, updates);
+
+	++level;
 
-	Log::debug ("%*s Trans %p, id %d, thread %d, locks %d, updates %d\n", 
-				level * INDENT, "", this, transactionId,
-				thread->threadId, locks, updates);
+	if (blockingRecord)
+		Log::debug("%*s Blocking on %s.%s record %d\n",
+				   level * INDENT, "",
+				   blockingRecord->table->name, blockingRecord->table->schemaName,
+				   blockingRecord->recordNumber);
+
+	for (record = firstRecord; record; record = record->nextInTrans)
+		{
+		const char *what;
+
+		if (record->state == recLock)
+			what = "locked";
+		else if (!record->hasRecord())
+			what = "deleted";
+		else if (record->priorVersion)
+			what = "updated";
+		else
+			what = "inserted";
+
+		Log::debug("%*s Record %s.%s number %d %s\n",
+				   level * INDENT, "",
+				   record->table->name, 
+				   record->table->schemaName,
+				   record->recordNumber,
+				   what);
+		}
 
-	if (waitingFor)
-		database->transactionManager->printBlocking(waitingFor, level + 1);
+	database->transactionManager->printBlocking(this, level);
 }
 
 void Transaction::getInfo(InfoTable* infoTable)
diff -Nrup a/storage/falcon/Transaction.h b/storage/falcon/Transaction.h
--- a/storage/falcon/Transaction.h	2007-09-05 13:03:23 -04:00
+++ b/storage/falcon/Transaction.h	2007-09-05 15:48:12 -04:00
@@ -147,6 +147,7 @@ public:
 	SavePoint		localSavePoints[LOCAL_SAVE_POINTS];
 	DeferredIndex	*deferredIndexes;
 	Thread			*thread;
+	Record			*blockingRecord;
 	int				deferredIndexCount;
 	int				statesAllocated;
 	int				isolationLevel;
diff -Nrup a/storage/falcon/TransactionManager.cpp b/storage/falcon/TransactionManager.cpp
--- a/storage/falcon/TransactionManager.cpp	2007-09-05 13:03:23 -04:00
+++ b/storage/falcon/TransactionManager.cpp	2007-09-05 15:48:12 -04:00
@@ -444,5 +444,5 @@ void TransactionManager::printBlocking(T
 {
 	for (Transaction *trans = activeTransactions.first; trans; trans = trans->next)
 		if (trans->state == Active && trans->waitingFor == transaction)
-			trans->printBlocking(level + 1);
+			trans->printBlocking(level);
 }
Thread
bk commit into 6.0-falcon tree (jas:1.2595)Jim Starkey5 Sep