[jboss-cvs] JBoss Messaging SVN: r7140 - in branches/Branch_JBM2_Perf_Clebert: src/main/org/jboss/messaging/core/journal and 2 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Sat May 30 18:49:26 EDT 2009


Author: clebert.suconic at jboss.com
Date: 2009-05-30 18:49:25 -0400 (Sat, 30 May 2009)
New Revision: 7140

Modified:
   branches/Branch_JBM2_Perf_Clebert/src/main/org/jboss/messaging/core/asyncio/timedbuffer/TimedBuffer.java
   branches/Branch_JBM2_Perf_Clebert/src/main/org/jboss/messaging/core/journal/SequentialFile.java
   branches/Branch_JBM2_Perf_Clebert/src/main/org/jboss/messaging/core/journal/impl/AIOSequentialFile.java
   branches/Branch_JBM2_Perf_Clebert/src/main/org/jboss/messaging/core/journal/impl/JournalImpl.java
   branches/Branch_JBM2_Perf_Clebert/src/main/org/jboss/messaging/core/journal/impl/NIOSequentialFile.java
   branches/Branch_JBM2_Perf_Clebert/tests/src/org/jboss/messaging/tests/unit/core/journal/impl/fakes/FakeSequentialFileFactory.java
Log:
tweaks

Modified: branches/Branch_JBM2_Perf_Clebert/src/main/org/jboss/messaging/core/asyncio/timedbuffer/TimedBuffer.java
===================================================================
--- branches/Branch_JBM2_Perf_Clebert/src/main/org/jboss/messaging/core/asyncio/timedbuffer/TimedBuffer.java	2009-05-30 11:02:36 UTC (rev 7139)
+++ branches/Branch_JBM2_Perf_Clebert/src/main/org/jboss/messaging/core/asyncio/timedbuffer/TimedBuffer.java	2009-05-30 22:49:25 UTC (rev 7140)
@@ -38,8 +38,6 @@
 
 /**
  * A TimedBuffer
- * 
- * TODO: this is a prototype only.. it is missing the timer itself
  *
  * @author <a href="mailto:clebert.suconic at jboss.org">Clebert Suconic</a>
  *
@@ -69,6 +67,8 @@
    private volatile long timeLastWrite = 0;
 
    private final ScheduledExecutorService schedule = ScheduledSingleton.getScheduledService();
+   
+   private Lock lock = new ReentrantReadWriteLock().writeLock();
 
    // Static --------------------------------------------------------
 
@@ -99,10 +99,29 @@
    {
       if (System.currentTimeMillis() - timeLastWrite > timeout)
       {
-         flush();
+         lock.lock();
+         try
+         {
+            flush();
+         }
+         finally
+         {
+            lock.unlock();
+         }
       }
 
    }
+   
+   
+   public void lock()
+   {
+      lock.lock();
+   }
+   
+   public void unlock()
+   {
+      lock.unlock();
+   }
 
    /**
     * Verify if the size fits the buffer, if it fits we lock the buffer to avoid a flush until add is called

Modified: branches/Branch_JBM2_Perf_Clebert/src/main/org/jboss/messaging/core/journal/SequentialFile.java
===================================================================
--- branches/Branch_JBM2_Perf_Clebert/src/main/org/jboss/messaging/core/journal/SequentialFile.java	2009-05-30 11:02:36 UTC (rev 7139)
+++ branches/Branch_JBM2_Perf_Clebert/src/main/org/jboss/messaging/core/journal/SequentialFile.java	2009-05-30 22:49:25 UTC (rev 7140)
@@ -84,4 +84,8 @@
    
    void renameTo(String newFileName) throws Exception;
 
+   void lockBuffer();
+
+   void unlockBuffer();
+
 }

Modified: branches/Branch_JBM2_Perf_Clebert/src/main/org/jboss/messaging/core/journal/impl/AIOSequentialFile.java
===================================================================
--- branches/Branch_JBM2_Perf_Clebert/src/main/org/jboss/messaging/core/journal/impl/AIOSequentialFile.java	2009-05-30 11:02:36 UTC (rev 7139)
+++ branches/Branch_JBM2_Perf_Clebert/src/main/org/jboss/messaging/core/journal/impl/AIOSequentialFile.java	2009-05-30 22:49:25 UTC (rev 7140)
@@ -135,6 +135,18 @@
       timedBuffer.flush();
    }
 
+   public void lockBuffer()
+   {
+      timedBuffer.lock();
+   }
+
+   public void unlockBuffer()
+   {
+      timedBuffer.unlock();
+   }
+
+
+   
    public synchronized void close() throws Exception
    {
       checkOpened();

Modified: branches/Branch_JBM2_Perf_Clebert/src/main/org/jboss/messaging/core/journal/impl/JournalImpl.java
===================================================================
--- branches/Branch_JBM2_Perf_Clebert/src/main/org/jboss/messaging/core/journal/impl/JournalImpl.java	2009-05-30 11:02:36 UTC (rev 7139)
+++ branches/Branch_JBM2_Perf_Clebert/src/main/org/jboss/messaging/core/journal/impl/JournalImpl.java	2009-05-30 22:49:25 UTC (rev 7140)
@@ -1865,9 +1865,14 @@
             throw new IllegalArgumentException("Record is too large to store " + size);
          }
 
+         // The buffer on the file can't be flushed or the currentFile could be affected
+         currentFile.getFile().lockBuffer();
+
          if (!currentFile.getFile().fits(size))
          {
+            currentFile.getFile().unlockBuffer();
             moveNextFile();
+            currentFile.getFile().lockBuffer();
          }
 
          if (currentFile == null)
@@ -1884,10 +1889,10 @@
          if (callback != null)
          {
             currentFile.getFile().write(bb, callback);
-            
+
             // TODO: Do we need to do this?
-            //       it wouldn't scale, but it is probably useful in some usecases? 
-            //       It should be configurable at least
+            // it wouldn't scale, but it is probably useful in some usecases?
+            // It should be configurable at least
             if (sync)
             {
                currentFile.getFile().flush();
@@ -1902,6 +1907,8 @@
       }
       finally
       {
+         currentFile.getFile().unlockBuffer();
+
          lock.release();
       }
 
@@ -1935,7 +1942,7 @@
       bb.putInt(orderingID);
 
       bb.rewind();
-      
+
       sequentialFile.setBuffering(false);
 
       sequentialFile.write(bb, true);

Modified: branches/Branch_JBM2_Perf_Clebert/src/main/org/jboss/messaging/core/journal/impl/NIOSequentialFile.java
===================================================================
--- branches/Branch_JBM2_Perf_Clebert/src/main/org/jboss/messaging/core/journal/impl/NIOSequentialFile.java	2009-05-30 11:02:36 UTC (rev 7139)
+++ branches/Branch_JBM2_Perf_Clebert/src/main/org/jboss/messaging/core/journal/impl/NIOSequentialFile.java	2009-05-30 22:49:25 UTC (rev 7140)
@@ -255,4 +255,18 @@
    {
    }
 
+   /* (non-Javadoc)
+    * @see org.jboss.messaging.core.journal.SequentialFile#lockBuffer()
+    */
+   public void lockBuffer()
+   {
+   }
+
+   /* (non-Javadoc)
+    * @see org.jboss.messaging.core.journal.SequentialFile#unlockBuffer()
+    */
+   public void unlockBuffer()
+   {
+   }
+
 }

