[hornetq-commits] JBoss hornetq SVN: r11096 - in branches/HORNETQ-720_Replication: hornetq-journal/src/main/java/org/hornetq/core/journal/impl and 1 other directory.

do-not-reply at jboss.org do-not-reply at jboss.org
Tue Aug 2 10:37:42 EDT 2011


Author: borges
Date: 2011-08-02 10:37:41 -0400 (Tue, 02 Aug 2011)
New Revision: 11096

Modified:
   branches/HORNETQ-720_Replication/
   branches/HORNETQ-720_Replication/hornetq-journal/src/main/java/org/hornetq/core/journal/impl/AIOSequentialFile.java
   branches/HORNETQ-720_Replication/hornetq-journal/src/main/java/org/hornetq/core/journal/impl/JournalImpl.java
Log:
merge from trunk


Property changes on: branches/HORNETQ-720_Replication
___________________________________________________________________
Modified: svn:mergeinfo
   - /trunk:10878-11041
   + /trunk:10878-11095

Modified: branches/HORNETQ-720_Replication/hornetq-journal/src/main/java/org/hornetq/core/journal/impl/AIOSequentialFile.java
===================================================================
--- branches/HORNETQ-720_Replication/hornetq-journal/src/main/java/org/hornetq/core/journal/impl/AIOSequentialFile.java	2011-08-02 14:18:22 UTC (rev 11095)
+++ branches/HORNETQ-720_Replication/hornetq-journal/src/main/java/org/hornetq/core/journal/impl/AIOSequentialFile.java	2011-08-02 14:37:41 UTC (rev 11096)
@@ -204,9 +204,14 @@
    public int read(final ByteBuffer bytes, final IOAsyncTask callback) throws Exception
    {
       int bytesToRead = bytes.limit();
-
       long positionToRead = position.getAndAdd(bytesToRead);
 
+      long size = size();
+      if (size < (positionToRead + bytesToRead))
+      {
+         bytesToRead = (int)(size - positionToRead);
+      }
+
       bytes.rewind();
 
       aioFile.read(positionToRead, bytesToRead, bytes, callback);

Modified: branches/HORNETQ-720_Replication/hornetq-journal/src/main/java/org/hornetq/core/journal/impl/JournalImpl.java
===================================================================
--- branches/HORNETQ-720_Replication/hornetq-journal/src/main/java/org/hornetq/core/journal/impl/JournalImpl.java	2011-08-02 14:18:22 UTC (rev 11095)
+++ branches/HORNETQ-720_Replication/hornetq-journal/src/main/java/org/hornetq/core/journal/impl/JournalImpl.java	2011-08-02 14:37:41 UTC (rev 11096)
@@ -1902,17 +1902,9 @@
          int resultLastPost = JournalImpl.readJournalFile(fileFactory, file, new JournalReaderCallback()
          {
 
-            private void checkID(final long id)
-            {
-               if (id > maxID.longValue())
-               {
-                  maxID.set(id);
-               }
-            }
-
             public void onReadAddRecord(final RecordInfo info) throws Exception
             {
-               checkID(info.id);
+               setAtomicLong(info.id, maxID);
 
                hasData.set(true);
 
@@ -1923,7 +1915,7 @@
 
             public void onReadUpdateRecord(final RecordInfo info) throws Exception
             {
-               checkID(info.id);
+               setAtomicLong(info.id, maxID);
 
                hasData.set(true);
 
@@ -1964,7 +1956,7 @@
             public void onReadAddRecordTX(final long transactionID, final RecordInfo info) throws Exception
             {
 
-               checkID(info.id);
+               setAtomicLong(info.id, maxID);
 
                hasData.set(true);
 
@@ -2209,10 +2201,7 @@
          {
             for (RecordInfo info : transaction.recordInfos)
             {
-               if (info.id > maxID.get())
-               {
-                  maxID.set(info.id);
-               }
+               setAtomicLong(info.id, maxID);
             }
 
             PreparedTransactionInfo info = new PreparedTransactionInfo(transaction.transactionID, transaction.extraData);
@@ -2674,6 +2663,23 @@
 
    }
 
+   private static final void setAtomicLong(final long target, AtomicLong atomic)
+   {
+      while (true)
+      {
+         long value = atomic.get();
+         if (target > value)
+         {
+            if (atomic.compareAndSet(value, target))
+               return;
+         }
+         else
+         {
+            return;
+         }
+      }
+   }
+
    /**
     * @param name
     * @return



More information about the hornetq-commits mailing list