[jboss-cvs] JBoss Messaging SVN: r4959 - trunk/src/main/org/jboss/messaging/core/journal/impl.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Tue Sep 16 17:34:32 EDT 2008


Author: clebert.suconic at jboss.com
Date: 2008-09-16 17:34:31 -0400 (Tue, 16 Sep 2008)
New Revision: 4959

Modified:
   trunk/src/main/org/jboss/messaging/core/journal/impl/JournalImpl.java
Log:
Tweak on journal for performance on transactions and AIO

Modified: trunk/src/main/org/jboss/messaging/core/journal/impl/JournalImpl.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/journal/impl/JournalImpl.java	2008-09-16 21:33:07 UTC (rev 4958)
+++ trunk/src/main/org/jboss/messaging/core/journal/impl/JournalImpl.java	2008-09-16 21:34:31 UTC (rev 4959)
@@ -548,9 +548,11 @@
 
       lock.acquire();
 
+      TransactionCallback callback = getTransactionCallback(txID);
+      
       try
       {
-         JournalFile usedFile = appendRecord(bb, syncTransactional, getTransactionCallback(txID));
+         JournalFile usedFile = appendRecord(bb, syncTransactional, callback);
 
          tx.prepare(usedFile);
       }
@@ -558,6 +560,12 @@
       {
          lock.release();
       }
+      
+      // We should wait this outside of the lock, to increase throuput
+      if (callback != null)
+      {
+         callback.waitCompletion();
+      }
    }
 
    /**
@@ -595,9 +603,11 @@
 
       lock.acquire();
 
+      TransactionCallback callback = getTransactionCallback(txID);
+      
       try
       {
-         JournalFile usedFile = appendRecord(bb, syncTransactional, getTransactionCallback(txID));
+         JournalFile usedFile = appendRecord(bb, syncTransactional, callback);
 
          transactionCallbacks.remove(txID);
 
@@ -607,6 +617,13 @@
       {
          lock.release();
       }
+      
+      // We should wait this outside of the lock, to increase throuput
+      if (callback != null)
+      {
+         callback.waitCompletion();
+      }
+      
    }
 
    public void appendRollbackRecord(final long txID) throws Exception
@@ -634,9 +651,12 @@
 
       lock.acquire();
 
+      TransactionCallback callback = getTransactionCallback(txID);
+      
+
       try
       {
-         JournalFile usedFile = appendRecord(bb, syncTransactional, getTransactionCallback(txID));
+         JournalFile usedFile = appendRecord(bb, syncTransactional, callback);
 
          transactionCallbacks.remove(txID);
 
@@ -646,6 +666,14 @@
       {
          lock.release();
       }
+      
+      // We should wait this outside of the lock, to increase throuput
+      if (callback != null)
+      {
+         callback.waitCompletion();
+      }
+      
+      
    }
 
    /**
@@ -701,7 +729,7 @@
     *   <tr><td>FileID</td><td>Integer (4 bytes)</td></tr>
     *   <tr><td>TransactionID <i>(if record is transactional)</i></td><td>Long (8 bytes)</td></tr>
     *   <tr><td>RecordID</td><td>Long (8 bytes)</td></tr>
-    *   <tr><td>BodySize(only on Add and update)</td><td>Integer (4 bytes)</td></tr>
+    *   <tr><td>BodySize(Add, update and delete)</td><td>Integer (4 bytes)</td></tr>
     *   <tr><td>UserDefinedRecordType (If add/update only)</td><td>Byte (1)</td</tr>
     *   <tr><td>RecordBody</td><td>Byte Array (size=BodySize)</td></tr>
     *   <tr><td>Check Size</td><td>Integer (4 bytes)</td></tr>
@@ -1877,11 +1905,6 @@
       if (callback != null)
       {
          currentFile.getFile().write(bb, callback);
-
-         if (sync)
-         {
-            callback.waitCompletion();
-         }
       }
       else
       {




More information about the jboss-cvs-commits mailing list