[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