Modified: branches/Branch_JBM2_Perf_Clebert/tests/src/org/jboss/messaging/tests/unit/core/journal/impl/fakes/FakeSequentialFileFactory.java
===================================================================
--- branches/Branch_JBM2_Perf_Clebert/tests/src/org/jboss/messaging/tests/unit/core/journal/impl/fakes/FakeSequentialFileFactory.java	2009-05-30 11:02:36 UTC (rev 7139)
+++ branches/Branch_JBM2_Perf_Clebert/tests/src/org/jboss/messaging/tests/unit/core/journal/impl/fakes/FakeSequentialFileFactory.java	2009-05-30 22:49:25 UTC (rev 7140)
@@ -321,7 +321,7 @@
          // + open);
          return open;
       }
-      
+
       public void flush()
       {
       }
@@ -581,6 +581,20 @@
       {
       }
 
+      /* (non-Javadoc)
+       * @see org.jboss.messaging.core.journal.SequentialFile#lockBuffer()
+       */
+      public void lockBuffer()
+      {
+      }
+
+      /* (non-Javadoc)
+       * @see org.jboss.messaging.core.journal.SequentialFile#unlockBuffer()
+       */
+      public void unlockBuffer()
+      {
+      }
+
    }
 
    /* (non-Javadoc)




More information about the jboss-cvs-commits mailing list