List:Commits« Previous MessageNext Message »
From:U-ROWVWADEjas Date:October 4 2007 9:24pm
Subject:bk commit into 6.0 tree (jas:1.2619)
View as plain text  
Below is the list of changes that have just been committed into a local
6.0 repository of . When  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-10-04 17:24:16-04:00, jas@rowvwade. +5 -0
  Add diagnostic code to print transaction blockage
  when stalling for writes.

  storage/falcon/PageWriter.cpp@stripped, 2007-10-04 17:24:08-04:00, jas@rowvwade. +6 -4
    Add diagnostic code to print transaction blockage
    when stalling for writes.

  storage/falcon/PageWriter.h@stripped, 2007-10-04 17:24:08-04:00, jas@rowvwade. +2 -1
    Add diagnostic code to print transaction blockage
    when stalling for writes.

  storage/falcon/Transaction.cpp@stripped, 2007-10-04 17:24:09-04:00, jas@rowvwade. +10 -0
    Add single transaction version of printBlockage().

  storage/falcon/Transaction.h@stripped, 2007-10-04 17:24:09-04:00, jas@rowvwade. +2 -0
    Add single transaction version of printBlockage().

  storage/falcon/TransactionManager.cpp@stripped, 2007-10-04 17:24:09-04:00, jas@rowvwade. +1 -1
    Adjust transaction dump formatting.

diff -Nrup a/storage/falcon/PageWriter.cpp b/storage/falcon/PageWriter.cpp
--- a/storage/falcon/PageWriter.cpp	2007-09-20 11:42:09 -04:00
+++ b/storage/falcon/PageWriter.cpp	2007-10-04 17:24:08 -04:00
@@ -26,6 +26,7 @@
 #include "Database.h"
 #include "BDB.h"
 #include "Cache.h"
+#include "Transaction.h"
 
 #ifdef _DEBUG
 #undef THIS_FILE
@@ -260,7 +261,7 @@ void PageWriter::removeElement(DirtyPage
 		release(transaction);
 }
 
-void PageWriter::waitForWrites(TransId transactionId)
+void PageWriter::waitForWrites(Transaction *transaction)
 {
 	Sync sync(&syncObject, "PageWriter::waitForWrites");
 	Thread *thread = NULL;
@@ -268,15 +269,16 @@ void PageWriter::waitForWrites(TransId t
 	for (;;)
 		{
 		sync.lock(Exclusive);
-		DirtyTrans *transaction = findDirtyTransaction(transactionId);
+		DirtyTrans *dirtyTrans = findDirtyTransaction(transaction->transactionId);
 
-		if (!transaction)
+		if (!dirtyTrans)
 			return;
 
 		if (!thread)
 			thread = Thread::getThread("PageWriter::waitForWrites");
 
-		transaction->thread = thread;
+		dirtyTrans->thread = thread;
+		transaction->printBlockage();
 		sync.unlock();
 		thread->sleep();
 		}
diff -Nrup a/storage/falcon/PageWriter.h b/storage/falcon/PageWriter.h
--- a/storage/falcon/PageWriter.h	2007-09-20 11:42:09 -04:00
+++ b/storage/falcon/PageWriter.h	2007-10-04 17:24:08 -04:00
@@ -31,6 +31,7 @@ class Cache;
 class Database;
 class Dbb;
 class Thread;
+class Transaction;
 struct DirtyTrans;
 
 struct DirtyPage {
@@ -78,7 +79,7 @@ public:
 	void release (DirtyTrans *transaction);
 	DirtyTrans* getDirtyTransaction(TransId transactionId);
 	DirtyTrans* findDirtyTransaction(TransId transactionId);
-	void waitForWrites(TransId transactionId);
+	void waitForWrites(Transaction *transaction);
 	void removeElement (DirtyPage *element);
 	void pageWritten(Dbb *dbb, int32 pageNumber);
 	void start();
diff -Nrup a/storage/falcon/Transaction.cpp b/storage/falcon/Transaction.cpp
--- a/storage/falcon/Transaction.cpp	2007-10-03 13:02:47 -04:00
+++ b/storage/falcon/Transaction.cpp	2007-10-04 17:24:09 -04:00
@@ -40,6 +40,7 @@
 #include "InfoTable.h"
 #include "Thread.h"
 #include "Format.h"
+#include "LogLock.h"
 
 static const char *stateNames [] = {
 	"Active",
@@ -1262,4 +1263,13 @@ void Transaction::releaseSavePoints(void
 		if (savePoint < localSavePoints || savePoint >= localSavePoints + LOCAL_SAVE_POINTS)
 			delete savePoint;
 		}
+}
+
+void Transaction::printBlockage(void)
+{
+	TransactionManager *transactionManager = database->transactionManager;
+	LogLock logLock;
+	Sync sync (&transactionManager->activeTransactions.syncObject, "Transaction::printBlockage");
+	sync.lock (Shared);
+	printBlocking(0);
 }
diff -Nrup a/storage/falcon/Transaction.h b/storage/falcon/Transaction.h
--- a/storage/falcon/Transaction.h	2007-09-25 01:14:42 -04:00
+++ b/storage/falcon/Transaction.h	2007-10-04 17:24:09 -04:00
@@ -187,6 +187,8 @@ protected:
 	RecordVersion	**recordPtr;
 
 	virtual ~Transaction();
+public:
+	void printBlockage(void);
 };
 
 #endif // !defined(AFX_TRANSACTION_H__02AD6A4D_A433_11D2_AB5B_0000C01D2301__INCLUDED_)
diff -Nrup a/storage/falcon/TransactionManager.cpp b/storage/falcon/TransactionManager.cpp
--- a/storage/falcon/TransactionManager.cpp	2007-10-04 14:08:36 -04:00
+++ b/storage/falcon/TransactionManager.cpp	2007-10-04 17:24:09 -04:00
@@ -439,7 +439,7 @@ void TransactionManager::printBlockage(v
 
 	for (Transaction *trans = activeTransactions.first; trans; trans = trans->next)
 		if (trans->state == Active && !trans->waitingFor)
-			trans->printBlocking(1);
+			trans->printBlocking(0);
 }
 
 void TransactionManager::printBlocking(Transaction* transaction, int level)
Thread
bk commit into 6.0 tree (jas:1.2619)U-ROWVWADEjas4 Oct