activemq-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From jbert...@apache.org
Subject [1/5] activemq-6 git commit: Fixing race on PageSubscriptionImpl
Date Thu, 09 Apr 2015 19:16:55 GMT
Repository: activemq-6
Updated Branches:
  refs/heads/master 238b2fe09 -> d9c9fc0e9


Fixing race on PageSubscriptionImpl

I have seen a NPE in a few unit tests that were caused by currenDelivery changing between
these two steps:

i - if (currentDelivery != null)
ii - .... currentDelivery.getPos();

instead of adding extra synchronization I'm caching the currentValue what would been enough
on this case.

This is just to avoid NPEs


Project: http://git-wip-us.apache.org/repos/asf/activemq-6/repo
Commit: http://git-wip-us.apache.org/repos/asf/activemq-6/commit/41b823be
Tree: http://git-wip-us.apache.org/repos/asf/activemq-6/tree/41b823be
Diff: http://git-wip-us.apache.org/repos/asf/activemq-6/diff/41b823be

Branch: refs/heads/master
Commit: 41b823be7ebcb83d0f8f24e805b6f4433ce5a049
Parents: 238b2fe
Author: Clebert Suconic <clebertsuconic@apache.org>
Authored: Thu Apr 9 14:59:56 2015 -0400
Committer: Clebert Suconic <clebertsuconic@apache.org>
Committed: Thu Apr 9 15:00:20 2015 -0400

----------------------------------------------------------------------
 .../core/paging/cursor/impl/PageSubscriptionImpl.java         | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/activemq-6/blob/41b823be/activemq-server/src/main/java/org/apache/activemq/core/paging/cursor/impl/PageSubscriptionImpl.java
----------------------------------------------------------------------
diff --git a/activemq-server/src/main/java/org/apache/activemq/core/paging/cursor/impl/PageSubscriptionImpl.java
b/activemq-server/src/main/java/org/apache/activemq/core/paging/cursor/impl/PageSubscriptionImpl.java
index 42eeed8..5bf36e6 100644
--- a/activemq-server/src/main/java/org/apache/activemq/core/paging/cursor/impl/PageSubscriptionImpl.java
+++ b/activemq-server/src/main/java/org/apache/activemq/core/paging/cursor/impl/PageSubscriptionImpl.java
@@ -1471,12 +1471,13 @@ final class PageSubscriptionImpl implements PageSubscription
       public void remove()
       {
          deliveredCount.incrementAndGet();
-         if (currentDelivery != null)
+         PagedReference delivery = currentDelivery;
+         if (delivery != null)
          {
-            PageCursorInfo info = PageSubscriptionImpl.this.getPageInfo(currentDelivery.getPosition());
+            PageCursorInfo info = PageSubscriptionImpl.this.getPageInfo(delivery.getPosition());
             if (info != null)
             {
-               info.remove(currentDelivery.getPosition());
+               info.remove(delivery.getPosition());
             }
          }
       }


Mime
View raw message