On 13 Dec 2017 12:30, "Jiri Danek" <[email protected]> wrote:
On Wed, Dec 13, 2017 at 10:25 AM, Jiri Danek <[email protected]> wrote: > On Mon, Dec 11, 2017 at 7:21 PM, Robbie Gemmell <[email protected]> > wrote: > >> P.S. If you want to test it out using maven (e.g with the examples src, or >> your own things), you can temporarily add this to your poms to access the >> staging repo: >> >> <repositories> >> <repository> >> <id>staging</id> >> <url>https://repository.apache.org/content/repositories/ >> orgapacheqpid-1126</url> >> </repository> >> </repositories> >> >> The dependency for the client itself would then be: >> >> <dependency> >> <groupId>org.apache.qpid</groupId> >> <artifactId>qpid-jms-client</artifactId> >> <version>0.28.0</version> >> </dependency> >> > > +1 (nonbinding) > > - On Linux x64, Oracle Java 9.0.1, I've used the Maven repo, pasted it > into https://github.com/rh-messaging/cli-java 's pom.xml and executed the > tests there against apache-artemis-2.5.0-20171201.193741-38-bin snapshot > of ActiveMQ Artemis. All passed. > -- > Jiri Daněk > I think I may actually have experienced a problem with 0.28 that does not happen with 0.27 for me. I would like to investigate this further, but it would be probably more productive to get your opinion on what you think could be going on. # Steps to reproduce (to get to the broker exception at the end of the steps) 1. Download artemis 2.4.0 (same result with snapshot apache-artemis-2.5.0-20171201.193741-38-bin, but not with apache-artemis-2.5.0-20171212.154553-51-bin) 2. Create instance that accepts anonymous connections (no auth). Change the configuration of the broker like this {code} diff --git a/artemis.profile b/artemis.profile index 162b269..cb9bdab 100644 --- a/artemis.profile +++ b/artemis.profile @@ -28,7 +28,7 @@ ARTEMIS_INSTANCE_URI='file:/home/jdanek/Downloads/AMQ7/ apache-artemis-2.5.0/apac # Java Opts -JAVA_ARGS=" -XX:+PrintClassHistogram -XX:+UseG1GC -XX:+AggressiveOpts -XX:+UseFastAccessorMethods -Xms512M -Xmx2G -Dhawtio.realm=activemq -Dhawtio.offline="true" -Dhawtio.role=amq -Dhawtio.rolePrincipalClasses=org.apache.activemq.artemis. spi.core.security.jaas.RolePrincipal -Djolokia.policyLocation=${ARTEMIS_INSTANCE_URI}/etc/jolokia-access.xml" +JAVA_ARGS=" --add-modules java.xml.bind -XX:+PrintClassHistogram -XX:+UseG1GC -XX:+AggressiveOpts -XX:+UseFastAccessorMethods -Xms512M -Xmx2G -Dhawtio.realm=activemq -Dhawtio.offline="true" -Dhawtio.role=amq -Dhawtio.rolePrincipalClasses=org.apache.activemq.artemis. spi.core.security.jaas.RolePrincipal -Djolokia.policyLocation=${ARTEMIS_INSTANCE_URI}/etc/jolokia-access.xml" # # There might be options that you only want to enable on specifc commands, like setting a JMX port diff --git a/broker.xml b/broker.xml index 36037ce..8faa2df 100644 --- a/broker.xml +++ b/broker.xml @@ -180,6 +180,7 @@ under the License. </address-setting> <!--default for catch all--> <address-setting match="#"> + <last-value-queue>true</last-value-queue> <dead-letter-address>DLQ</dead-letter-address> <expiry-address>ExpiryQueue</expiry-address> <redelivery-delay>0</redelivery-delay> {code} 3. Execute the following java -jar cli-qpid-jms-1.2.2-SNAPSHOT-0.27.0.jar sender --broker amqp:// 127.0.0.1:5672 --address lalaLand_hvf5lgis5rkosau9ha2mbusvav --tx-endloop-action commit --tx-action commit --sync-mode persistent --ssn-ack-mode client --msg-id noid --log-lib aLogLibValue --duration-mode after-send --msg-property key=value --msg-content %d --log-msgs interop --capacity 1 --conn-async-send true --conn-auth-mechanisms anonymous --conn-auth-sasl false --conn-clientid aClientId --conn-clientid-prefix aClientIdPrefix --conn-close-timeout 1000 --conn-conn-timeout 1000 --conn-connid-prefix aConnIdPrefix --conn-heartbeat 1000 --conn-local-msg-priority true --conn-max-frame-size 4096 --conn-prefetch 1 --conn-prefetch-browser 1 --conn-prefetch-queue 1 --conn-prefetch-topic 1 --conn-prefetch-topic-dur 1 --conn-queue-prefix aQueuePrefix --conn-reconnect true --conn-reconnect-backoff false --conn-reconnect-backoff-multiplier 1 --conn-reconnect-initial-delay 1 --conn-reconnect-interval 1000 --conn-reconnect-limit 1000 --conn-reconnect-start-limit 1000 --conn-reconnect-timeout 1000 --conn-reconnect-warn-attempts 1 --conn-redeliveries-max 1 --conn-tcp-buf-size-recv 1 --conn-tcp-buf-size-send 1 --conn-tcp-conn-timeout 1000 --conn-tcp-keep-alive true --conn-tcp-no-delay false --conn-tcp-sock-timeout 1000 --conn-tcp-traffic-class 1 --conn-topic-prefix aTopicPrefix --conn-valid-prop-names false --msg-content-type aMsgContentType --msg-correlation-id aCorrelationId --msg-durable false --msg-group-id aMsgGroupId --msg-group-seq -1 --msg-no-timestamp true --msg-priority 1 --timeout 2 --tx-size 1 --msg-reply-to aReplyToQueue --msg-reply-to-group-id aReplyToGroupId --msg-subject aMsgSubject --msg-ttl 10000 --msg-user-id aMsgUserId --property-type String (This can surely be simplified to a single java test that will reproduce this, did not get to creating it yet) 4. Wait for up to a minute, then observe error in the broker log 13:08:02,952 WARN [org.apache.activemq.artemis.core.server] AMQ222238: Unable to commit transaction: org.apache.qpid.proton.codec.DecodeException: Unknown constructor at org.apache.qpid.proton.codec.DecoderImpl.readObject(DecoderImpl.java:883) [proton-j-0.22.0.jar:] at org.apache.activemq.artemis.protocol.amqp.broker.AMQPMessage. getApplicationProperties(AMQPMessage.java:179) [artemis-amqp-protocol-2.4.0.jar:] at org.apache.activemq.artemis.protocol.amqp.broker.AMQPMessage. getApplicationPropertiesMap(AMQPMessage.java:157) [artemis-amqp-protocol-2.4.0.jar:] at org.apache.activemq.artemis.protocol.amqp.broker.AMQPMessage. getSimpleStringProperty(AMQPMessage.java:979) [artemis-amqp-protocol-2.4.0.jar:] at org.apache.activemq.artemis.protocol.amqp.broker.AMQPMessage. getLastValueProperty(AMQPMessage.java:1086) [artemis-amqp-protocol-2.4.0.jar:] at org.apache.activemq.artemis.core.server.impl.LastValueQueue.addTail( LastValueQueue.java:80) [artemis-server-2.4.0.jar:2.4.0] at org.apache.activemq.artemis.core.postoffice.impl. PostOfficeImpl$AddOperation.afterCommit(PostOfficeImpl.java:1407) [artemis-server-2.4.0.jar:2.4.0] at org.apache.activemq.artemis.core.transaction.impl. TransactionImpl.afterCommit(TransactionImpl.java:546) [artemis-server-2.4.0.jar:2.4.0] at org.apache.activemq.artemis.core.transaction.impl. TransactionImpl.access$100(TransactionImpl.java:38) [artemis-server-2.4.0.jar:2.4.0] at org.apache.activemq.artemis.core.transaction.impl.TransactionImpl$2.done( TransactionImpl.java:304) [artemis-server-2.4.0.jar:2.4.0] at org.apache.activemq.artemis.core.persistence.impl.journal. OperationContextImpl.executeOnCompletion(OperationContextImpl.java:181) [artemis-server-2.4.0.jar:2.4.0] at org.apache.activemq.artemis.core.persistence.impl.journal. OperationContextImpl.executeOnCompletion(OperationContextImpl.java:130) [artemis-server-2.4.0.jar:2.4.0] at org.apache.activemq.artemis.core.persistence.impl.journal. AbstractJournalStorageManager.afterCompleteOperations( AbstractJournalStorageManager.java:319) [artemis-server-2.4.0.jar:2.4.0] at org.apache.activemq.artemis.core.transaction.impl.TransactionImpl.commit( TransactionImpl.java:295) [artemis-server-2.4.0.jar:2.4.0] at org.apache.activemq.artemis.core.transaction.impl.TransactionImpl.commit( TransactionImpl.java:246) [artemis-server-2.4.0.jar:2.4.0] at org.apache.activemq.artemis.core.server.impl.QueueImpl$ ExpiryScanner.run(QueueImpl.java:1693) [artemis-server-2.4.0.jar:2.4.0] at org.apache.activemq.artemis.utils.actors.OrderedExecutor. doTask(OrderedExecutor.java:42) [artemis-commons-2.4.0.jar:2.4.0] at org.apache.activemq.artemis.utils.actors.OrderedExecutor. doTask(OrderedExecutor.java:31) [artemis-commons-2.4.0.jar:2.4.0] at org.apache.activemq.artemis.utils.actors.ProcessorBase$ExecutorTask.run( ProcessorBase.java:53) [artemis-commons-2.4.0.jar:2.4.0] at java.base/java.util.concurrent.ThreadPoolExecutor. runWorker(ThreadPoolExecutor.java:1167) [java.base:] at java.base/java.util.concurrent.ThreadPoolExecutor$ Worker.run(ThreadPoolExecutor.java:641) [java.base:] at java.base/java.lang.Thread.run(Thread.java:844) [java.base:] -- Jiri Daněk If you can't reproduce with a current snapshot of the broker it seems as likely as anything that its a broker issue which has been fixed, and perhaps the newer client is better at showing it up due to timing differences as its a bit faster. Capturing the traffic on the wire from the client might help show if there's an actual issue there though. I'm away just now and won't have a chance to look into this until late tomorrow or Friday. Robbie
