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 42eeed889c..5bf36e64f1 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()); } } } diff --git a/activemq-server/src/main/java/org/apache/activemq/core/transaction/impl/TransactionImpl.java b/activemq-server/src/main/java/org/apache/activemq/core/transaction/impl/TransactionImpl.java index 2511e4e3c7..4697fbac71 100644 --- a/activemq-server/src/main/java/org/apache/activemq/core/transaction/impl/TransactionImpl.java +++ b/activemq-server/src/main/java/org/apache/activemq/core/transaction/impl/TransactionImpl.java @@ -167,7 +167,10 @@ public class TransactionImpl implements Transaction // so we reset it now beforeRollback(); afterRollback(); - operations.clear(); + if (operations != null) + { + operations.clear(); + } throw exception; } else diff --git a/pom.xml b/pom.xml index 9ca249a2c3..c1e5b1bb6e 100644 --- a/pom.xml +++ b/pom.xml @@ -203,7 +203,7 @@ org.jboss.logging jboss-logging-processor - 2.0.0.Alpha1 + 2.0.0.Alpha2 true diff --git a/tests/integration-tests/src/test/java/org/apache/activemq/tests/integration/DuplicateDetectionTest.java b/tests/integration-tests/src/test/java/org/apache/activemq/tests/integration/DuplicateDetectionTest.java index 3fe9ad030e..486a552a94 100644 --- a/tests/integration-tests/src/test/java/org/apache/activemq/tests/integration/DuplicateDetectionTest.java +++ b/tests/integration-tests/src/test/java/org/apache/activemq/tests/integration/DuplicateDetectionTest.java @@ -1245,6 +1245,7 @@ public class DuplicateDetectionTest extends ServiceTestBase } catch (XAException expected) { + assertTrue(expected.getCause().toString().contains("DUPLICATE_ID_REJECTED")); } session.rollback(xid2); diff --git a/tests/integration-tests/src/test/java/org/apache/activemq/tests/integration/client/HangConsumerTest.java b/tests/integration-tests/src/test/java/org/apache/activemq/tests/integration/client/HangConsumerTest.java index fb564407bf..1b6349a94f 100644 --- a/tests/integration-tests/src/test/java/org/apache/activemq/tests/integration/client/HangConsumerTest.java +++ b/tests/integration-tests/src/test/java/org/apache/activemq/tests/integration/client/HangConsumerTest.java @@ -15,12 +15,7 @@ * limitations under the License. */ package org.apache.activemq.tests.integration.client; -import org.apache.activemq.api.core.ActiveMQException; -import org.apache.activemq.core.server.ServerConsumer; -import org.junit.Before; -import org.junit.After; -import org.junit.Test; - +import javax.management.MBeanServer; import java.lang.management.ManagementFactory; import java.util.LinkedList; import java.util.concurrent.CountDownLatch; @@ -29,9 +24,7 @@ import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.Semaphore; import java.util.concurrent.TimeUnit; -import javax.management.MBeanServer; - -import org.junit.Assert; +import org.apache.activemq.api.core.ActiveMQException; import org.apache.activemq.api.core.Interceptor; import org.apache.activemq.api.core.SimpleString; import org.apache.activemq.api.core.client.ClientConsumer; @@ -56,6 +49,7 @@ import org.apache.activemq.core.protocol.core.Packet; import org.apache.activemq.core.protocol.core.impl.wireformat.SessionReceiveMessage; import org.apache.activemq.core.server.ActiveMQServer; import org.apache.activemq.core.server.Queue; +import org.apache.activemq.core.server.ServerConsumer; import org.apache.activemq.core.server.ServerMessage; import org.apache.activemq.core.server.ServerSessionFactory; import org.apache.activemq.core.server.impl.ActiveMQServerImpl; @@ -72,6 +66,10 @@ import org.apache.activemq.spi.core.security.ActiveMQSecurityManagerImpl; import org.apache.activemq.tests.util.ServiceTestBase; import org.apache.activemq.utils.ExecutorFactory; import org.apache.activemq.utils.ReusableLatch; +import org.junit.After; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; /** * This test will simulate a consumer hanging on the delivery packet due to unbehaved clients @@ -150,8 +148,8 @@ public class HangConsumerTest extends ServiceTestBase sessionProducer.commit(); // These three operations should finish without the test hanging - getMessagesAdded(queue); - getMessageCount(queue); + queue.getMessagesAdded(); + queue.getMessageCount(); releaseConsumers();