Merge pull request #395 from couclock/AMQ-7312
AMQ-7312 virtualSelectorCacheBrokerPlugin addConsumer issue
diff --git a/activemq-broker/src/main/java/org/apache/activemq/transport/vm/VMTransportServer.java b/activemq-broker/src/main/java/org/apache/activemq/transport/vm/VMTransportServer.java
index 2f3d519..8bef1cc 100644
--- a/activemq-broker/src/main/java/org/apache/activemq/transport/vm/VMTransportServer.java
+++ b/activemq-broker/src/main/java/org/apache/activemq/transport/vm/VMTransportServer.java
@@ -19,6 +19,7 @@
import java.io.IOException;
import java.net.InetSocketAddress;
import java.net.URI;
+import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicInteger;
import org.apache.activemq.command.BrokerInfo;
@@ -35,7 +36,7 @@
private TransportAcceptListener acceptListener;
private final URI location;
- private boolean disposed;
+ private AtomicBoolean disposed = new AtomicBoolean(false);
private final AtomicInteger connectionCount = new AtomicInteger(0);
private final boolean disposeOnDisconnect;
@@ -64,7 +65,7 @@
public VMTransport connect() throws IOException {
TransportAcceptListener al;
synchronized (this) {
- if (disposed) {
+ if (disposed.get()) {
throw new IOException("Server has been disposed.");
}
al = acceptListener;
@@ -117,7 +118,9 @@
}
public void stop() throws IOException {
- VMTransportFactory.stopped(this);
+ if (disposed.compareAndSet(false, true)) {
+ VMTransportFactory.stopped(this);
+ }
}
public URI getConnectURI() {
diff --git a/activemq-unit-tests/src/test/java/org/apache/activemq/RedeliveryPolicyTest.java b/activemq-unit-tests/src/test/java/org/apache/activemq/RedeliveryPolicyTest.java
index 5af3a37..a0a1ca8 100644
--- a/activemq-unit-tests/src/test/java/org/apache/activemq/RedeliveryPolicyTest.java
+++ b/activemq-unit-tests/src/test/java/org/apache/activemq/RedeliveryPolicyTest.java
@@ -600,6 +600,45 @@
}
+ public void testRepeatedServerClose() throws Exception {
+
+ connection.start();
+ Session session = connection.createSession(true, Session.SESSION_TRANSACTED);
+ ActiveMQQueue destination = new ActiveMQQueue("TEST");
+ MessageProducer producer = session.createProducer(destination);
+
+ // Send the messages
+ producer.send(session.createTextMessage("1st"));
+ session.commit();
+
+ final int maxRedeliveries = 10000;
+ for (int i=0;i<=maxRedeliveries + 1;i++) {
+
+ final ActiveMQConnection toTest = (ActiveMQConnection)factory.createConnection(userName, password);
+ toTest.start();
+
+ // abortive close via broker
+ for (VMTransportServer transportServer : VMTransportFactory.SERVERS.values()) {
+ transportServer.stop();
+ }
+
+ Wait.waitFor(new Wait.Condition() {
+ @Override
+ public boolean isSatisified() throws Exception {
+ return toTest.isTransportFailed();
+ }
+ },10000, 100 );
+
+ try {
+ toTest.close();
+ } catch (Exception expected) {
+ } finally {
+ }
+ }
+ }
+
+
+
public void testRepeatedRedeliveryOnMessageNoCommit() throws Exception {
connection.start();
diff --git a/activemq-web-console/src/main/webapp/WEB-INF/web.xml b/activemq-web-console/src/main/webapp/WEB-INF/web.xml
index 2f50e5b..9672c84 100644
--- a/activemq-web-console/src/main/webapp/WEB-INF/web.xml
+++ b/activemq-web-console/src/main/webapp/WEB-INF/web.xml
@@ -155,7 +155,10 @@
</error-page>
<session-config>
- <session-timeout>30</session-timeout>
+ <session-timeout>30</session-timeout>
+ <cookie-config>
+ <http-only>true</http-only>
+ </cookie-config>
</session-config>
<context-param>
diff --git a/activemq-web-console/src/main/webapp/js/plotkit/Layout.js b/activemq-web-console/src/main/webapp/js/plotkit/Layout.js
index f57951a..eea64aa 100644
--- a/activemq-web-console/src/main/webapp/js/plotkit/Layout.js
+++ b/activemq-web-console/src/main/webapp/js/plotkit/Layout.js
@@ -454,7 +454,7 @@
var tickCount = 0;
this.xticks = new Array();
- for (var i = 0; i <= xvalues.length; i++) {
+ for (var i = 0; i < xvalues.length; i++) {
if (xvalues[i] >= (tickCount) * roughSeparation) {
var pos = this.xscale * (xvalues[i] - this.minxval);
if ((pos > 1.0) || (pos < 0.0))
diff --git a/assembly/src/release/webapps/api/WEB-INF/web.xml b/assembly/src/release/webapps/api/WEB-INF/web.xml
index 2b0caf6..e316422 100644
--- a/assembly/src/release/webapps/api/WEB-INF/web.xml
+++ b/assembly/src/release/webapps/api/WEB-INF/web.xml
@@ -71,4 +71,10 @@
<url-pattern>/jolokia/*</url-pattern>
</servlet-mapping>
-</web-app>
\ No newline at end of file
+ <session-config>
+ <cookie-config>
+ <http-only>true</http-only>
+ </cookie-config>
+ </session-config>
+
+</web-app>
diff --git a/doap.rdf b/doap.rdf
index c972233..532628a 100644
--- a/doap.rdf
+++ b/doap.rdf
@@ -25,7 +25,7 @@
<!--
=======================================================================
- Copyright (c) 2006-2012 The Apache Software Foundation.
+ Copyright (c) 2006-2019 The Apache Software Foundation.
All rights reserved.
=======================================================================
@@ -34,13 +34,13 @@
<created>2006-03-27</created>
<license rdf:resource="http://usefulinc.com/doap/licenses/asl20" />
<name>Apache ActiveMQ</name>
- <homepage rdf:resource="http://activemq.apache.org/" />
- <asfext:pmc rdf:resource="http://activemq.apache.org/" />
+ <homepage rdf:resource="https://activemq.apache.org/" />
+ <asfext:pmc rdf:resource="https://activemq.apache.org/" />
<shortdesc>ActiveMQ is the most popular and powerful open source Message Broker.</shortdesc>
<description>ActiveMQ is a fast and powerful Message Broker which supports many Cross Language Clients and Protocols and many advanced features while fully supporting JMS 1.1 and J2EE 1.4.</description>
- <bug-database rdf:resource="http://issues.apache.org/activemq/browse/AMQ" />
- <mailing-list rdf:resource="http://activemq.apache.org/mailing-lists.html" />
- <download-page rdf:resource="http://activemq.apache.org/download.html" />
+ <bug-database rdf:resource="https://issues.apache.org/jira/browse/AMQ" />
+ <mailing-list rdf:resource="https://activemq.apache.org/contact/" />
+ <download-page rdf:resource="https://activemq.apache.org/download.html" />
<programming-language>Java</programming-language>
<programming-language>C</programming-language>
diff --git a/pom.xml b/pom.xml
index bbf5d57..33aa7b1 100644
--- a/pom.xml
+++ b/pom.xml
@@ -73,8 +73,7 @@
<httpclient-version>4.5.9</httpclient-version>
<httpcore-version>4.4.11</httpcore-version>
<insight-version>1.2.0.Beta4</insight-version>
- <jackson-version>2.9.9</jackson-version>
- <jackson-databind-version>2.9.9.3</jackson-databind-version>
+ <jackson-version>2.9.10</jackson-version>
<jasypt-version>1.9.2</jasypt-version>
<jaxb-bundle-version>2.2.11_1</jaxb-bundle-version>
<jetty9-version>9.4.19.v20190610</jetty9-version>
@@ -675,7 +674,7 @@
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
- <version>${jackson-databind-version}</version>
+ <version>${jackson-version}</version>
</dependency>
<!-- Used to configure the activemq logs -->