[jira] [Commented] (ARTEMIS-1310) Provide GSSAPI (kerberos) SASL mechanism for AMQP

2017-08-02 Thread Gary Tully (JIRA)

[ 
https://issues.apache.org/jira/browse/ARTEMIS-1310?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16110808#comment-16110808
 ] 

Gary Tully commented on ARTEMIS-1310:
-

work in progress branch pending release of required dependencies:
 0.24.0-SNAPSHOT
 0.20.0-SNAPSHOT

https://github.com/gtully/activemq-artemis/tree/sasl-gssapi

> Provide GSSAPI (kerberos) SASL mechanism for AMQP
> -
>
> Key: ARTEMIS-1310
> URL: https://issues.apache.org/jira/browse/ARTEMIS-1310
> Project: ActiveMQ Artemis
>  Issue Type: Bug
>  Components: AMQP
>Affects Versions: 2.2.0
>Reporter: Gary Tully
>Assignee: Gary Tully
> Fix For: 2.3.0
>
>
> implement GSSAPI sasl mechanism for AMQP transport allowing kerberos single 
> sign on (authentication) and subsequent authorisation



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)


[jira] [Commented] (ARTEMIS-1310) Provide GSSAPI (kerberos) SASL mechanism for AMQP

2017-07-31 Thread Gary Tully (JIRA)

[ 
https://issues.apache.org/jira/browse/ARTEMIS-1310?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16107114#comment-16107114
 ] 

Gary Tully commented on ARTEMIS-1310:
-

The round trip integration test requires qpid-jms gssapi sasl support via 
QPIDJMS-303

> Provide GSSAPI (kerberos) SASL mechanism for AMQP
> -
>
> Key: ARTEMIS-1310
> URL: https://issues.apache.org/jira/browse/ARTEMIS-1310
> Project: ActiveMQ Artemis
>  Issue Type: Bug
>  Components: AMQP
>Affects Versions: 2.2.0
>Reporter: Gary Tully
>Assignee: Gary Tully
> Fix For: 2.3.0
>
>
> implement GSSAPI sasl mechanism for AMQP transport allowing kerberos single 
> sign on (authentication) and subsequent authorisation



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)


[jira] [Commented] (ARTEMIS-1310) Provide GSSAPI (kerberos) SASL mechanism for AMQP

2017-07-31 Thread Gary Tully (JIRA)

[ 
https://issues.apache.org/jira/browse/ARTEMIS-1310?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16107108#comment-16107108
 ] 

Gary Tully commented on ARTEMIS-1310:
-

this feature requires PROTON-1525 b/c SASL GSSAPI requires sending frames that 
exceed the AMQP limit in place before the open frame can negotiate an 
appropriate frame size.


> Provide GSSAPI (kerberos) SASL mechanism for AMQP
> -
>
> Key: ARTEMIS-1310
> URL: https://issues.apache.org/jira/browse/ARTEMIS-1310
> Project: ActiveMQ Artemis
>  Issue Type: Bug
>  Components: AMQP
>Affects Versions: 2.2.0
>Reporter: Gary Tully
>Assignee: Gary Tully
> Fix For: 2.3.0
>
>
> implement GSSAPI sasl mechanism for AMQP transport allowing kerberos single 
> sign on (authentication) and subsequent authorisation



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)


[jira] [Commented] (ARTEMIS-1310) Provide GSSAPI (kerberos) SASL mechanism for AMQP

2017-07-31 Thread Gary Tully (JIRA)

[ 
https://issues.apache.org/jira/browse/ARTEMIS-1310?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16107100#comment-16107100
 ] 

Gary Tully commented on ARTEMIS-1310:
-

ARTEMIS-1264 provides for kerberos single sign on over an insecure channel (b/c 
of weak/old cyphers).
This feature leverages SASL to do single sign on over a potentially TLS secured 
channel.

> Provide GSSAPI (kerberos) SASL mechanism for AMQP
> -
>
> Key: ARTEMIS-1310
> URL: https://issues.apache.org/jira/browse/ARTEMIS-1310
> Project: ActiveMQ Artemis
>  Issue Type: Bug
>  Components: AMQP
>Affects Versions: 2.2.0
>Reporter: Gary Tully
>Assignee: Gary Tully
> Fix For: 2.3.0
>
>
> implement GSSAPI sasl mechanism for AMQP transport allowing kerberos single 
> sign on (authentication) and subsequent authorisation



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)


[jira] [Created] (ARTEMIS-1310) Provide GSSAPI (kerberos) SASL mechanism for AMQP

2017-07-31 Thread Gary Tully (JIRA)
Gary Tully created ARTEMIS-1310:
---

 Summary: Provide GSSAPI (kerberos) SASL mechanism for AMQP
 Key: ARTEMIS-1310
 URL: https://issues.apache.org/jira/browse/ARTEMIS-1310
 Project: ActiveMQ Artemis
  Issue Type: Bug
  Components: AMQP
Affects Versions: 2.2.0
Reporter: Gary Tully
Assignee: Gary Tully
 Fix For: 2.3.0


implement GSSAPI sasl mechanism for AMQP transport allowing kerberos single 
sign on (authentication) and subsequent authorisation



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)


[jira] [Resolved] (AMQ-6778) Advisories are dropped till broker is fully started in error

2017-07-26 Thread Gary Tully (JIRA)

 [ 
https://issues.apache.org/jira/browse/AMQ-6778?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Gary Tully resolved AMQ-6778.
-
Resolution: Fixed

> Advisories are dropped till broker is fully started in error
> 
>
> Key: AMQ-6778
> URL: https://issues.apache.org/jira/browse/AMQ-6778
> Project: ActiveMQ
>  Issue Type: Bug
>  Components: Broker, networkbridge
>Affects Versions: 5.15.0
>Reporter: Gary Tully
>Assignee: Gary Tully
> Fix For: 5.16.0
>
>
> The Advisory broker fire is conditional on the broker being fully started. 
> This has been present for the longest time however the started flag has been 
> modified to include a countDownLatch that is triggered on start completion.
> This means that consumers that connect to the active transportConnectors do 
> not result in advisories which can mean incoming networkConnectors can mis 
> this advise in error which results in the demand being ignored.
> From what I can see, the check for started does not add value and in the 
> event of a failure to fire an advisory the error will be caught and logged 
> rather than being ignored as it is now.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)


[jira] [Created] (AMQ-6778) Advisories are dropped till broker is fully started in error

2017-07-25 Thread Gary Tully (JIRA)
Gary Tully created AMQ-6778:
---

 Summary: Advisories are dropped till broker is fully started in 
error
 Key: AMQ-6778
 URL: https://issues.apache.org/jira/browse/AMQ-6778
 Project: ActiveMQ
  Issue Type: Bug
  Components: Broker, networkbridge
Affects Versions: 5.15.0
Reporter: Gary Tully
Assignee: Gary Tully
 Fix For: 5.16.0


The Advisory broker fire is conditional on the broker being fully started. This 
has been present for the longest time however the started flag has been 
modified to include a countDownLatch that is triggered on start completion.
This means that consumers that connect to the active transportConnectors do not 
result in advisories which can mean incoming networkConnectors can mis this 
advise in error which results in the demand being ignored.

>From what I can see, the check for started does not add value and in the event 
>of a failure to fire an advisory the error will be caught and logged rather 
>than being ignored as it is now.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)


[jira] [Resolved] (AMQ-6771) Improve performance of KahaDB recovery check checkForCorruptJournalFiles=true

2017-07-19 Thread Gary Tully (JIRA)

 [ 
https://issues.apache.org/jira/browse/AMQ-6771?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Gary Tully resolved AMQ-6771.
-
Resolution: Fixed

> Improve performance of KahaDB recovery check checkForCorruptJournalFiles=true
> -
>
> Key: AMQ-6771
> URL: https://issues.apache.org/jira/browse/AMQ-6771
> Project: ActiveMQ
>  Issue Type: Improvement
>  Components: KahaDB
>Affects Versions: 5.15.0
>Reporter: Gary Tully
>Assignee: Gary Tully
> Fix For: 5.16.0
>
>
> The KahaDB checkForCorruptJournalFiles option validates the checksum of every 
> journal batch record on startup. If a single producer writes many small 
> messages, the batch sizes in the journal will be small. The current check 
> implementation reads each batch at a time with a fseek/read sequence that can 
> be very slow over shared disks.
> The check can be a quick buffered sequential read using the maxBatchSize 
> which should already be tuned to match the disk transfer rate.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)


[jira] [Commented] (AMQ-6772) runtimeConfigurationPlugin - prioritizedMessages property update at Runtime

2017-07-17 Thread Gary Tully (JIRA)

[ 
https://issues.apache.org/jira/browse/AMQ-6772?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16089937#comment-16089937
 ] 

Gary Tully commented on AMQ-6772:
-

it won't work at all via the runtimeConfigurationPlugin, you will need a 
wildcard in the default config to enable it for every queue, this then is 
applied for queues created at runtime in the normal way.
if you want to selectively disable, you will need to restart. It is a 
performance tweak to disable it, that may not be relevant in your environment.

> runtimeConfigurationPlugin - prioritizedMessages property update at Runtime
> ---
>
> Key: AMQ-6772
> URL: https://issues.apache.org/jira/browse/AMQ-6772
> Project: ActiveMQ
>  Issue Type: Bug
>  Components: runtime configuration plugin
>Affects Versions: 5.14.5
> Environment: Unix
>Reporter: Anil P.
>
> I have configured the 'runtimeConfigurationPlugin' and started the Active MQ.
> Then added the below in policyEntries:
>  prioritizedMessages="true" useCache="false" expireMessagesPeriod="0" />
> After saving the config file, I am able to see that the console log got 
> updated saying that config changes are detected and loaded.
> When tested, however, Message Priority is not being enforced as expected on 
> the queue.
> I checked in JConsole, I am not able to update this particular property there 
> either.
> If I restart with the policy configured, the property is getting applied and 
> it is working as expected. It is only not happening if I try to have it 
> updated at run-time.
> Tim dug into the code, and discovered that the
> PolicyEntry.update() and PolicyEntry.baseUpdate() methods (
> https://git-wip-us.apache.org/repos/asf?p=activemq.git;a=blob;f=activemq-broker/src/main/java/org/apache/activemq/broker/region/policy/PolicyEntry.java;h=5b7ff0e184b9e6b4be6cf61ebcacc0a845bb1a6c;hb=HEAD)
> don't attempt to set any of the three properties being passed in. 
> Please fix this so that those attributes will be set when the policy entry is 
> reloaded.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)


[jira] [Commented] (AMQ-6771) Improve performance of KahaDB recovery check checkForCorruptJournalFiles=true

2017-07-17 Thread Gary Tully (JIRA)

[ 
https://issues.apache.org/jira/browse/AMQ-6771?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16089842#comment-16089842
 ] 

Gary Tully commented on AMQ-6771:
-

[~cshannon] I don't have great numbers from my local testing b/c I am on a ssd 
and seek is very fast. I saw some strace from a user where the repeated 
fseek/read was very slow.  The current sequential read in batches eliminates 
the fseek. Would be great to get some early validation. Thanks.

> Improve performance of KahaDB recovery check checkForCorruptJournalFiles=true
> -
>
> Key: AMQ-6771
> URL: https://issues.apache.org/jira/browse/AMQ-6771
> Project: ActiveMQ
>  Issue Type: Improvement
>  Components: KahaDB
>Affects Versions: 5.15.0
>Reporter: Gary Tully
>Assignee: Gary Tully
> Fix For: 5.16.0
>
>
> The KahaDB checkForCorruptJournalFiles option validates the checksum of every 
> journal batch record on startup. If a single producer writes many small 
> messages, the batch sizes in the journal will be small. The current check 
> implementation reads each batch at a time with a fseek/read sequence that can 
> be very slow over shared disks.
> The check can be a quick buffered sequential read using the maxBatchSize 
> which should already be tuned to match the disk transfer rate.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)


[jira] [Commented] (AMQ-4693) Add kerberos [SASL] authentication for TCP connectors

2017-07-17 Thread Gary Tully (JIRA)

[ 
https://issues.apache.org/jira/browse/AMQ-4693?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16089692#comment-16089692
 ] 

Gary Tully commented on AMQ-4693:
-

[~nannou9] thanks for the reply :-) 

> Add kerberos [SASL] authentication for TCP connectors
> -
>
> Key: AMQ-4693
> URL: https://issues.apache.org/jira/browse/AMQ-4693
> Project: ActiveMQ
>  Issue Type: New Feature
>  Components: Broker
>Affects Versions: 5.8.0
> Environment: linux, solaris
>Reporter: Bhanu
>Priority: Minor
> Fix For: Unscheduled
>
>
> Hi,
> Can kerberos based authentication be added to ActiveMQ's TCP connectors.
> Thanks,
> Bhanu



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)


[jira] [Commented] (AMQ-6772) runtimeConfigurationPlugin - prioritizedMessages property update at Runtime

2017-07-17 Thread Gary Tully (JIRA)

[ 
https://issues.apache.org/jira/browse/AMQ-6772?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16089683#comment-16089683
 ] 

Gary Tully commented on AMQ-6772:
-

use a wildcard policy to enable prioritySupport for all queues and disable it 
selectively if that is required. In that way any new queue will match the 
wildcard and get priority support.

> runtimeConfigurationPlugin - prioritizedMessages property update at Runtime
> ---
>
> Key: AMQ-6772
> URL: https://issues.apache.org/jira/browse/AMQ-6772
> Project: ActiveMQ
>  Issue Type: Bug
>  Components: runtime configuration plugin
>Affects Versions: 5.14.5
> Environment: Unix
>Reporter: Anil P.
>
> I have configured the 'runtimeConfigurationPlugin' and started the Active MQ.
> Then added the below in policyEntries:
>  prioritizedMessages="true" useCache="false" expireMessagesPeriod="0" />
> After saving the config file, I am able to see that the console log got 
> updated saying that config changes are detected and loaded.
> When tested, however, Message Priority is not being enforced as expected on 
> the queue.
> I checked in JConsole, I am not able to update this particular property there 
> either.
> If I restart with the policy configured, the property is getting applied and 
> it is working as expected. It is only not happening if I try to have it 
> updated at run-time.
> Tim dug into the code, and discovered that the
> PolicyEntry.update() and PolicyEntry.baseUpdate() methods (
> https://git-wip-us.apache.org/repos/asf?p=activemq.git;a=blob;f=activemq-broker/src/main/java/org/apache/activemq/broker/region/policy/PolicyEntry.java;h=5b7ff0e184b9e6b4be6cf61ebcacc0a845bb1a6c;hb=HEAD)
> don't attempt to set any of the three properties being passed in. 
> Please fix this so that those attributes will be set when the policy entry is 
> reloaded.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)


[jira] [Commented] (AMQ-6772) runtimeConfigurationPlugin - prioritizedMessages property update at Runtime

2017-07-17 Thread Gary Tully (JIRA)

[ 
https://issues.apache.org/jira/browse/AMQ-6772?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16089592#comment-16089592
 ] 

Gary Tully commented on AMQ-6772:
-

the priority support is not a good candidate for runtime modification because 
not only do the in-memory messages need to  retained in priority memory, the 
store needs to retrieve and store messages in priority order. For this, the 
store needs a restart which is not practical.

> runtimeConfigurationPlugin - prioritizedMessages property update at Runtime
> ---
>
> Key: AMQ-6772
> URL: https://issues.apache.org/jira/browse/AMQ-6772
> Project: ActiveMQ
>  Issue Type: Bug
>  Components: runtime configuration plugin
>Affects Versions: 5.14.5
> Environment: Unix
>Reporter: Anil P.
>
> I have configured the 'runtimeConfigurationPlugin' and started the Active MQ.
> Then added the below in policyEntries:
>  prioritizedMessages="true" useCache="false" expireMessagesPeriod="0" />
> After saving the config file, I am able to see that the console log got 
> updated saying that config changes are detected and loaded.
> When tested, however, Message Priority is not being enforced as expected on 
> the queue.
> I checked in JConsole, I am not able to update this particular property there 
> either.
> If I restart with the policy configured, the property is getting applied and 
> it is working as expected. It is only not happening if I try to have it 
> updated at run-time.
> Tim dug into the code, and discovered that the
> PolicyEntry.update() and PolicyEntry.baseUpdate() methods (
> https://git-wip-us.apache.org/repos/asf?p=activemq.git;a=blob;f=activemq-broker/src/main/java/org/apache/activemq/broker/region/policy/PolicyEntry.java;h=5b7ff0e184b9e6b4be6cf61ebcacc0a845bb1a6c;hb=HEAD)
> don't attempt to set any of the three properties being passed in. 
> Please fix this so that those attributes will be set when the policy entry is 
> reloaded.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)


[jira] [Created] (AMQ-6771) Improve performance of KahaDB recovery check checkForCorruptJournalFiles=true

2017-07-14 Thread Gary Tully (JIRA)
Gary Tully created AMQ-6771:
---

 Summary: Improve performance of KahaDB recovery check 
checkForCorruptJournalFiles=true
 Key: AMQ-6771
 URL: https://issues.apache.org/jira/browse/AMQ-6771
 Project: ActiveMQ
  Issue Type: Improvement
  Components: KahaDB
Affects Versions: 5.15.0
Reporter: Gary Tully
Assignee: Gary Tully
 Fix For: 5.16.0


The KahaDB checkForCorruptJournalFiles option validates the checksum of every 
journal batch record on startup. If a single producer writes many small 
messages, the batch sizes in the journal will be small. The current check 
implementation reads each batch at a time with a fseek/read sequence that can 
be very slow over shared disks.

The check can be a quick buffered sequential read using the maxBatchSize which 
should already be tuned to match the disk transfer rate.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)


[jira] [Updated] (ARTEMIS-1264) Client authentication via Kerberos TLS Cipher Suites (RFC 2712)

2017-07-13 Thread Gary Tully (JIRA)

 [ 
https://issues.apache.org/jira/browse/ARTEMIS-1264?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Gary Tully updated ARTEMIS-1264:

Description: 
Allow a client authenticated with a kerberos credential to authenticate to the 
broker using SSL via the Kerberos cipher suites.

next steps:
 - -ensure mapping from kerberos principal to broker identity is locked down-
 -- https://github.com/apache/activemq-artemis/pull/1388
 - -ensure jms client config is trivial-
 -- the connector properties can be configured in the same way as for core.
 - -validate broker side ticket expiry and renewal-
 - work with qpid-jms to validate amqp client (on hold)
 - validate with non java - proton-c client ({color:red}problem{color})

Interop with non java clients is a problem. OpenSSL [has removed 
support|http://openssl.6102.n7.nabble.com/openssl-users-Kerberos-tp57906p58095.html]
 for [rfc2712|https://www.ietf.org/rfc/rfc2712.txt]. 
While reusing the TLS handshake was a good idea at the time; it has issues (non 
compatible impl between openssl and sun) and the world has moved on to layering 
authentication over TLS rather than with.

This makes sense b/c kerberos does two things, authentication over an insecure 
connection and session encryption over that connection. With rfc2712 the 
available session encryption options are known to be insecure, best to leave 
encryption entirely to TLS. 

In a java only scenario (sun jdk on both ends), using this feature for kerberos 
*authentication only* is viable.

For example, if clients use username/password for authentication and TLS to 
encrypt the connection to secure the password, but don't care about encrypting 
the rest of the data, there is some value here.
They can swap the username/password for a kerberos token and achieve 
authentication. They will essentially drop encryption because the cypher in use 
is insecure. Note a kerberos ticket is designed to be validated across an 
insecure channel.

The modern approach is to layer kerberos authentication over TLS using 
something like the GSSAPI and SASL.

  was:
Allow a client authenticated with a kerberos credential to authenticate to the 
broker using SSL via the Kerberos cipher suites.

next steps:
 - -ensure mapping from kerberos principal to broker identity is locked down-
 -- https://github.com/apache/activemq-artemis/pull/1388
 - -ensure jms client config is trivial-
 -- the connector properties can be configured in the same way as for core.
 - -validate broker side ticket expiry and renewal-
 - work with qpid-jms to validate amqp client (on hold)
 - validate with non java - proton-c client ({color:red}problem{color})

Interop with non java clients is a problem. OpenSSL [has removed 
support|http://openssl.6102.n7.nabble.com/openssl-users-Kerberos-tp57906p58095.html]
 for [rfc2712|https://www.ietf.org/rfc/rfc2712.txt]. 
While reusing the TLS handshake was a good idea at the time; it has issues (non 
compatible impl between openssl and sun) and the world has moved on to layering 
authentication over TLS rather than with.

This makes sense b/c kerberos does two things, authentication over an insecure 
connection and session encryption over that connection. With rfc2712 the 
available session encryption options are known to be insecure. 

In a java only scenario (sun jdk on both ends), using this feature for kerberos 
*authentication only* is viable.

For example, if clients use username/password for authentication and TLS to 
encrypt the connection to secure the password, but don't care about encrypting 
the rest of the data, there is some value here.
They can swap the username/password for a kerberos token and achieve 
authentication. They will essentially drop encryption because the cypher in use 
is insecure. Note a kerberos ticket is designed to be validated across an 
insecure channel.

The modern approach is to layer kerberos authentication over TLS using 
something like the GSSAPI and SASL.


> Client authentication via Kerberos TLS Cipher Suites (RFC 2712)
> ---
>
> Key: ARTEMIS-1264
> URL: https://issues.apache.org/jira/browse/ARTEMIS-1264
> Project: ActiveMQ Artemis
>  Issue Type: New Feature
>Affects Versions: 2.1.0
>Reporter: Gary Tully
>Assignee: Gary Tully
>
> Allow a client authenticated with a kerberos credential to authenticate to 
> the broker using SSL via the Kerberos cipher suites.
> next steps:
>  - -ensure mapping from kerberos principal to broker identity is locked down-
>  -- https://github.com/apache/activemq-artemis/pull/1388
>  - -ensure jms client config is trivial-
>  -- the connector properties can be configured in the same way as for core.
>  - -validate broker side ticket expiry and renewal-
>  - work with qpid-jms to validate amqp client (on hold)
>  - validate with non java - proton-c 

[jira] [Commented] (AMQ-4693) Add kerberos [SASL] authentication for TCP connectors

2017-07-13 Thread Gary Tully (JIRA)

[ 
https://issues.apache.org/jira/browse/AMQ-4693?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16085525#comment-16085525
 ] 

Gary Tully commented on AMQ-4693:
-

[~nannou9] I was inspired by ur PR to implement same in artemis - 
https://issues.apache.org/jira/browse/ARTEMIS-1264 however it appears the 
solution is in a bit of a java bubble and maybe a time warp. One I peeked out 
of the java realm I found the OpenSSL discussions and noted the evolution from 
RFC2712. It *is* too good to be true that any TLS client can get kerberos 
authentication for free. It comes at the cost of having an insecure channel.

The use case is Kerberos SSO over an insecure channel, have you found that 
useful in practice?

> Add kerberos [SASL] authentication for TCP connectors
> -
>
> Key: AMQ-4693
> URL: https://issues.apache.org/jira/browse/AMQ-4693
> Project: ActiveMQ
>  Issue Type: New Feature
>  Components: Broker
>Affects Versions: 5.8.0
> Environment: linux, solaris
>Reporter: Bhanu
>Priority: Minor
> Fix For: Unscheduled
>
>
> Hi,
> Can kerberos based authentication be added to ActiveMQ's TCP connectors.
> Thanks,
> Bhanu



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)


[jira] [Issue Comment Deleted] (ARTEMIS-1264) Client authentication via Kerberos TLS Cipher Suites (RFC 2712)

2017-07-13 Thread Gary Tully (JIRA)

 [ 
https://issues.apache.org/jira/browse/ARTEMIS-1264?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Gary Tully updated ARTEMIS-1264:

Comment: was deleted

(was: next steps:
 - -ensure mapping from kerberos principal to broker identity is locked down-
 -- https://github.com/apache/activemq-artemis/pull/1388
 - -ensure jms client config is trivial-
 -- the connector properties can be configured in the same way as for core.
 - -validate broker side ticket expiry and renewal-
 - work with qpid-jms to validate amqp client (on hold)
 - validate with non java - proton-c client ({color:red}problem{color})

Interop with non java clients is a problem. OpenSSL [has removed 
support|http://openssl.6102.n7.nabble.com/openssl-users-Kerberos-tp57906p58095.html]
 for [rfc2712|https://www.ietf.org/rfc/rfc2712.txt]. 
While reusing the TLS handshake was a good idea at the time; it has issues (non 
compatible impl between openssl and sun) and the world has moved on to layering 
authentication over TLS rather than with.

This makes sense b/c kerberos does two things, authentication over an insecure 
connection and session encryption over that connection. With rfc2712 the 
available session encryption options are known to be insecure. 

In a java only scenario (sun jdk on both ends), using this feature for kerberos 
*authentication only* is viable.

For example, if clients use username/password for authentication and TLS to 
encrypt the connection to secure the password, but don't care about encrypting 
the rest of the data, there is some value here.
They can swap the username/password for a kerberos token and achieve 
authentication. They will essentially drop encryption because the cypher in use 
is insecure. Note a kerberos ticket is designed to be validated across an 
insecure channel.

The modern approach is to layer kerberos authentication over TLS using 
something like the GSSAPI and SASL.)

> Client authentication via Kerberos TLS Cipher Suites (RFC 2712)
> ---
>
> Key: ARTEMIS-1264
> URL: https://issues.apache.org/jira/browse/ARTEMIS-1264
> Project: ActiveMQ Artemis
>  Issue Type: New Feature
>Affects Versions: 2.1.0
>Reporter: Gary Tully
>Assignee: Gary Tully
>
> Allow a client authenticated with a kerberos credential to authenticate to 
> the broker using SSL via the Kerberos cipher suites.
> next steps:
>  - -ensure mapping from kerberos principal to broker identity is locked down-
>  -- https://github.com/apache/activemq-artemis/pull/1388
>  - -ensure jms client config is trivial-
>  -- the connector properties can be configured in the same way as for core.
>  - -validate broker side ticket expiry and renewal-
>  - work with qpid-jms to validate amqp client (on hold)
>  - validate with non java - proton-c client ({color:red}problem{color})
> Interop with non java clients is a problem. OpenSSL [has removed 
> support|http://openssl.6102.n7.nabble.com/openssl-users-Kerberos-tp57906p58095.html]
>  for [rfc2712|https://www.ietf.org/rfc/rfc2712.txt]. 
> While reusing the TLS handshake was a good idea at the time; it has issues 
> (non compatible impl between openssl and sun) and the world has moved on to 
> layering authentication over TLS rather than with.
> This makes sense b/c kerberos does two things, authentication over an 
> insecure connection and session encryption over that connection. With rfc2712 
> the available session encryption options are known to be insecure. 
> In a java only scenario (sun jdk on both ends), using this feature for 
> kerberos *authentication only* is viable.
> For example, if clients use username/password for authentication and TLS to 
> encrypt the connection to secure the password, but don't care about 
> encrypting the rest of the data, there is some value here.
> They can swap the username/password for a kerberos token and achieve 
> authentication. They will essentially drop encryption because the cypher in 
> use is insecure. Note a kerberos ticket is designed to be validated across an 
> insecure channel.
> The modern approach is to layer kerberos authentication over TLS using 
> something like the GSSAPI and SASL.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)


[jira] [Updated] (ARTEMIS-1264) Client authentication via Kerberos TLS Cipher Suites (RFC 2712)

2017-07-13 Thread Gary Tully (JIRA)

 [ 
https://issues.apache.org/jira/browse/ARTEMIS-1264?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Gary Tully updated ARTEMIS-1264:

Description: 
Allow a client authenticated with a kerberos credential to authenticate to the 
broker using SSL via the Kerberos cipher suites.

next steps:
 - -ensure mapping from kerberos principal to broker identity is locked down-
 -- https://github.com/apache/activemq-artemis/pull/1388
 - -ensure jms client config is trivial-
 -- the connector properties can be configured in the same way as for core.
 - -validate broker side ticket expiry and renewal-
 - work with qpid-jms to validate amqp client (on hold)
 - validate with non java - proton-c client ({color:red}problem{color})

Interop with non java clients is a problem. OpenSSL [has removed 
support|http://openssl.6102.n7.nabble.com/openssl-users-Kerberos-tp57906p58095.html]
 for [rfc2712|https://www.ietf.org/rfc/rfc2712.txt]. 
While reusing the TLS handshake was a good idea at the time; it has issues (non 
compatible impl between openssl and sun) and the world has moved on to layering 
authentication over TLS rather than with.

This makes sense b/c kerberos does two things, authentication over an insecure 
connection and session encryption over that connection. With rfc2712 the 
available session encryption options are known to be insecure. 

In a java only scenario (sun jdk on both ends), using this feature for kerberos 
*authentication only* is viable.

For example, if clients use username/password for authentication and TLS to 
encrypt the connection to secure the password, but don't care about encrypting 
the rest of the data, there is some value here.
They can swap the username/password for a kerberos token and achieve 
authentication. They will essentially drop encryption because the cypher in use 
is insecure. Note a kerberos ticket is designed to be validated across an 
insecure channel.

The modern approach is to layer kerberos authentication over TLS using 
something like the GSSAPI and SASL.

  was:Allow a client authenticated with a kerberos credential to authenticate 
to the broker using SSL via the Kerberos cipher suites.


> Client authentication via Kerberos TLS Cipher Suites (RFC 2712)
> ---
>
> Key: ARTEMIS-1264
> URL: https://issues.apache.org/jira/browse/ARTEMIS-1264
> Project: ActiveMQ Artemis
>  Issue Type: New Feature
>Affects Versions: 2.1.0
>Reporter: Gary Tully
>Assignee: Gary Tully
>
> Allow a client authenticated with a kerberos credential to authenticate to 
> the broker using SSL via the Kerberos cipher suites.
> next steps:
>  - -ensure mapping from kerberos principal to broker identity is locked down-
>  -- https://github.com/apache/activemq-artemis/pull/1388
>  - -ensure jms client config is trivial-
>  -- the connector properties can be configured in the same way as for core.
>  - -validate broker side ticket expiry and renewal-
>  - work with qpid-jms to validate amqp client (on hold)
>  - validate with non java - proton-c client ({color:red}problem{color})
> Interop with non java clients is a problem. OpenSSL [has removed 
> support|http://openssl.6102.n7.nabble.com/openssl-users-Kerberos-tp57906p58095.html]
>  for [rfc2712|https://www.ietf.org/rfc/rfc2712.txt]. 
> While reusing the TLS handshake was a good idea at the time; it has issues 
> (non compatible impl between openssl and sun) and the world has moved on to 
> layering authentication over TLS rather than with.
> This makes sense b/c kerberos does two things, authentication over an 
> insecure connection and session encryption over that connection. With rfc2712 
> the available session encryption options are known to be insecure. 
> In a java only scenario (sun jdk on both ends), using this feature for 
> kerberos *authentication only* is viable.
> For example, if clients use username/password for authentication and TLS to 
> encrypt the connection to secure the password, but don't care about 
> encrypting the rest of the data, there is some value here.
> They can swap the username/password for a kerberos token and achieve 
> authentication. They will essentially drop encryption because the cypher in 
> use is insecure. Note a kerberos ticket is designed to be validated across an 
> insecure channel.
> The modern approach is to layer kerberos authentication over TLS using 
> something like the GSSAPI and SASL.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)


[jira] [Comment Edited] (ARTEMIS-1264) Client authentication via Kerberos TLS Cipher Suites (RFC 2712)

2017-07-13 Thread Gary Tully (JIRA)

[ 
https://issues.apache.org/jira/browse/ARTEMIS-1264?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16074589#comment-16074589
 ] 

Gary Tully edited comment on ARTEMIS-1264 at 7/13/17 10:22 AM:
---

next steps:
 - -ensure mapping from kerberos principal to broker identity is locked down-
 -- https://github.com/apache/activemq-artemis/pull/1388
 - -ensure jms client config is trivial-
 -- the connector properties can be configured in the same way as for core.
 - -validate broker side ticket expiry and renewal-
 - work with qpid-jms to validate amqp client (on hold)
 - validate with non java - proton-c client ({color:red}problem{color})

Interop with non java clients is a problem. OpenSSL [has removed 
support|http://openssl.6102.n7.nabble.com/openssl-users-Kerberos-tp57906p58095.html]
 for [rfc2712|https://www.ietf.org/rfc/rfc2712.txt]. 
While reusing the TLS handshake was a good idea at the time; it has issues (non 
compatible impl between openssl and sun) and the world has moved on to layering 
authentication over TLS rather than with.

This makes sense b/c kerberos does two things, authentication over an insecure 
connection and session encryption over that connection. With rfc2712 the 
available session encryption options are known to be insecure. 

In a java only scenario (sun jdk on both ends), using this feature for kerberos 
*authentication only* is viable.

For example, if clients use username/password for authentication and TLS to 
encrypt the connection to secure the password, but don't care about encrypting 
the rest of the data, there is some value here.
They can swap the username/password for a kerberos token and achieve 
authentication. They will essentially drop encryption because the cypher in use 
is insecure. Note a kerberos ticket is designed to be validated across an 
insecure channel.

The modern approach is to layer kerberos authentication over TLS using 
something like the GSSAPI and SASL.


was (Author: gtully):
next steps:
 - -ensure mapping from kerberos principal to broker identity is locked down-
 -- https://github.com/apache/activemq-artemis/pull/1388
 - ensure jms client config is trivial
 - validate broker side ticket expiry and renewal
 - work with qpid-jms to validate amqp client
 - validate with non java - proton-c client

> Client authentication via Kerberos TLS Cipher Suites (RFC 2712)
> ---
>
> Key: ARTEMIS-1264
> URL: https://issues.apache.org/jira/browse/ARTEMIS-1264
> Project: ActiveMQ Artemis
>  Issue Type: New Feature
>Affects Versions: 2.1.0
>Reporter: Gary Tully
>Assignee: Gary Tully
>
> Allow a client authenticated with a kerberos credential to authenticate to 
> the broker using SSL via the Kerberos cipher suites.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)


[jira] [Resolved] (AMQ-6764) Add ended statement to Audit log for JMX ops

2017-07-10 Thread Gary Tully (JIRA)

 [ 
https://issues.apache.org/jira/browse/AMQ-6764?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Gary Tully resolved AMQ-6764.
-
Resolution: Fixed

> Add ended statement to Audit log for JMX ops
> 
>
> Key: AMQ-6764
> URL: https://issues.apache.org/jira/browse/AMQ-6764
> Project: ActiveMQ
>  Issue Type: Improvement
>  Components: Broker
>Affects Versions: 5.14.0
>Reporter: Gary Tully
>Assignee: Gary Tully
> Fix For: 5.16.0
>
>
> AMQ-3100 introduced an audit log. It is boolean enabled or disabled.
> This enhancement allows four values for the system property: 
> "org.apache.activemq.audit"
> true|entry,exit,all
>   - true, entry: log each called op
>   - exit: log the ending of each called op
>   - all: - log both the entry and exit (called and ended) log statements



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)


[jira] [Updated] (AMQ-6764) Add ended statement to Audit log for JMX ops

2017-07-10 Thread Gary Tully (JIRA)

 [ 
https://issues.apache.org/jira/browse/AMQ-6764?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Gary Tully updated AMQ-6764:

Description: 
AMQ-3100 introduced an audit log. It is boolean enabled or disabled.
This enhancement allows four values for the system property: 
"org.apache.activemq.audit"
true|entry,exit,all

  - true|entry: log each called op (existing behaviour)
  - exit: log the ending of each called op
  - all: - log both the entry and exit (called and ended) log statements



  was:
AMQ-3100 introduced an audit log. It is boolean enabled or disabled.
This enhancement allows four values for the system property: 
"org.apache.activemq.audit"
true|entry,exit,all

  - true, entry: log each called op
  - exit: log the ending of each called op
  - all: - log both the entry and exit (called and ended) log statements




> Add ended statement to Audit log for JMX ops
> 
>
> Key: AMQ-6764
> URL: https://issues.apache.org/jira/browse/AMQ-6764
> Project: ActiveMQ
>  Issue Type: Improvement
>  Components: Broker
>Affects Versions: 5.14.0
>Reporter: Gary Tully
>Assignee: Gary Tully
> Fix For: 5.16.0
>
>
> AMQ-3100 introduced an audit log. It is boolean enabled or disabled.
> This enhancement allows four values for the system property: 
> "org.apache.activemq.audit"
> true|entry,exit,all
>   - true|entry: log each called op (existing behaviour)
>   - exit: log the ending of each called op
>   - all: - log both the entry and exit (called and ended) log statements



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)


[jira] [Updated] (AMQ-6764) Add ended statement to Audit log for JMX ops

2017-07-10 Thread Gary Tully (JIRA)

 [ 
https://issues.apache.org/jira/browse/AMQ-6764?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Gary Tully updated AMQ-6764:

Description: 
AMQ-3100 introduced an audit log. It is boolean enabled or disabled.
This enhancement allows four values for the system property: 
"org.apache.activemq.audit"
true|entry,exit,all

  - true, entry: log each called op
  - exit: log the ending of each called op
  - all: - log both the entry and exit (called and ended) log statements



  was:
AMQ-3100 introduced an audit log. It is boolean enabled or disabled.
This enhancement allows four values for the system property 
org.apache.activemq.audit
true|entry,exit,all

  - true, entry: log each called op
  - exit: log the ending of each called op
  - all: - log both the entry and exit (called and ended) log statements




> Add ended statement to Audit log for JMX ops
> 
>
> Key: AMQ-6764
> URL: https://issues.apache.org/jira/browse/AMQ-6764
> Project: ActiveMQ
>  Issue Type: Improvement
>  Components: Broker
>Affects Versions: 5.14.0
>Reporter: Gary Tully
>Assignee: Gary Tully
> Fix For: 5.16.0
>
>
> AMQ-3100 introduced an audit log. It is boolean enabled or disabled.
> This enhancement allows four values for the system property: 
> "org.apache.activemq.audit"
> true|entry,exit,all
>   - true, entry: log each called op
>   - exit: log the ending of each called op
>   - all: - log both the entry and exit (called and ended) log statements



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)


[jira] [Comment Edited] (ARTEMIS-1264) Client authentication via Kerberos TLS Cipher Suites (RFC 2712)

2017-07-06 Thread Gary Tully (JIRA)

[ 
https://issues.apache.org/jira/browse/ARTEMIS-1264?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16074589#comment-16074589
 ] 

Gary Tully edited comment on ARTEMIS-1264 at 7/6/17 4:05 PM:
-

next steps:
 - -ensure mapping from kerberos principal to broker identity is locked down-
 -- https://github.com/apache/activemq-artemis/pull/1388
 - ensure jms client config is trivial
 - validate broker side ticket expiry and renewal
 - work with qpid-jms to validate amqp client
 - validate with non java - proton-c client


was (Author: gtully):
next steps:
 - ensure mapping from kerberos principal to broker identity is locked down
 - ensure jms client config is trivial
 - validate broker side ticket expiry and renewal
 - work with qpid-jms to validate amqp client
 - validate with non java - proton-c client

> Client authentication via Kerberos TLS Cipher Suites (RFC 2712)
> ---
>
> Key: ARTEMIS-1264
> URL: https://issues.apache.org/jira/browse/ARTEMIS-1264
> Project: ActiveMQ Artemis
>  Issue Type: New Feature
>Affects Versions: 2.1.0
>Reporter: Gary Tully
>Assignee: Gary Tully
>
> Allow a client authenticated with a kerberos credential to authenticate to 
> the broker using SSL via the Kerberos cipher suites.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)


[jira] [Comment Edited] (ARTEMIS-1264) Client authentication via Kerberos TLS Cipher Suites (RFC 2712)

2017-07-05 Thread Gary Tully (JIRA)

[ 
https://issues.apache.org/jira/browse/ARTEMIS-1264?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16074589#comment-16074589
 ] 

Gary Tully edited comment on ARTEMIS-1264 at 7/5/17 12:38 PM:
--

next steps:
 - ensure mapping from kerberos principal to broker identity is locked down
 - ensure jms client config is trivial
 - validate broker side ticket expiry and renewal
 - work with qpid-jms to validate amqp client
 - validate with non java - proton-c client


was (Author: gtully):
next steps:
 - ensure jms client config is trivial
 - validate broker side ticket expiry and renewal
 - work with qpid-jms to validate amqp client
 - validate with non java - proton-c client

> Client authentication via Kerberos TLS Cipher Suites (RFC 2712)
> ---
>
> Key: ARTEMIS-1264
> URL: https://issues.apache.org/jira/browse/ARTEMIS-1264
> Project: ActiveMQ Artemis
>  Issue Type: New Feature
>Affects Versions: 2.1.0
>Reporter: Gary Tully
>Assignee: Gary Tully
>
> Allow a client authenticated with a kerberos credential to authenticate to 
> the broker using SSL via the Kerberos cipher suites.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)


[jira] [Commented] (ARTEMIS-1264) Client authentication via Kerberos TLS Cipher Suites (RFC 2712)

2017-07-05 Thread Gary Tully (JIRA)

[ 
https://issues.apache.org/jira/browse/ARTEMIS-1264?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16074589#comment-16074589
 ] 

Gary Tully commented on ARTEMIS-1264:
-

next steps:
 - ensure jms client config is trivial
 - validate broker side ticket expiry and renewal
 - work with qpid-jms to validate amqp client
 - validate with non java - proton-c client

> Client authentication via Kerberos TLS Cipher Suites (RFC 2712)
> ---
>
> Key: ARTEMIS-1264
> URL: https://issues.apache.org/jira/browse/ARTEMIS-1264
> Project: ActiveMQ Artemis
>  Issue Type: New Feature
>Affects Versions: 2.1.0
>Reporter: Gary Tully
>Assignee: Gary Tully
>
> Allow a client authenticated with a kerberos credential to authenticate to 
> the broker using SSL via the Kerberos cipher suites.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)


[jira] [Created] (ARTEMIS-1264) Client authentication via Kerberos TLS Cipher Suites (RFC 2712)

2017-06-30 Thread Gary Tully (JIRA)
Gary Tully created ARTEMIS-1264:
---

 Summary: Client authentication via Kerberos TLS Cipher Suites (RFC 
2712)
 Key: ARTEMIS-1264
 URL: https://issues.apache.org/jira/browse/ARTEMIS-1264
 Project: ActiveMQ Artemis
  Issue Type: New Feature
Affects Versions: 2.1.0
Reporter: Gary Tully
Assignee: Gary Tully


Allow a client authenticated with a kerberos credential to authenticate to the 
broker using SSL via the Kerberos cipher suites.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)


[jira] [Commented] (AMQ-6625) IOException in kahaDB needs to pause pending IOExceptionHandler intervention

2017-06-15 Thread Gary Tully (JIRA)

[ 
https://issues.apache.org/jira/browse/AMQ-6625?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16050747#comment-16050747
 ] 

Gary Tully commented on AMQ-6625:
-

The DefaultIOExceptionHandler implements a resume call on kahadb that allows 
the stopStartConnectors behaviour or ignore all errors behaviour to be chosen 
if necessary.

> IOException in kahaDB needs to pause pending IOExceptionHandler intervention
> 
>
> Key: AMQ-6625
> URL: https://issues.apache.org/jira/browse/AMQ-6625
> Project: ActiveMQ
>  Issue Type: Bug
>  Components: KahaDB
>Affects Versions: 5.14.0
>Reporter: Gary Tully
>Assignee: Gary Tully
> Fix For: 5.15.0
>
>
> KahaDB can recover from kill -9 by replaying the journal from the last 
> checkpoint or by detecting and reapplying partial writes to the index.
> However this activity is compromised if the journal or index accepts 
> subsequent writes. It an lead to skipped write batches or skipped partial 
> updates to the index.
> The desirable behaviour of treating an IOException as fatal and stopping the 
> broker in the knowledge that it will restart and fully recover needs to treat 
> the first IO error as fatal and by default not accept any further writes.
> A more advanced IOException handler can facilitate staying alive in more 
> specific scenarios and reactivate kahadb.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)


[jira] [Comment Edited] (AMQ-6625) IOException in kahaDB needs to pause pending IOExceptionHandler intervention

2017-06-15 Thread Gary Tully (JIRA)

[ 
https://issues.apache.org/jira/browse/AMQ-6625?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15907515#comment-15907515
 ] 

Gary Tully edited comment on AMQ-6625 at 6/15/17 4:38 PM:
--

Prior to the handIOException up-call the journal and index pause. The appender 
write thread won't get recreated and the index is marked unloaded.
This ensures that subsequent writes will fail allowing auto recovery from a 
partial write to kick in on restart.
The DefaultIOExceptionHandler implements a resume call on kahadb that allows 
the stopStartConnectors behaviour or ignore all errors behaviour to be chosen 
if necessary.


was (Author: gtully):
Prior to the handIOException up-call the journal and index pause. The appender 
write thread won't get recreated and the index is marked unloaded.
This ensures that subsequent writes will fail allowing auto recovery from a 
partial write to kick in on restart.
The new kahaDBIOExceptionHandler implements a resume call on kahadb that allows 
the stopStartConnectors behaviour or ignore all errors behaviour to be chosen 
if necessary.

> IOException in kahaDB needs to pause pending IOExceptionHandler intervention
> 
>
> Key: AMQ-6625
> URL: https://issues.apache.org/jira/browse/AMQ-6625
> Project: ActiveMQ
>  Issue Type: Bug
>  Components: KahaDB
>Affects Versions: 5.14.0
>Reporter: Gary Tully
>Assignee: Gary Tully
> Fix For: 5.15.0
>
>
> KahaDB can recover from kill -9 by replaying the journal from the last 
> checkpoint or by detecting and reapplying partial writes to the index.
> However this activity is compromised if the journal or index accepts 
> subsequent writes. It an lead to skipped write batches or skipped partial 
> updates to the index.
> The desirable behaviour of treating an IOException as fatal and stopping the 
> broker in the knowledge that it will restart and fully recover needs to treat 
> the first IO error as fatal and by default not accept any further writes.
> A more advanced IOException handler can facilitate staying alive in more 
> specific scenarios and reactivate kahadb.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)


[jira] [Resolved] (AMQ-6625) IOException in kahaDB needs to pause pending IOExceptionHandler intervention

2017-06-15 Thread Gary Tully (JIRA)

 [ 
https://issues.apache.org/jira/browse/AMQ-6625?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Gary Tully resolved AMQ-6625.
-
Resolution: Fixed

> IOException in kahaDB needs to pause pending IOExceptionHandler intervention
> 
>
> Key: AMQ-6625
> URL: https://issues.apache.org/jira/browse/AMQ-6625
> Project: ActiveMQ
>  Issue Type: Bug
>  Components: KahaDB
>Affects Versions: 5.14.0
>Reporter: Gary Tully
>Assignee: Gary Tully
> Fix For: 5.15.0
>
>
> KahaDB can recover from kill -9 by replaying the journal from the last 
> checkpoint or by detecting and reapplying partial writes to the index.
> However this activity is compromised if the journal or index accepts 
> subsequent writes. It an lead to skipped write batches or skipped partial 
> updates to the index.
> The desirable behaviour of treating an IOException as fatal and stopping the 
> broker in the knowledge that it will restart and fully recover needs to treat 
> the first IO error as fatal and by default not accept any further writes.
> A more advanced IOException handler can facilitate staying alive in more 
> specific scenarios and reactivate kahadb.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)


[jira] [Reopened] (AMQ-6625) IOException in kahaDB needs to pause pending IOExceptionHandler intervention

2017-06-15 Thread Gary Tully (JIRA)

 [ 
https://issues.apache.org/jira/browse/AMQ-6625?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Gary Tully reopened AMQ-6625:
-

The KahaDbIOExceptionHandler clashes with the use of the 
LeaseLockerIOExceptionHandler - need to push the allowIOResumption support into 
the persistence adapter.

> IOException in kahaDB needs to pause pending IOExceptionHandler intervention
> 
>
> Key: AMQ-6625
> URL: https://issues.apache.org/jira/browse/AMQ-6625
> Project: ActiveMQ
>  Issue Type: Bug
>  Components: KahaDB
>Affects Versions: 5.14.0
>Reporter: Gary Tully
>Assignee: Gary Tully
> Fix For: 5.15.0
>
>
> KahaDB can recover from kill -9 by replaying the journal from the last 
> checkpoint or by detecting and reapplying partial writes to the index.
> However this activity is compromised if the journal or index accepts 
> subsequent writes. It an lead to skipped write batches or skipped partial 
> updates to the index.
> The desirable behaviour of treating an IOException as fatal and stopping the 
> broker in the knowledge that it will restart and fully recover needs to treat 
> the first IO error as fatal and by default not accept any further writes.
> A more advanced IOException handler can facilitate staying alive in more 
> specific scenarios and reactivate kahadb.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)


[jira] [Resolved] (AMQ-6703) JMX purge needs to clear the message audit

2017-06-15 Thread Gary Tully (JIRA)

 [ 
https://issues.apache.org/jira/browse/AMQ-6703?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Gary Tully resolved AMQ-6703.
-
Resolution: Fixed

> JMX purge needs to clear the message audit
> --
>
> Key: AMQ-6703
> URL: https://issues.apache.org/jira/browse/AMQ-6703
> Project: ActiveMQ
>  Issue Type: Bug
>  Components: Broker, JMX
>Affects Versions: 5.14.0
>Reporter: Gary Tully
>Assignee: Gary Tully
> Fix For: 5.15.0
>
>
> JMX purge clears a queue of messages but does not reset the message audit. 
> Doing a X.copyTo(Y), X.purge() Y.copyYo(X) results in duplicate detection and 
> messages going to the DLQ in error.
> JMX purge needs to clear the message audit such that the queue is free of old 
> state.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)


[jira] [Created] (AMQ-6703) JMX purge needs to clear the message audit

2017-06-15 Thread Gary Tully (JIRA)
Gary Tully created AMQ-6703:
---

 Summary: JMX purge needs to clear the message audit
 Key: AMQ-6703
 URL: https://issues.apache.org/jira/browse/AMQ-6703
 Project: ActiveMQ
  Issue Type: Bug
  Components: Broker, JMX
Affects Versions: 5.14.0
Reporter: Gary Tully
Assignee: Gary Tully
 Fix For: 5.15.0


JMX purge clears a queue of messages but does not reset the message audit. 
Doing a X.copyTo(Y), X.purge() Y.copyYo(X) results in duplicate detection and 
messages going to the DLQ in error.
JMX purge needs to clear the message audit such that the queue is free of old 
state.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)


[jira] [Commented] (AMQ-6701) Intermittent CPU spikes in one broker in a network bridge

2017-06-14 Thread Gary Tully (JIRA)

[ 
https://issues.apache.org/jira/browse/AMQ-6701?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16049094#comment-16049094
 ] 

Gary Tully commented on AMQ-6701:
-

there is noting odd in there. it could be gc: see 
https://blog.codecentric.de/en/2014/01/useful-jvm-flags-part-8-gc-logging/

> Intermittent CPU spikes in one broker in a network bridge
> -
>
> Key: AMQ-6701
> URL: https://issues.apache.org/jira/browse/AMQ-6701
> Project: ActiveMQ
>  Issue Type: Task
>  Components: Broker
>Affects Versions: 5.12.0
> Environment: RHEL 7.2 in VMWARE ESXi virtual machines, JDK 1.8
>Reporter: Sridip Bhattacharya
> Attachments: jstack.zip
>
>
> Hi,
> We have a setup with network bridge between two activemq, say *http-broker12 
> & http-broker21* in two different VM, where communication occurs in both ways.
> {noformat}
> 
>  uri="static:(tcp://10.137.80.199:61616)" networkTTL="2"/>
> {noformat}
> {noformat}
> 
>  uri="static:(tcp://10.137.80.179:61616)" networkTTL="2"/>
> {noformat}
> Now we are facing intermittent CPU spikes (400%) in http-broker12 broker. 
> Whereas http-broker21 works normal. 
> Could you please confirm if anything abnormal/identified bug or config issue 
> here?
> //SB 



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)


[jira] [Resolved] (AMQ-6702) Allow dead letter strategy audit configuration

2017-06-13 Thread Gary Tully (JIRA)

 [ 
https://issues.apache.org/jira/browse/AMQ-6702?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Gary Tully resolved AMQ-6702.
-
Resolution: Fixed

The dead letter strategy has an message audit that is enabled by default. This 
prevents duplicate messages from being added to the configured DLQ. From 
5.15.0, the limits of the audit can configured via the
maxProducersToAudit and maxAuditDepth attributes. The audit can be disabled 
using enableAudit="false"

> Allow dead letter strategy audit configuration
> --
>
> Key: AMQ-6702
> URL: https://issues.apache.org/jira/browse/AMQ-6702
> Project: ActiveMQ
>  Issue Type: Improvement
>  Components: Broker
>Affects Versions: 5.14.0
>Reporter: Gary Tully
>Assignee: Gary Tully
> Fix For: 5.15.0
>
>
> When the default shared dead letter strategy is used with composite queues or 
> durable subs or virtual topics and messages expire - the dlq gets lots of 
> requests to store duplicates. The audit on the strategy traps most of these 
> duplicate add attempts but that audit is not configurable so it is possible 
> the some get through which may be trapped by the message store or cursor on 
> subsequent dispatch.
> Allowing the audit to be configured past the default parameters allows 
> duplicates to be stopped at source.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)


[jira] [Created] (AMQ-6702) Allow dead letter strategy audit configuration

2017-06-13 Thread Gary Tully (JIRA)
Gary Tully created AMQ-6702:
---

 Summary: Allow dead letter strategy audit configuration
 Key: AMQ-6702
 URL: https://issues.apache.org/jira/browse/AMQ-6702
 Project: ActiveMQ
  Issue Type: Improvement
  Components: Broker
Affects Versions: 5.14.0
Reporter: Gary Tully
Assignee: Gary Tully
 Fix For: 5.15.0


When the default shared dead letter strategy is used with composite queues or 
durable subs or virtual topics and messages expire - the dlq gets lots of 
requests to store duplicates. The audit on the strategy traps most of these 
duplicate add attempts but that audit is not configurable so it is possible the 
some get through which may be trapped by the message store or cursor on 
subsequent dispatch.
Allowing the audit to be configured past the default parameters allows 
duplicates to be stopped at source.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)


[jira] [Commented] (AMQ-6701) Intermittent CPU spikes in one broker in a network bridge

2017-06-13 Thread Gary Tully (JIRA)

[ 
https://issues.apache.org/jira/browse/AMQ-6701?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16047758#comment-16047758
 ] 

Gary Tully commented on AMQ-6701:
-

post a series of thread dumps during the high cpu period, that will tell you 
what is going on.

> Intermittent CPU spikes in one broker in a network bridge
> -
>
> Key: AMQ-6701
> URL: https://issues.apache.org/jira/browse/AMQ-6701
> Project: ActiveMQ
>  Issue Type: Task
>  Components: Broker
>Affects Versions: 5.12.0
> Environment: RHEL 7.2 in VMWARE ESXi virtual machines, JDK 1.8
>Reporter: Sridip Bhattacharya
>
> Hi,
> We have a setup with network bridge between two activemq, say *http-broker12 
> & http-broker21* in two different VM, where communication occurs in both ways.
> {noformat}
> 
>  uri="static:(tcp://10.137.80.199:61616)" networkTTL="2"/>
> {noformat}
> {noformat}
> 
>  uri="static:(tcp://10.137.80.179:61616)" networkTTL="2"/>
> {noformat}
> Now we are facing intermittent CPU spikes (400%) in http-broker12 broker. 
> Whereas http-broker21 works normal. 
> Could you please confirm if anything abnormal/identified bug or config issue 
> here?
> //SB 



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)


[jira] [Commented] (AMQ-6683) NullPointerException on transaction prepare in JdbcMememoryTransactionStore

2017-06-07 Thread Gary Tully (JIRA)

[ 
https://issues.apache.org/jira/browse/AMQ-6683?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16040724#comment-16040724
 ] 

Gary Tully commented on AMQ-6683:
-

Any chance you can replicate the usage pattern in some test code or maybe with 
trace=true on the transport connector broker side such that every command will 
be logged.

This looks maybe like some contention between add and prepare. Are there 
multiple connections involved in a single XA transaction. The TM(aries) will 
treat them as a single resource based on the broker id but maybe there is some 
ordering issue. There is an option to have each connection represent a separate 
resource - maybe that would workaround - use 
"tcp://host:port?jms.rmIdFromConnectionId=true" on the broker url for your 
connection factory

> NullPointerException on transaction prepare in JdbcMememoryTransactionStore
> ---
>
> Key: AMQ-6683
> URL: https://issues.apache.org/jira/browse/AMQ-6683
> Project: ActiveMQ
>  Issue Type: Bug
>  Components: Broker, JDBC
>Affects Versions: 5.14.5
>Reporter: Jakub
>Priority: Blocker
>
> From time to time an exception occurs:
> {code}
> Caused by: java.lang.NullPointerException
> at 
> org.apache.activemq.store.jdbc.JdbcMemoryTransactionStore.prepare(JdbcMemoryTransactionStore.java:75)
> at 
> org.apache.activemq.transaction.XATransaction.prepare(XATransaction.java:188)
> at 
> org.apache.activemq.broker.TransactionBroker.prepareTransaction(TransactionBroker.java:247)
> at 
> org.apache.activemq.broker.MutableBrokerFilter.prepareTransaction(MutableBrokerFilter.java:133)
> at 
> org.apache.activemq.broker.MutableBrokerFilter.prepareTransaction(MutableBrokerFilter.java:133)
> at 
> org.apache.activemq.broker.TransportConnection.processPrepareTransaction(TransportConnection.java:519)
> at 
> org.apache.activemq.command.TransactionInfo.visit(TransactionInfo.java:98)
> at 
> org.apache.activemq.broker.TransportConnection.service(TransportConnection.java:336)
> at 
> org.apache.activemq.broker.TransportConnection$1.onCommand(TransportConnection.java:200)
> at 
> org.apache.activemq.transport.MutexTransport.onCommand(MutexTransport.java:50)
> at 
> org.apache.activemq.transport.WireFormatNegotiator.onCommand(WireFormatNegotiator.java:125)
> at 
> org.apache.activemq.transport.AbstractInactivityMonitor.onCommand(AbstractInactivityMonitor.java:301)
> at 
> org.apache.activemq.transport.TransportSupport.doConsume(TransportSupport.java:83)
> at 
> org.apache.activemq.transport.tcp.TcpTransport.doRun(TcpTransport.java:233)[47:org.apache.activemq.activemq-osgi:5.14.5]
> at 
> org.apache.activemq.transport.tcp.TcpTransport.run(TcpTransport.java:215)[47:org.apache.activemq.activemq-osgi:5.14.5]
> at java.lang.Thread.run(Thread.java:745)[:1.8.0_131]
> {code}
> On client side there is an exception:
> {code}
> XID:[1197822575,globalId=2c162f175c1006f72672e6170616368652e61726965732e7472616e73616374696f6e,branchId=2000ffe5ff8319175c1006170616368652e61726965732e7472616e73616374696f6e]
>  failed with: javax.jms.JMSException: java.lang.NullPointerException
> javax.jms.JMSException: java.lang.NullPointerException
> at 
> org.apache.activemq.util.JMSExceptionSupport.create(JMSExceptionSupport.java:54)
> at 
> org.apache.activemq.ActiveMQConnection.syncSendPacket(ActiveMQConnection.java:1399)
> at 
> org.apache.activemq.ActiveMQConnection.syncSendPacket(ActiveMQConnection.java:1428)
> at 
> org.apache.activemq.TransactionContext.prepare(TransactionContext.java:469)
> at 
> org.apache.geronimo.transaction.manager.WrapperNamedXAResource.prepare(WrapperNamedXAResource.java:86)
> at 
> org.apache.geronimo.transaction.manager.TransactionImpl.internalPrepare(TransactionImpl.java:429)
> at 
> org.apache.geronimo.transaction.manager.TransactionImpl.commit(TransactionImpl.java:312)
> at 
> org.apache.geronimo.transaction.manager.TransactionManagerImpl.commit(TransactionManagerImpl.java:252)
> at 
> org.springframework.transaction.jta.JtaTransactionManager.doCommit(JtaTransactionManager.java:1020)
> at 
> org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:761)
> at 
> 

[jira] [Commented] (AMQ-6695) MirrorQueue - send a copy to the mirror topic instead of original message

2017-06-02 Thread Gary Tully (JIRA)

[ 
https://issues.apache.org/jira/browse/AMQ-6695?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16034856#comment-16034856
 ] 

Gary Tully commented on AMQ-6695:
-

I agree - the mirror should get a copy - and I think it should differ by having 
an originalDestination set:
very like the doForward in the composite case:
https://github.com/apache/activemq/blob/7413ee00e1d19563cb0273df954ad71ef1433705/activemq-broker/src/main/java/org/apache/activemq/broker/region/virtual/CompositeDestinationFilter.java#L112

> MirrorQueue - send a copy to the mirror topic instead of original message
> -
>
> Key: AMQ-6695
> URL: https://issues.apache.org/jira/browse/AMQ-6695
> Project: ActiveMQ
>  Issue Type: Improvement
>  Components: Broker
>Affects Versions: 5.x
>Reporter: Joachim Glink
>Priority: Minor
> Attachments: 
> MirrorQueue___send_the_original_message_to_the_original_destination_and_a_copy_to_the_mirr.patch
>
>
> The MirrorQueue implementation currently sends the original message to the 
> mirror topic and a copy (if copy flag is set to true) of the message to the 
> requested destination.
> Also, the MemoryUsage on the message which is sent to the requested 
> destination is set to null but the comment in the line notes that it´s done 
> so the memory size is used from the queue instead of the topic which isn´t 
> the case; its vise versa. (At least in my opinion)
> Another possible bug in my opinion is, that the MemoryUsage is set to null 
> even if the copy flag is false; so the same message is sent to the mirror and 
> destination but the MemoryUsage is set to null. This could lead to a false 
> calculation of the broker storage.
> If there are further plugins configured, than these plugins see the original 
> message in e.g. the send method. But this message isn´t the message which 
> will be sent to the defined destination but the message which is sent to the 
> mirror.
> I´d suggest to reverse the logic of the MirrorQueue so that a copy of the 
> message is sent to the mirror topic and the original message to the requested 
> destination (and also the MemoryUsage of this copy is set to null - and only 
> if it´s a copy!)
> A patch is attached to this issue which would cover the changes.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)


[jira] [Commented] (AMQ-6695) MirrorQueue - send a copy to the mirror topic instead of original message

2017-06-02 Thread Gary Tully (JIRA)

[ 
https://issues.apache.org/jira/browse/AMQ-6695?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16034562#comment-16034562
 ] 

Gary Tully commented on AMQ-6695:
-

guess the copy option could be deprecated in the same way as in 
CompositeDestination

> MirrorQueue - send a copy to the mirror topic instead of original message
> -
>
> Key: AMQ-6695
> URL: https://issues.apache.org/jira/browse/AMQ-6695
> Project: ActiveMQ
>  Issue Type: Improvement
>  Components: Broker
>Affects Versions: 5.x
>Reporter: Joachim Glink
>Priority: Minor
> Attachments: 
> MirrorQueue___send_the_original_message_to_the_original_destination_and_a_copy_to_the_mirr.patch
>
>
> The MirrorQueue implementation currently sends the original message to the 
> mirror topic and a copy (if copy flag is set to true) of the message to the 
> requested destination.
> Also, the MemoryUsage on the message which is sent to the requested 
> destination is set to null but the comment in the line notes that it´s done 
> so the memory size is used from the queue instead of the topic which isn´t 
> the case; its vise versa. (At least in my opinion)
> Another possible bug in my opinion is, that the MemoryUsage is set to null 
> even if the copy flag is false; so the same message is sent to the mirror and 
> destination but the MemoryUsage is set to null. This could lead to a false 
> calculation of the broker storage.
> If there are further plugins configured, than these plugins see the original 
> message in e.g. the send method. But this message isn´t the message which 
> will be sent to the defined destination but the message which is sent to the 
> mirror.
> I´d suggest to reverse the logic of the MirrorQueue so that a copy of the 
> message is sent to the mirror topic and the original message to the requested 
> destination (and also the MemoryUsage of this copy is set to null - and only 
> if it´s a copy!)
> A patch is attached to this issue which would cover the changes.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)


[jira] [Commented] (AMQ-6695) MirrorQueue - send a copy to the mirror topic instead of original message

2017-06-02 Thread Gary Tully (JIRA)

[ 
https://issues.apache.org/jira/browse/AMQ-6695?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16034558#comment-16034558
 ] 

Gary Tully commented on AMQ-6695:
-

btw: this copy not needed has been addressed in 
https://issues.apache.org/jira/browse/AMQ-6281 for composite destinations

> MirrorQueue - send a copy to the mirror topic instead of original message
> -
>
> Key: AMQ-6695
> URL: https://issues.apache.org/jira/browse/AMQ-6695
> Project: ActiveMQ
>  Issue Type: Improvement
>  Components: Broker
>Affects Versions: 5.x
>Reporter: Joachim Glink
>Priority: Minor
> Attachments: 
> MirrorQueue___send_the_original_message_to_the_original_destination_and_a_copy_to_the_mirr.patch
>
>
> The MirrorQueue implementation currently sends the original message to the 
> mirror topic and a copy (if copy flag is set to true) of the message to the 
> requested destination.
> Also, the MemoryUsage on the message which is sent to the requested 
> destination is set to null but the comment in the line notes that it´s done 
> so the memory size is used from the queue instead of the topic which isn´t 
> the case; its vise versa. (At least in my opinion)
> Another possible bug in my opinion is, that the MemoryUsage is set to null 
> even if the copy flag is false; so the same message is sent to the mirror and 
> destination but the MemoryUsage is set to null. This could lead to a false 
> calculation of the broker storage.
> If there are further plugins configured, than these plugins see the original 
> message in e.g. the send method. But this message isn´t the message which 
> will be sent to the defined destination but the message which is sent to the 
> mirror.
> I´d suggest to reverse the logic of the MirrorQueue so that a copy of the 
> message is sent to the mirror topic and the original message to the requested 
> destination (and also the MemoryUsage of this copy is set to null - and only 
> if it´s a copy!)
> A patch is attached to this issue which would cover the changes.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)


[jira] [Resolved] (AMQ-6696) Memory Usage for composite destination increasing when concurrentSend is used

2017-06-02 Thread Gary Tully (JIRA)

 [ 
https://issues.apache.org/jira/browse/AMQ-6696?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Gary Tully resolved AMQ-6696.
-
Resolution: Fixed

> Memory Usage for composite destination increasing when concurrentSend is used
> -
>
> Key: AMQ-6696
> URL: https://issues.apache.org/jira/browse/AMQ-6696
> Project: ActiveMQ
>  Issue Type: Bug
>Affects Versions: 5.14.0
>Reporter: Gary Tully
>Assignee: Gary Tully
> Fix For: 5.15.0
>
>
> After message has been forwarded to the underlying queues 
> MemoryUsageByteCount is increasing for the topic, would have expected it to 
> return to zero.{code}
> 
> 
>   
>forwardOnly="false" concurrentSend="true" >
>
>   
>   
>   
> 
>   
>
>  
> {code}



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)


[jira] [Created] (AMQ-6696) Memory Usage for composite destination increasing when concurrentSend is used

2017-06-02 Thread Gary Tully (JIRA)
Gary Tully created AMQ-6696:
---

 Summary: Memory Usage for composite destination increasing when 
concurrentSend is used
 Key: AMQ-6696
 URL: https://issues.apache.org/jira/browse/AMQ-6696
 Project: ActiveMQ
  Issue Type: Bug
Affects Versions: 5.14.0
Reporter: Gary Tully
Assignee: Gary Tully
 Fix For: 5.15.0


After message has been forwarded to the underlying queues MemoryUsageByteCount 
is increasing for the topic, would have expected it to return to zero.

  


 



  

   
 




--
This message was sent by Atlassian JIRA
(v6.3.15#6346)


[jira] [Updated] (AMQ-6696) Memory Usage for composite destination increasing when concurrentSend is used

2017-06-02 Thread Gary Tully (JIRA)

 [ 
https://issues.apache.org/jira/browse/AMQ-6696?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Gary Tully updated AMQ-6696:

Description: 
After message has been forwarded to the underlying queues MemoryUsageByteCount 
is increasing for the topic, would have expected it to return to zero.{code}

  


 



  

   
 
{code}

  was:
After message has been forwarded to the underlying queues MemoryUsageByteCount 
is increasing for the topic, would have expected it to return to zero.

  


 



  

   
 



> Memory Usage for composite destination increasing when concurrentSend is used
> -
>
> Key: AMQ-6696
> URL: https://issues.apache.org/jira/browse/AMQ-6696
> Project: ActiveMQ
>  Issue Type: Bug
>Affects Versions: 5.14.0
>Reporter: Gary Tully
>Assignee: Gary Tully
> Fix For: 5.15.0
>
>
> After message has been forwarded to the underlying queues 
> MemoryUsageByteCount is increasing for the topic, would have expected it to 
> return to zero.{code}
> 
> 
>   
>forwardOnly="false" concurrentSend="true" >
>
>   
>   
>   
> 
>   
>
>  
> {code}



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)


[jira] [Commented] (AMQ-6695) MirrorQueue - send a copy to the mirror topic instead of original message

2017-06-02 Thread Gary Tully (JIRA)

[ 
https://issues.apache.org/jira/browse/AMQ-6695?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16034386#comment-16034386
 ] 

Gary Tully commented on AMQ-6695:
-

thanks for the patch.
Changes like this can be tricky (as in it will change behaviour for folks) - 
that code has not changed since 2007.
I think there should always be a copy of the message because sending does 
change the metadata and of course the usage.
>From the comments on setCopyMessage it seems the intent is to set the forward 
>destination on the copy, maybe that flags should just do that and there is 
>always a copy.
Can you add some unit tests to show the problem and that can protect this 
changes into the future. Also verify the few unit tests that exercise the 
mirror queue

There is a related issue https://issues.apache.org/jira/browse/AMQ-3669 that 
seems to be in the same area and has a relevant test that can give inspiration.

> MirrorQueue - send a copy to the mirror topic instead of original message
> -
>
> Key: AMQ-6695
> URL: https://issues.apache.org/jira/browse/AMQ-6695
> Project: ActiveMQ
>  Issue Type: Improvement
>  Components: Broker
>Affects Versions: 5.x
>Reporter: Joachim Glink
>Priority: Minor
> Attachments: 
> MirrorQueue___send_the_original_message_to_the_original_destination_and_a_copy_to_the_mirr.patch
>
>
> The MirrorQueue implementation currently sends the original message to the 
> mirror topic and a copy (if copy flag is set to true) of the message to the 
> requested destination.
> Also, the MemoryUsage on the message which is sent to the requested 
> destination is set to null but the comment in the line notes that it´s done 
> so the memory size is used from the queue instead of the topic which isn´t 
> the case; its vise versa. (At least in my opinion)
> Another possible bug in my opinion is, that the MemoryUsage is set to null 
> even if the copy flag is false; so the same message is sent to the mirror and 
> destination but the MemoryUsage is set to null. This could lead to a false 
> calculation of the broker storage.
> If there are further plugins configured, than these plugins see the original 
> message in e.g. the send method. But this message isn´t the message which 
> will be sent to the defined destination but the message which is sent to the 
> mirror.
> I´d suggest to reverse the logic of the MirrorQueue so that a copy of the 
> message is sent to the mirror topic and the original message to the requested 
> destination (and also the MemoryUsage of this copy is set to null - and only 
> if it´s a copy!)
> A patch is attached to this issue which would cover the changes.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)


[jira] [Resolved] (AMQ-6693) SQLException when concurrently moving messages to DLQ

2017-06-01 Thread Gary Tully (JIRA)

 [ 
https://issues.apache.org/jira/browse/AMQ-6693?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Gary Tully resolved AMQ-6693.
-
Resolution: Fixed

> SQLException when concurrently moving messages to DLQ
> -
>
> Key: AMQ-6693
> URL: https://issues.apache.org/jira/browse/AMQ-6693
> Project: ActiveMQ
>  Issue Type: Bug
>  Components: JDBC, Message Store
>Affects Versions: 5.14.0
>Reporter: Gary Tully
>Assignee: Gary Tully
> Fix For: 5.15.0
>
>
> with the jdbc message store and the absence of a security context moving 
> messages to the dlq on transaction rollback and exhausted redelivery is 
> completed using the broker context.
> However the long term connection associated with a jdbc context is not thread 
> safe. It is typically associated with an incoming connection which is.
> If multiple consumers poison ack concurrently the broker can step over itself 
> using this shared context.
> The long term connection context should be ignored for the broker.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)


[jira] [Created] (AMQ-6693) SQLException when concurrently moving messages to DLQ

2017-06-01 Thread Gary Tully (JIRA)
Gary Tully created AMQ-6693:
---

 Summary: SQLException when concurrently moving messages to DLQ
 Key: AMQ-6693
 URL: https://issues.apache.org/jira/browse/AMQ-6693
 Project: ActiveMQ
  Issue Type: Bug
  Components: JDBC, Message Store
Affects Versions: 5.14.0
Reporter: Gary Tully
Assignee: Gary Tully
 Fix For: 5.15.0


with the jdbc message store and the absence of a security context moving 
messages to the dlq on transaction rollback and exhausted redelivery is 
completed using the broker context.
However the long term connection associated with a jdbc context is not thread 
safe. It is typically associated with an incoming connection which is.
If multiple consumers poison ack concurrently the broker can step over itself 
using this shared context.
The long term connection context should be ignored for the broker.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)


[jira] [Resolved] (AMQ-6691) JMX - allow DLQ flag to be modified

2017-05-31 Thread Gary Tully (JIRA)

 [ 
https://issues.apache.org/jira/browse/AMQ-6691?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Gary Tully resolved AMQ-6691.
-
Resolution: Fixed
  Assignee: Gary Tully

Test that validates persistence of the dlq flag via the destinations element of 
the broker xml is at:
https://git1-us-west.apache.org/repos/asf?p=activemq.git;a=commit;h=18d05ba5e0a96d231a357eb0a20b1f6388cb6c49

> JMX - allow DLQ flag to be modified
> ---
>
> Key: AMQ-6691
> URL: https://issues.apache.org/jira/browse/AMQ-6691
> Project: ActiveMQ
>  Issue Type: Improvement
>  Components: JMX
>Affects Versions: 5.14.0
>Reporter: Gary Tully
>Assignee: Gary Tully
> Fix For: 5.15.0
>
>
> AMQ-4483 introduces the destination flag but it is not persisted in the 
> message store and does not survive a restart.
> Adding the flag to the destinations element in the broker xml works around 
> this however it assumes prior knowledge.
> Allowing the flag to be set allows a retrospective change pending the next 
> restart when a modification to the destinations element can be picked up.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)


[jira] [Created] (AMQ-6691) JMX - allow DLQ flag to be modified

2017-05-31 Thread Gary Tully (JIRA)
Gary Tully created AMQ-6691:
---

 Summary: JMX - allow DLQ flag to be modified
 Key: AMQ-6691
 URL: https://issues.apache.org/jira/browse/AMQ-6691
 Project: ActiveMQ
  Issue Type: Improvement
  Components: JMX
Affects Versions: 5.14.0
Reporter: Gary Tully
 Fix For: 5.15.0


AMQ-4483 introduces the destination flag but it is not persisted in the message 
store and does not survive a restart.
Adding the flag to the destinations element in the broker xml works around this 
however it assumes prior knowledge.
Allowing the flag to be set allows a retrospective change pending the next 
restart when a modification to the destinations element can be picked up.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)


[jira] [Resolved] (AMQ-6690) Protect against JMX move/copy operations onto self

2017-05-31 Thread Gary Tully (JIRA)

 [ 
https://issues.apache.org/jira/browse/AMQ-6690?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Gary Tully resolved AMQ-6690.
-
Resolution: Fixed

I considered throwing an exception but I think it is safer to retain the 
existing behaviour and report via the return code

> Protect against JMX move/copy operations onto self
> --
>
> Key: AMQ-6690
> URL: https://issues.apache.org/jira/browse/AMQ-6690
> Project: ActiveMQ
>  Issue Type: Improvement
>  Components: JMX
>Affects Versions: 5.14.0
>Reporter: Gary Tully
>Assignee: Gary Tully
> Fix For: 5.15.0
>
>
> The move and copy jmx operations are intended to move/copy messages to 
> another destination. However this is not enforce and if the move/copy 
> destination is the same queue the logs fill with duplicate warnings etc and 
> the stats can get out of sync if the operation is repeated or concurrent.
> Best to cut this off at the pass with a return return code indicating nothing 
> was moved/copied.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)


[jira] [Created] (AMQ-6690) Protect against JMX move/copy operations onto self

2017-05-31 Thread Gary Tully (JIRA)
Gary Tully created AMQ-6690:
---

 Summary: Protect against JMX move/copy operations onto self
 Key: AMQ-6690
 URL: https://issues.apache.org/jira/browse/AMQ-6690
 Project: ActiveMQ
  Issue Type: Improvement
  Components: JMX
Affects Versions: 5.14.0
Reporter: Gary Tully
Assignee: Gary Tully
 Fix For: 5.15.0


The move and copy jmx operations are intended to move/copy messages to another 
destination. However this is not enforce and if the move/copy destination is 
the same queue the logs fill with duplicate warnings etc and the stats can get 
out of sync if the operation is repeated or concurrent.
Best to cut this off at the pass with a return return code indicating nothing 
was moved/copied.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)


[jira] [Resolved] (AMQ-6688) org.apache.activemq.broker.region.Queue.doMessageSend() future not completing

2017-05-29 Thread Gary Tully (JIRA)

 [ 
https://issues.apache.org/jira/browse/AMQ-6688?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Gary Tully resolved AMQ-6688.
-
Resolution: Fixed

> org.apache.activemq.broker.region.Queue.doMessageSend() future not completing
> -
>
> Key: AMQ-6688
> URL: https://issues.apache.org/jira/browse/AMQ-6688
> Project: ActiveMQ
>  Issue Type: Bug
>  Components: Broker, KahaDB, Message Store
>Affects Versions: 5.14.0
>Reporter: Gary Tully
>Assignee: Gary Tully
> Fix For: 5.15.0
>
>
> A case of a send thread blocked on the send future.get()...
> {code}
> ActiveMQ VMTransport: vm://XX" #375 daemon prio=5 os_prio=0 
> tid=0x7f9bdc2f0800 nid=0x4e2 waiting on condition [0x7f9bc7e9e000]
>java.lang.Thread.State: WAITING (parking)
>   at sun.misc.Unsafe.park(Native Method)
>   - parking to wait for  <0xd8e65ef8> (a 
> org.apache.activemq.store.kahadb.KahaDBStore$StoreQueueTask$InnerFutureTask)
>   at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
>   at java.util.concurrent.FutureTask.awaitDone(FutureTask.java:429)
>   at java.util.concurrent.FutureTask.get(FutureTask.java:191)
>   at org.apache.activemq.broker.region.Queue.doMessageSend(Queue.java:853)
>   at org.apache.activemq.broker.region.Queue.send(Queue.java:727)
>   at 
> org.apache.activemq.broker.region.AbstractRegion.send(AbstractRegion.java:419)
>   at 
> org.apache.activemq.broker.region.RegionBroker.send(RegionBroker.java:468)
>   at 
> org.apache.activemq.broker.jmx.ManagedRegionBroker.send(ManagedRegionBroker.java:296)
>   at org.apache.activemq.broker.BrokerFilter.send(BrokerFilter.java:152)
>   at 
> org.apache.activemq.broker.CompositeDestinationBroker.send(CompositeDestinationBroker.java:96)
>   at 
> org.apache.activemq.broker.TransactionBroker.send(TransactionBroker.java:293)
>   at 
> org.apache.activemq.broker.MutableBrokerFilter.send(MutableBrokerFilter.java:157)
>   at 
> org.apache.activemq.broker.util.LoggingBrokerPlugin.send(LoggingBrokerPlugin.java:275)
>   at org.apache.activemq.broker.BrokerFilter.send(BrokerFilter.java:152)
>   at 
> org.apache.activemq.broker.MutableBrokerFilter.send(MutableBrokerFilter.java:157)
>   at 
> org.apache.activemq.broker.TransportConnection.processMessage(TransportConnection.java:571)
>   at 
> org.apache.activemq.command.ActiveMQMessage.visit(ActiveMQMessage.java:768)
>   at 
> org.apache.activemq.broker.TransportConnection.service(TransportConnection.java:326)
>   at 
> org.apache.activemq.broker.TransportConnection$1.onCommand(TransportConnection.java:190)
>   at 
> org.apache.activemq.transport.ResponseCorrelator.onCommand(ResponseCorrelator.java:116)
>   at 
> org.apache.activemq.transport.MutexTransport.onCommand(MutexTransport.java:50)
>   at 
> org.apache.activemq.transport.vm.VMTransport.iterate(VMTransport.java:271)
>   at 
> org.apache.activemq.thread.PooledTaskRunner.runTask(PooledTaskRunner.java:133)
>   at 
> org.apache.activemq.thread.PooledTaskRunner$1.run(PooledTaskRunner.java:48)
>   at 
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
>   at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
>   at java.lang.Thread.run(Thread.java:745)
> {code}
> It seems that the 
> org.apache.activemq.store.kahadb.KahaDBStore.StoreQueueTask#run()  which 
> should invoke complete on the future has been invoked but complete is not 
> triggered. This can happen in the event that the add results in a Throwable!



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)


[jira] [Resolved] (AMQ-6687) destination memory usage incorrect after flow control (PFC) sendTimeout and rollback

2017-05-25 Thread Gary Tully (JIRA)

 [ 
https://issues.apache.org/jira/browse/AMQ-6687?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Gary Tully resolved AMQ-6687.
-
Resolution: Fixed

> destination memory usage incorrect after flow control (PFC) sendTimeout and 
> rollback
> 
>
> Key: AMQ-6687
> URL: https://issues.apache.org/jira/browse/AMQ-6687
> Project: ActiveMQ
>  Issue Type: Bug
>  Components: Broker
>Affects Versions: 5.14.0
>Reporter: Gary Tully
>Assignee: Gary Tully
> Fix For: 5.15.0
>
>
> When using PFC, to block a producer on a memory limit and using a sendTimeout 
> to error out after some timeout. If there is a send transaction the send 
> completes in error even though the transaction has completed once usage 
> allows.
> Leaving a dangling send that shows up in the memory usage.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)


[jira] [Commented] (AMQ-6687) destination memory usage incorrect after flow control (PFC) sendTimeout and rollback

2017-05-25 Thread Gary Tully (JIRA)

[ 
https://issues.apache.org/jira/browse/AMQ-6687?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16024737#comment-16024737
 ] 

Gary Tully commented on AMQ-6687:
-

With transactions or concurrentStoreAndDispatch - memory is accounted for 
before it reaches the cache which typically means that the cursor cache stops 
accepting messages early. If we want the cache and PFC we have to let the cache 
consume >100% of memory. To achieve this we must set the 
cursorHighWaterMark>100% something like 120% such that it will still allow a 
message to be cached while is is <100 that will put it over the 100% (full) 
limit.
Ie: we check is full and we are at 99%, we accept another message that pushes 
us to 101%, without a cursorHighWaterMark > 101 the cursor won't cache and will 
stick at 99% and producer flow control (PFC) won't kick in.

> destination memory usage incorrect after flow control (PFC) sendTimeout and 
> rollback
> 
>
> Key: AMQ-6687
> URL: https://issues.apache.org/jira/browse/AMQ-6687
> Project: ActiveMQ
>  Issue Type: Bug
>  Components: Broker
>Affects Versions: 5.14.0
>Reporter: Gary Tully
>Assignee: Gary Tully
> Fix For: 5.15.0
>
>
> When using PFC, to block a producer on a memory limit and using a sendTimeout 
> to error out after some timeout. If there is a send transaction the send 
> completes in error even though the transaction has completed once usage 
> allows.
> Leaving a dangling send that shows up in the memory usage.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)


[jira] [Commented] (AMQ-4467) Memory usage percent can be exceeded much if PFC is disabled

2017-05-25 Thread Gary Tully (JIRA)

[ 
https://issues.apache.org/jira/browse/AMQ-4467?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16024609#comment-16024609
 ] 

Gary Tully commented on AMQ-4467:
-

With transactions or concurrentStoreAndDispatch - memory is accounted for 
before it reaches the cache which typically means that the cursor cache stops 
accepting messages early. If we want the cache and PFC we have to let the cache 
consume >100% of memory. To achieve this we must set the 
cursorHighWaterMark>100% something like 120% such that it will still allow a 
message to be cached while is is <100 that will put it over the 100% (full) 
limit.
Ie: we check is full and we are at 99%, we accept another message that pushes 
us to 101%, without a cursorHighWaterMark > 101 the cursor won't cache and will 
stick at 99% and producer flow control (PFC) won't kick in.

> Memory usage percent can be exceeded much if PFC is disabled
> 
>
> Key: AMQ-4467
> URL: https://issues.apache.org/jira/browse/AMQ-4467
> Project: ActiveMQ
>  Issue Type: Bug
>  Components: Broker
>Affects Versions: 5.x
>Reporter: SuoNayi
>Assignee: Gary Tully
> Fix For: 5.15.0
>
> Attachments: AMQ-4467.patch
>
>
> If PFC is disabled, when the store cursor checks limits, it checks only the 
> memory percentage of its own MemoryUsage and compares it to the high water 
> mark. Otherwise if PFC is enabled, it checks whether the MemoryUsage is 
> "full" but the "isFull" method also checks its parents.
> This issue arrises when you have memory limits set on queues higher than the 
> overall system limit, as well as if you have multiple queues who's memory 
> limits combined are higher than the overall system limit. These settings must 
> be taken into account.
> The original form can be found at 
> http://activemq.2283324.n4.nabble.com/What-can-be-reason-of-460-memory-usage-limit-td4665651.html



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)


[jira] [Commented] (AMQ-6687) destination memory usage incorrect after flow control (PFC) sendTimeout and rollback

2017-05-25 Thread Gary Tully (JIRA)

[ 
https://issues.apache.org/jira/browse/AMQ-6687?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16024568#comment-16024568
 ] 

Gary Tully commented on AMQ-6687:
-

AMQ-4467 needed a revisit b/c that change prevented pfc from kicking in in this 
scenario in error.

> destination memory usage incorrect after flow control (PFC) sendTimeout and 
> rollback
> 
>
> Key: AMQ-6687
> URL: https://issues.apache.org/jira/browse/AMQ-6687
> Project: ActiveMQ
>  Issue Type: Bug
>  Components: Broker
>Affects Versions: 5.14.0
>Reporter: Gary Tully
>Assignee: Gary Tully
> Fix For: 5.15.0
>
>
> When using PFC, to block a producer on a memory limit and using a sendTimeout 
> to error out after some timeout. If there is a send transaction the send 
> completes in error even though the transaction has completed once usage 
> allows.
> Leaving a dangling send that shows up in the memory usage.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)


[jira] [Created] (AMQ-6687) destination memory usage incorrect after flow control (PFC) sendTimeout and rollback

2017-05-25 Thread Gary Tully (JIRA)
Gary Tully created AMQ-6687:
---

 Summary: destination memory usage incorrect after flow control 
(PFC) sendTimeout and rollback
 Key: AMQ-6687
 URL: https://issues.apache.org/jira/browse/AMQ-6687
 Project: ActiveMQ
  Issue Type: Bug
  Components: Broker
Affects Versions: 5.14.0
Reporter: Gary Tully
Assignee: Gary Tully
 Fix For: 5.15.0


When using PFC, to block a producer on a memory limit and using a sendTimeout 
to error out after some timeout. If there is a send transaction the send 
completes in error even though the transaction has completed once usage allows.
Leaving a dangling send that shows up in the memory usage.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)


[jira] [Resolved] (AMQ-6684) org.json is cat-x - needs to be removed

2017-05-24 Thread Gary Tully (JIRA)

 [ 
https://issues.apache.org/jira/browse/AMQ-6684?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Gary Tully resolved AMQ-6684.
-
Resolution: Fixed
  Assignee: Gary Tully

resolved via exclusions in the pom.

> org.json is cat-x - needs to be removed
> ---
>
> Key: AMQ-6684
> URL: https://issues.apache.org/jira/browse/AMQ-6684
> Project: ActiveMQ
>  Issue Type: Bug
>  Components: activemq-leveldb-store
>Affects Versions: 5.14.0
>Reporter: Gary Tully
>Assignee: Gary Tully
>Priority: Blocker
> Fix For: 5.15.0
>
>
> org.json is cat-x and cannot be included as a compile dependency going 
> forward.
> org.linkedin:org.linkedin.zookeeper-impl:jar:1.4.0:compile
> [INFO] |  \- org.linkedin:org.linkedin.util-groovy:jar:1.7.1:compile
> [INFO] | +- org.slf4j:jul-to-slf4j:jar:1.5.8:compile
> [INFO] | +- org.apache.ant:ant:jar:1.8.4:compile
> [INFO] | |  \- org.apache.ant:ant-launcher:jar:1.8.4:compile
> [INFO] | \- org.json:json:jar:20090211:compile
> is used in activemq-leveldb-store and activemq-partition
> using curator as a replacement may be a viable option for the zk client 
> dependency.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)


[jira] [Updated] (AMQ-6684) org.json is cat-x - needs to be removed

2017-05-24 Thread Gary Tully (JIRA)

 [ 
https://issues.apache.org/jira/browse/AMQ-6684?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Gary Tully updated AMQ-6684:

Description: 
org.json is cat-x and cannot be included as a compile dependency going forward.

org.linkedin:org.linkedin.zookeeper-impl:jar:1.4.0:compile
[INFO] |  \- org.linkedin:org.linkedin.util-groovy:jar:1.7.1:compile
[INFO] | +- org.slf4j:jul-to-slf4j:jar:1.5.8:compile
[INFO] | +- org.apache.ant:ant:jar:1.8.4:compile
[INFO] | |  \- org.apache.ant:ant-launcher:jar:1.8.4:compile
[INFO] | \- org.json:json:jar:20090211:compile

is used in activemq-leveldb-store and activemq-partition
using curator as a replacement may be a viable option for the zk client 
dependency.

  was:
org.json is cat-x and cannot be included as a compile dependency going forward.

org.linkedin:org.linkedin.zookeeper-impl:jar:1.4.0:provided
[INFO] |  \- org.linkedin:org.linkedin.util-groovy:jar:1.7.1:provided
[INFO] | +- org.slf4j:jul-to-slf4j:jar:1.5.8:provided
[INFO] | +- org.apache.ant:ant:jar:1.8.4:provided
[INFO] | |  \- org.apache.ant:ant-launcher:jar:1.8.4:provided
[INFO] | \- org.json:json:jar:20090211:provided

is used in activemq-leveldb-store and activemq-partition
using curator as a replacement may be a viable option for the zk client 
dependency.


> org.json is cat-x - needs to be removed
> ---
>
> Key: AMQ-6684
> URL: https://issues.apache.org/jira/browse/AMQ-6684
> Project: ActiveMQ
>  Issue Type: Bug
>  Components: activemq-leveldb-store
>Affects Versions: 5.14.0
>Reporter: Gary Tully
>Priority: Blocker
> Fix For: 5.15.0
>
>
> org.json is cat-x and cannot be included as a compile dependency going 
> forward.
> org.linkedin:org.linkedin.zookeeper-impl:jar:1.4.0:compile
> [INFO] |  \- org.linkedin:org.linkedin.util-groovy:jar:1.7.1:compile
> [INFO] | +- org.slf4j:jul-to-slf4j:jar:1.5.8:compile
> [INFO] | +- org.apache.ant:ant:jar:1.8.4:compile
> [INFO] | |  \- org.apache.ant:ant-launcher:jar:1.8.4:compile
> [INFO] | \- org.json:json:jar:20090211:compile
> is used in activemq-leveldb-store and activemq-partition
> using curator as a replacement may be a viable option for the zk client 
> dependency.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)


[jira] [Created] (AMQ-6684) org.json is cat-x - needs to be removed

2017-05-24 Thread Gary Tully (JIRA)
Gary Tully created AMQ-6684:
---

 Summary: org.json is cat-x - needs to be removed
 Key: AMQ-6684
 URL: https://issues.apache.org/jira/browse/AMQ-6684
 Project: ActiveMQ
  Issue Type: Bug
  Components: activemq-leveldb-store
Affects Versions: 5.14.0
Reporter: Gary Tully
Priority: Blocker
 Fix For: 5.15.0


org.json is cat-x and cannot be included as a compile dependency going forward.

org.linkedin:org.linkedin.zookeeper-impl:jar:1.4.0:provided
[INFO] |  \- org.linkedin:org.linkedin.util-groovy:jar:1.7.1:provided
[INFO] | +- org.slf4j:jul-to-slf4j:jar:1.5.8:provided
[INFO] | +- org.apache.ant:ant:jar:1.8.4:provided
[INFO] | |  \- org.apache.ant:ant-launcher:jar:1.8.4:provided
[INFO] | \- org.json:json:jar:20090211:provided

is used in activemq-leveldb-store and activemq-partition
using curator as a replacement may be a viable option for the zk client 
dependency.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)


[jira] [Resolved] (AMQ-6678) Move/Retry (destructive) Queue JMX operations need synchronization

2017-05-18 Thread Gary Tully (JIRA)

 [ 
https://issues.apache.org/jira/browse/AMQ-6678?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Gary Tully resolved AMQ-6678.
-
Resolution: Fixed

fix and test added.

> Move/Retry (destructive) Queue JMX operations need synchronization
> --
>
> Key: AMQ-6678
> URL: https://issues.apache.org/jira/browse/AMQ-6678
> Project: ActiveMQ
>  Issue Type: Bug
>  Components: Broker, JMX
>Affects Versions: 5.14.0
>Reporter: Gary Tully
>Assignee: Gary Tully
> Fix For: 5.15.0
>
>
> concurrent calls to move selector matching messages from one queue to another 
> or any wildcard type destructive JMX operation can break on concurrent 
> invocation.
> The move results in duplicates in the journal (waste of space) and incorrect 
> return counts due to inflight messages being visible in error.
> Two jmx consoles is enough to cause problems.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)


[jira] [Created] (AMQ-6678) Move/Retry (destructive) Queue JMX operations need synchronization

2017-05-18 Thread Gary Tully (JIRA)
Gary Tully created AMQ-6678:
---

 Summary: Move/Retry (destructive) Queue JMX operations need 
synchronization
 Key: AMQ-6678
 URL: https://issues.apache.org/jira/browse/AMQ-6678
 Project: ActiveMQ
  Issue Type: Bug
  Components: Broker, JMX
Affects Versions: 5.14.0
Reporter: Gary Tully
Assignee: Gary Tully
 Fix For: 5.15.0


concurrent calls to move selector matching messages from one queue to another 
or any wildcard type destructive JMX operation can break on concurrent 
invocation.
The move results in duplicates in the journal (waste of space) and incorrect 
return counts due to inflight messages being visible in error.
Two jmx consoles is enough to cause problems.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)


[jira] [Comment Edited] (AMQ-6671) ActiveMQ with PostgreSQL: Not deleting persistent messages sent to a topic

2017-05-09 Thread Gary Tully (JIRA)

[ 
https://issues.apache.org/jira/browse/AMQ-6671?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16002772#comment-16002772
 ] 

Gary Tully edited comment on AMQ-6671 at 5/9/17 2:28 PM:
-

[~anujkhandelwal90] it may be that the cleanup task needs to run a few times. 
messages for durable subs that are unreferenced are deleted periodically with 
the cleanupPeriod which defaults to 5mins. Then there is an iteration per each 
priority 1-10, messages with default priority 4 may take 20mins to clear by 
default

see: 
https://github.com/apache/activemq/blob/57795bafcea290c6879bb288822435c480a9212d/activemq-jdbc-store/src/main/java/org/apache/activemq/store/jdbc/adapter/DefaultJDBCAdapter.java#L829


was (Author: gtully):
[~anujkhandelwal90] it may be that the cleanup task needs to run a few times. 
messages for durable subs that are unreferenced are deleted periodically with 
the cleanupPeriod which defaults to 5mins. Then there is an iteration per each 
priority 1-10, messages with default priority 4 may take 20mins to clear by 
default

>  ActiveMQ with PostgreSQL: Not deleting persistent messages sent to a topic
> ---
>
> Key: AMQ-6671
> URL: https://issues.apache.org/jira/browse/AMQ-6671
> Project: ActiveMQ
>  Issue Type: Bug
>  Components: Broker, JDBC
>Affects Versions: 5.11.1
>Reporter: Anuj Khandelwal
>
> Using ActiveMQv5.11.1 
> I ran a test case where a durable subscriber was listening from a topic and a 
> publisher is publishing persistent messages. I observed that the messages 
> were stored in the DB (ACTIVEMQ_MSGS table) but even after successful 
> consumption by the consumer, these messages were not deleted from the backend 
> DB. However I have seen that this doesn't happen in case of queue. Persistent 
> messages sent to a queue are automatically deleted from the DB once 
> successfully consumed by the consumer. 
> More details: 
> 1. 1 producer 1 durable subscriber. Subscriber is in auto_ack mode. 
> 2. Producer sent 100 persistent messages to consumer 
> 3. Consumer successfully consumed them. 
> 4. DB still has those messages. 
> 5. Stop producer and consumer both, but messages are still there. 
> 6. Even after restarting broker, message does not get deleted. 
> This is a very generic use case which should never happen. It is also 
> reproducible.
> Thanks, 
> Anuj



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)


[jira] [Commented] (AMQ-6671) ActiveMQ with PostgreSQL: Not deleting persistent messages sent to a topic

2017-05-09 Thread Gary Tully (JIRA)

[ 
https://issues.apache.org/jira/browse/AMQ-6671?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16002772#comment-16002772
 ] 

Gary Tully commented on AMQ-6671:
-

[~anujkhandelwal90] it may be that the cleanup task needs to run a few times. 
messages for durable subs that are unreferenced are deleted periodically with 
the cleanupPeriod which defaults to 5mins. Then there is an iteration per each 
priority 1-10, messages with default priority 4 may take 20mins to clear by 
default

>  ActiveMQ with PostgreSQL: Not deleting persistent messages sent to a topic
> ---
>
> Key: AMQ-6671
> URL: https://issues.apache.org/jira/browse/AMQ-6671
> Project: ActiveMQ
>  Issue Type: Bug
>  Components: Broker, JDBC
>Affects Versions: 5.11.1
>Reporter: Anuj Khandelwal
>
> Using ActiveMQv5.11.1 
> I ran a test case where a durable subscriber was listening from a topic and a 
> publisher is publishing persistent messages. I observed that the messages 
> were stored in the DB (ACTIVEMQ_MSGS table) but even after successful 
> consumption by the consumer, these messages were not deleted from the backend 
> DB. However I have seen that this doesn't happen in case of queue. Persistent 
> messages sent to a queue are automatically deleted from the DB once 
> successfully consumed by the consumer. 
> More details: 
> 1. 1 producer 1 durable subscriber. Subscriber is in auto_ack mode. 
> 2. Producer sent 100 persistent messages to consumer 
> 3. Consumer successfully consumed them. 
> 4. DB still has those messages. 
> 5. Stop producer and consumer both, but messages are still there. 
> 6. Even after restarting broker, message does not get deleted. 
> This is a very generic use case which should never happen. It is also 
> reproducible.
> Thanks, 
> Anuj



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)


[jira] [Resolved] (AMQ-6670) KahaDB - Inconsistent error handling on corrupt journal reads

2017-05-05 Thread Gary Tully (JIRA)

 [ 
https://issues.apache.org/jira/browse/AMQ-6670?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Gary Tully resolved AMQ-6670.
-
Resolution: Fixed

> KahaDB - Inconsistent error handling on corrupt journal reads
> -
>
> Key: AMQ-6670
> URL: https://issues.apache.org/jira/browse/AMQ-6670
> Project: ActiveMQ
>  Issue Type: Bug
>  Components: KahaDB, Message Store
>Affects Versions: 5.14.0
>Reporter: Gary Tully
>Assignee: Gary Tully
> Fix For: 5.15.0
>
>
> When the journal is corrupt, for example if it is overwritten with null or 
> zero. The result of reading from corrupt locations is inconsistent. 
> Errors occur but not all result in a trip to the IOExceptionHander where the 
> option to stop the broker is available.
> ClassCastExceptions and RuntimeExceptions can bubble up to the cursors in 
> error.
> {code}ERROR | Failed to page in more queue messages  | 
> org.apache.activemq.broker.region.Queue | ActiveMQ BrokerService[X] 
> Task-300
> java.lang.RuntimeException: java.lang.RuntimeException: 
> java.lang.ClassCastException: 
> org.apache.activemq.store.kahadb.data.KahaTraceCommand cannot be cast to 
> org.apache.activemq.store.kahadb.data.KahaAddMessageCommand
>   at 
> org.apache.activemq.broker.region.cursors.AbstractStoreCursor.reset(AbstractStoreCursor.java:145){code}
> or {code}ERROR | Failed to load message at: 1084:12816246 | 
> org.apache.activemq.store.kahadb.KahaDBStore | ActiveMQ BrokerService[] 
> Task-702
> org.apache.activemq.protobuf.InvalidProtocolBufferException: Protocol message 
> contained an invalid tag (zero).
>   at 
> org.apache.activemq.protobuf.InvalidProtocolBufferException.invalidTag(InvalidProtocolBufferException.java:48)
>   at 
> org.apache.activemq.protobuf.CodedInputStream.readTag(CodedInputStream.java:75)
>  {code}



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)


[jira] [Created] (AMQ-6670) KahaDB - Inconsistent error handling on corrupt journal reads

2017-05-05 Thread Gary Tully (JIRA)
Gary Tully created AMQ-6670:
---

 Summary: KahaDB - Inconsistent error handling on corrupt journal 
reads
 Key: AMQ-6670
 URL: https://issues.apache.org/jira/browse/AMQ-6670
 Project: ActiveMQ
  Issue Type: Bug
  Components: KahaDB, Message Store
Affects Versions: 5.14.0
Reporter: Gary Tully
Assignee: Gary Tully
 Fix For: 5.15.0


When the journal is corrupt, for example if it is overwritten with null or 
zero. The result of reading from corrupt locations is inconsistent. 
Errors occur but not all result in a trip to the IOExceptionHander where the 
option to stop the broker is available.
ClassCastExceptions and RuntimeExceptions can bubble up to the cursors in error.

{code}ERROR | Failed to page in more queue messages  | 
org.apache.activemq.broker.region.Queue | ActiveMQ BrokerService[X] Task-300
java.lang.RuntimeException: java.lang.RuntimeException: 
java.lang.ClassCastException: 
org.apache.activemq.store.kahadb.data.KahaTraceCommand cannot be cast to 
org.apache.activemq.store.kahadb.data.KahaAddMessageCommand
at 
org.apache.activemq.broker.region.cursors.AbstractStoreCursor.reset(AbstractStoreCursor.java:145){code}

or {code}ERROR | Failed to load message at: 1084:12816246 | 
org.apache.activemq.store.kahadb.KahaDBStore | ActiveMQ BrokerService[] 
Task-702
org.apache.activemq.protobuf.InvalidProtocolBufferException: Protocol message 
contained an invalid tag (zero).
at 
org.apache.activemq.protobuf.InvalidProtocolBufferException.invalidTag(InvalidProtocolBufferException.java:48)
at 
org.apache.activemq.protobuf.CodedInputStream.readTag(CodedInputStream.java:75) 
{code}



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)


[jira] [Updated] (AMQ-6068) RAR - cannot reset clientId on pooled managed connection

2017-05-04 Thread Gary Tully (JIRA)

 [ 
https://issues.apache.org/jira/browse/AMQ-6068?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Gary Tully updated AMQ-6068:

Fix Version/s: 5.15.0

> RAR - cannot reset clientId on pooled managed connection
> 
>
> Key: AMQ-6068
> URL: https://issues.apache.org/jira/browse/AMQ-6068
> Project: ActiveMQ
>  Issue Type: Bug
>  Components: RAR
>Affects Versions: 5.12.0
>Reporter: Gary Tully
>Assignee: Gary Tully
> Fix For: 5.14.0, 5.15.0
>
>
> A managed connection returned to the pool has cleanup called, but cleanup is 
> not releasing the underlying activemq connection  info and clientid. On the 
> second attempt to reuse the connection, setting the id fails due to the pre 
> existing state in error.
> {code}[Server:eai01] 17:04:58,073 WARN  
> [org.jboss.jca.core.connectionmanager.pool.strategy.OnePool] 
> (jmsListener-734) IJ000613: Throwable while trying to match managed 
> connection, destroying connection: 
> org.jboss.jca.core.connectionmanager.listener.TxConnectionListener@3e11f08f[state=NORMAL
>  managed 
> connection=[org.apache.activemq.ra.ActiveMQManagedConnection@34bc339a,ActiveMQConnection
>  
> {id=ID:macbookpro-2.local-54186-1448868251571-1463:1,clientId=xxx,started=false}]
>  connection handles=0 lastUse=1448874205871 trackByTx=false 
> pool=org.jboss.jca.core.connectionmanager.pool.strategy.OnePool@2f2f39fd pool 
> internal 
> context=SemaphoreArrayListManagedConnectionPool@51eff7c[pool=ActiveMQConnectionFactory]
>  
> xaResource=XAResourceWrapperImpl@623206[xaResource=[org.apache.activemq.ra.ActiveMQManagedConnection$1@64df868a,TransactionContext{transactionId=null,connection=ActiveMQConnection
>  
> {id=ID:macbookpro-2.local-54186-1448868251571-1463:1,clientId=xxx,started=false}}]
>  pad=false overrideRmValue=null productName=ActiveMQ productVersion=5.12.1 
> jndiName=java:/ra/activeMQ/ActiveMQConnectionFactory] txSync=null]: 
> javax.resource.ResourceException: javax.jms.IllegalStateException: Setting 
> clientID on a used Connection is not allowed
> [Server:eai01]at 
> org.apache.activemq.ra.ActiveMQManagedConnectionFactory.matchManagedConnections(ActiveMQManagedConnectionFactory.java:217)
>  [activemq-ra-5.12.1.jar:5.12.1]
> [Server:eai01]at 
> org.jboss.jca.core.connectionmanager.pool.mcp.SemaphoreArrayListManagedConnectionPool.getConnection(SemaphoreArrayListManagedConnectionPool.java:314)
> [Server:eai01]at 
> org.jboss.jca.core.connectionmanager.pool.AbstractPool.getSimpleConnection(AbstractPool.java:453)
> [Server:eai01]at 
> org.jboss.jca.core.connectionmanager.pool.AbstractPool.getConnection(AbstractPool.java:425)
> [Server:eai01]at 
> org.jboss.jca.core.connectionmanager.AbstractConnectionManager.getManagedConnection(AbstractConnectionManager.java:354)
> [Server:eai01]at 
> org.jboss.jca.core.connectionmanager.tx.TxConnectionManagerImpl.getManagedConnection(TxConnectionManagerImpl.java:368)
> [Server:eai01]at 
> org.jboss.jca.core.connectionmanager.AbstractConnectionManager.allocateConnection(AbstractConnectionManager.java:510)
> [Server:eai01]at 
> org.apache.activemq.ra.ActiveMQConnectionFactory.createConnection(ActiveMQConnectionFactory.java:94)
>  [activemq-ra-5.12.1.jar:5.12.1]
> [Server:eai01]at 
> org.apache.activemq.ra.ActiveMQConnectionFactory.createConnection(ActiveMQConnectionFactory.java:78)
>  [activemq-ra-5.12.1.jar:5.12.1]{code}



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)


[jira] [Commented] (AMQ-6068) RAR - cannot reset clientId on pooled managed connection

2017-05-04 Thread Gary Tully (JIRA)

[ 
https://issues.apache.org/jira/browse/AMQ-6068?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15996446#comment-15996446
 ] 

Gary Tully commented on AMQ-6068:
-

thanks for the feedback. It may make sense to have this full cleanup 
conditional on a user specifying a client id.
However, the old cleanup would remove any consumer info, so the advisory load 
would be the same;
Usually only demand information, ie: consumer add/remove is propagated across a 
network.

There may be something else in the mix that is leading to the excessive memory 
usage.

> RAR - cannot reset clientId on pooled managed connection
> 
>
> Key: AMQ-6068
> URL: https://issues.apache.org/jira/browse/AMQ-6068
> Project: ActiveMQ
>  Issue Type: Bug
>  Components: RAR
>Affects Versions: 5.12.0
>Reporter: Gary Tully
>Assignee: Gary Tully
> Fix For: 5.14.0
>
>
> A managed connection returned to the pool has cleanup called, but cleanup is 
> not releasing the underlying activemq connection  info and clientid. On the 
> second attempt to reuse the connection, setting the id fails due to the pre 
> existing state in error.
> {code}[Server:eai01] 17:04:58,073 WARN  
> [org.jboss.jca.core.connectionmanager.pool.strategy.OnePool] 
> (jmsListener-734) IJ000613: Throwable while trying to match managed 
> connection, destroying connection: 
> org.jboss.jca.core.connectionmanager.listener.TxConnectionListener@3e11f08f[state=NORMAL
>  managed 
> connection=[org.apache.activemq.ra.ActiveMQManagedConnection@34bc339a,ActiveMQConnection
>  
> {id=ID:macbookpro-2.local-54186-1448868251571-1463:1,clientId=xxx,started=false}]
>  connection handles=0 lastUse=1448874205871 trackByTx=false 
> pool=org.jboss.jca.core.connectionmanager.pool.strategy.OnePool@2f2f39fd pool 
> internal 
> context=SemaphoreArrayListManagedConnectionPool@51eff7c[pool=ActiveMQConnectionFactory]
>  
> xaResource=XAResourceWrapperImpl@623206[xaResource=[org.apache.activemq.ra.ActiveMQManagedConnection$1@64df868a,TransactionContext{transactionId=null,connection=ActiveMQConnection
>  
> {id=ID:macbookpro-2.local-54186-1448868251571-1463:1,clientId=xxx,started=false}}]
>  pad=false overrideRmValue=null productName=ActiveMQ productVersion=5.12.1 
> jndiName=java:/ra/activeMQ/ActiveMQConnectionFactory] txSync=null]: 
> javax.resource.ResourceException: javax.jms.IllegalStateException: Setting 
> clientID on a used Connection is not allowed
> [Server:eai01]at 
> org.apache.activemq.ra.ActiveMQManagedConnectionFactory.matchManagedConnections(ActiveMQManagedConnectionFactory.java:217)
>  [activemq-ra-5.12.1.jar:5.12.1]
> [Server:eai01]at 
> org.jboss.jca.core.connectionmanager.pool.mcp.SemaphoreArrayListManagedConnectionPool.getConnection(SemaphoreArrayListManagedConnectionPool.java:314)
> [Server:eai01]at 
> org.jboss.jca.core.connectionmanager.pool.AbstractPool.getSimpleConnection(AbstractPool.java:453)
> [Server:eai01]at 
> org.jboss.jca.core.connectionmanager.pool.AbstractPool.getConnection(AbstractPool.java:425)
> [Server:eai01]at 
> org.jboss.jca.core.connectionmanager.AbstractConnectionManager.getManagedConnection(AbstractConnectionManager.java:354)
> [Server:eai01]at 
> org.jboss.jca.core.connectionmanager.tx.TxConnectionManagerImpl.getManagedConnection(TxConnectionManagerImpl.java:368)
> [Server:eai01]at 
> org.jboss.jca.core.connectionmanager.AbstractConnectionManager.allocateConnection(AbstractConnectionManager.java:510)
> [Server:eai01]at 
> org.apache.activemq.ra.ActiveMQConnectionFactory.createConnection(ActiveMQConnectionFactory.java:94)
>  [activemq-ra-5.12.1.jar:5.12.1]
> [Server:eai01]at 
> org.apache.activemq.ra.ActiveMQConnectionFactory.createConnection(ActiveMQConnectionFactory.java:78)
>  [activemq-ra-5.12.1.jar:5.12.1]{code}



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)


[jira] [Commented] (AMQ-6667) Many instances of "duplicate message ... from cursor" redirecting to dlq

2017-05-03 Thread Gary Tully (JIRA)

[ 
https://issues.apache.org/jira/browse/AMQ-6667?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15994642#comment-15994642
 ] 

Gary Tully commented on AMQ-6667:
-

increasing the audit capacity; policyEntry maxProducersToAudit=200 ensures the 
cursor audit tracks up to 200 producers and traps the duplicate from the store. 
In addition, disabling concurrentStoreAndDispatch avoids the issue.

The root cause is enabling the cursor cache when there are pending sends 
leaving a possible scenario where a sync send is lost behind sufficient async 
sends that fill the cache. Reverting to the store in this case results in 
duplicates.

> Many instances of "duplicate message ... from cursor" redirecting to dlq
> 
>
> Key: AMQ-6667
> URL: https://issues.apache.org/jira/browse/AMQ-6667
> Project: ActiveMQ
>  Issue Type: Bug
>  Components: KahaDB
>Affects Versions: 5.14.0
>Reporter: Gary Tully
>Assignee: Gary Tully
> Fix For: 5.15.0
>
>
> In a high throughput scenario on a single destination there can be many 
> warnings of this kind:
> {code}
> [2017-03-21 09:51:37,548] WARN ActiveMQ BrokerService[localhost] Task-5 Queue 
> - queue://TEST, subscriptions=10, memory=102%, size=399, 
> pending=0, duplicate message ActiveMQTextMessage {commandId = 72, 
> responseRequired = true, 
> messageId = ID:Mac.fritz.box-64479-1490086286066-183:1:1:1:68, 
> originalDestination = null, originalTransactionId = null, 
> producerId = ID:Mac.fritz.box-64479-1490086286066-183:1:1:1, destination = 
> queue://TEST, transactionId = null, expiration = 0, 
> timestamp = 1490086297427, arrival = 0, brokerInTime = 1490086297427, 
> brokerOutTime = 1490086297427, correlationId = null, replyTo = null, 
> persistent = true, 
> type = null, priority = 4, groupID = null, groupSequence = 0, 
> targetConsumerId = null, compressed = false, userID = null, 
> content = org.apache.activemq.util.ByteSequence@8672edc, marshalledProperties 
> = null, dataStructure = null, redeliveryCounter = 0, size = 50216, properties 
> = null, 
> readOnlyProperties = false, readOnlyBody = false, droppable = false, 
> jmsXGroupFirstForConsumer = false, text = ...} 
> from cursor, is cursor audit disabled or too constrained? Redirecting to dlq
> {code}
> The broker loads messages twice into the cursor.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)


[jira] [Created] (AMQ-6667) Many instances of "duplicate message ... from cursor" redirecting to dlq

2017-05-03 Thread Gary Tully (JIRA)
Gary Tully created AMQ-6667:
---

 Summary: Many instances of "duplicate message ... from cursor" 
redirecting to dlq
 Key: AMQ-6667
 URL: https://issues.apache.org/jira/browse/AMQ-6667
 Project: ActiveMQ
  Issue Type: Bug
  Components: KahaDB
Affects Versions: 5.14.0
Reporter: Gary Tully
Assignee: Gary Tully
 Fix For: 5.15.0


In a high throughput scenario on a single destination there can be many 
warnings of this kind:

{code}
[2017-03-21 09:51:37,548] WARN ActiveMQ BrokerService[localhost] Task-5 Queue - 
queue://TEST, subscriptions=10, memory=102%, size=399, 
pending=0, duplicate message ActiveMQTextMessage {commandId = 72, 
responseRequired = true, 
messageId = ID:Mac.fritz.box-64479-1490086286066-183:1:1:1:68, 
originalDestination = null, originalTransactionId = null, 
producerId = ID:Mac.fritz.box-64479-1490086286066-183:1:1:1, destination = 
queue://TEST, transactionId = null, expiration = 0, 
timestamp = 1490086297427, arrival = 0, brokerInTime = 1490086297427, 
brokerOutTime = 1490086297427, correlationId = null, replyTo = null, persistent 
= true, 
type = null, priority = 4, groupID = null, groupSequence = 0, targetConsumerId 
= null, compressed = false, userID = null, 
content = org.apache.activemq.util.ByteSequence@8672edc, marshalledProperties = 
null, dataStructure = null, redeliveryCounter = 0, size = 50216, properties = 
null, 
readOnlyProperties = false, readOnlyBody = false, droppable = false, 
jmsXGroupFirstForConsumer = false, text = ...} 
from cursor, is cursor audit disabled or too constrained? Redirecting to dlq
{code}

The broker loads messages twice into the cursor.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)


[jira] [Resolved] (AMQ-6665) certificate-based authentication on network bridge fails for nio+ssl protocol

2017-04-27 Thread Gary Tully (JIRA)

 [ 
https://issues.apache.org/jira/browse/AMQ-6665?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Gary Tully resolved AMQ-6665.
-
Resolution: Fixed

issue was nio+ssl transport not extending SslTtransport but since AMQ-6339 the 
relevant getPeerCerts is pushed back to tcpTransport. Now checking for that in 
the network bridge

> certificate-based authentication on network bridge fails for nio+ssl protocol
> -
>
> Key: AMQ-6665
> URL: https://issues.apache.org/jira/browse/AMQ-6665
> Project: ActiveMQ
>  Issue Type: Bug
>  Components: networkbridge
>Affects Versions: 5.14.0
>Reporter: Gary Tully
>Assignee: Gary Tully
> Fix For: 5.15.0
>
>
> client certificate authentication works in the following scenario:
> {code}
> Broker A
> ...
>  configuration="activemq"
> sslConfiguration="CertLogin" />
> ...
>  uri="ssl://0.0.0.0:61618?needClientAuth=truewantClientAuth=true"/>
> {code}
> Broker B
> {code}
> ...
> networkConnector uri="static://(ssl://localhost:61618)" 
> name="myNetworkConnector" duplex="true" consumerTTL="2" messageTTL="100" 
> dynamicOnly="false">
> ...
> {code}
> But if you change the transport to nio+ssl, the network connector fails with 
> the following message:
> {code}
> INFO | Stopping vm://localhosta#0 because Failed with SecurityException: User 
> name [null] or password is invalid.
> {code}



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)


[jira] [Created] (AMQ-6665) certificate-based authentication on network bridge fails for nio+ssl protocol

2017-04-27 Thread Gary Tully (JIRA)
Gary Tully created AMQ-6665:
---

 Summary: certificate-based authentication on network bridge fails 
for nio+ssl protocol
 Key: AMQ-6665
 URL: https://issues.apache.org/jira/browse/AMQ-6665
 Project: ActiveMQ
  Issue Type: Bug
  Components: networkbridge
Affects Versions: 5.14.0
Reporter: Gary Tully
Assignee: Gary Tully
 Fix For: 5.15.0


client certificate authentication works in the following scenario:
{code}
Broker A
...

...

{code}
Broker B
{code}
...
networkConnector uri="static://(ssl://localhost:61618)" 
name="myNetworkConnector" duplex="true" consumerTTL="2" messageTTL="100" 
dynamicOnly="false">
...
{code}

But if you change the transport to nio+ssl, the network connector fails with 
the following message:
{code}
INFO | Stopping vm://localhosta#0 because Failed with SecurityException: User 
name [null] or password is invalid.
{code}




--
This message was sent by Atlassian JIRA
(v6.3.15#6346)


[jira] [Commented] (AMQ-6654) Durable subscriber pendingQueueSize not flushed with KahaDB after force-kill of broker

2017-04-10 Thread Gary Tully (JIRA)

[ 
https://issues.apache.org/jira/browse/AMQ-6654?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15963599#comment-15963599
 ] 

Gary Tully commented on AMQ-6654:
-

this may be resolved via AMQ-6652

> Durable subscriber pendingQueueSize not flushed with KahaDB after force-kill 
> of broker
> --
>
> Key: AMQ-6654
> URL: https://issues.apache.org/jira/browse/AMQ-6654
> Project: ActiveMQ
>  Issue Type: Bug
>  Components: KahaDB
>Affects Versions: 5.14.4
> Environment: Reproducible in Linux and Windows
>Reporter: Justin Reock
> Attachments: localhost___Durable_Topic_Subscribers.jpg
>
>
> This is related to AMQ-5960, marked as fixed, but the issue persists.  
> It is very easy to reproduce.
> 1)  Start up ActiveMQ
> 2)  Produce load into a topic
> 3)  Connect a few durable subscribers to the topic
> 4)  Force-terminate the running broker instance 
> 5)  Restart the broker (without load)
> 6)  Allow durable subscribers to reconnect, and attempt to drain the durable 
> subscription queues
> In almost every case, you will see the pending queue sizes of the durable 
> subscribers with lingering "messages."  I say that in quotes, because I have 
> been able to prove that all the messages are in fact delivered to the 
> clients, there's no message loss, but, KahaDB still thinks that there are 
> messages waiting to be dispatched.
> This causes KahaDB to be unable to clean up extents and ultimately will cause 
> the KahaDB store to grow out of control, hence the "Major" severity despite 
> no actual message loss occurring.
> The only way to recover from the situation is to delete and recreate the 
> subscriber, which does allow KahaDB to clean itself up.
> I have tried several things, including disabling the new ackCompation 
> functionality, significantly reducing the time between checkpoints, reducing 
> the size of the index cache to force more frequent flushes to disk, but none 
> of those completely eliminate the problem.
> This does not happen with LevelDB, but, of course LevelDB has been 
> deprecated, so it's not a good solution to switch to that.  Does not happen 
> with JDBC either, but, JDBC is as we know significantly slower than KahaDB, 
> so ideally we'd see this fixed in KahaDB.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)


[jira] [Created] (AMQ-6652) KahaDB checkpoint index page flush skips metadata page

2017-04-10 Thread Gary Tully (JIRA)
Gary Tully created AMQ-6652:
---

 Summary: KahaDB checkpoint index page flush skips metadata page
 Key: AMQ-6652
 URL: https://issues.apache.org/jira/browse/AMQ-6652
 Project: ActiveMQ
  Issue Type: Bug
  Components: KahaDB
Affects Versions: 5.14.0
Reporter: Gary Tully
Assignee: Gary Tully
 Fix For: 5.15.0


Disk image of the metadata is one checkpoint behind. This can surface on 
restart after a kill -9 with the ackMessageFileMap referencing a deleted file 
in error.
{code} Exception on start: java.io.IOException: Detected missing journal 
files.{code}




--
This message was sent by Atlassian JIRA
(v6.3.15#6346)


[jira] [Resolved] (AMQ-6646) default blob strategy error reporting should include url

2017-04-05 Thread Gary Tully (JIRA)

 [ 
https://issues.apache.org/jira/browse/AMQ-6646?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Gary Tully resolved AMQ-6646.
-
Resolution: Fixed

> default blob strategy error reporting should include url
> 
>
> Key: AMQ-6646
> URL: https://issues.apache.org/jira/browse/AMQ-6646
> Project: ActiveMQ
>  Issue Type: Bug
>  Components: JMS client
>Affects Versions: 5.14.0
>Reporter: Gary Tully
>Assignee: Gary Tully
>Priority: Minor
> Fix For: 5.15.0
>
>
> Default blob upload strategy can do a little better at reporting errors by 
> including the url such that it is clear what url in in the mix.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)


[jira] [Created] (AMQ-6646) default blob strategy error reporting should include url

2017-04-04 Thread Gary Tully (JIRA)
Gary Tully created AMQ-6646:
---

 Summary: default blob strategy error reporting should include url
 Key: AMQ-6646
 URL: https://issues.apache.org/jira/browse/AMQ-6646
 Project: ActiveMQ
  Issue Type: Bug
  Components: JMS client
Affects Versions: 5.14.0
Reporter: Gary Tully
Assignee: Gary Tully
Priority: Minor
 Fix For: 5.15.0


Default blob upload strategy can do a little better at reporting errors by 
including the url such that it is clear what url in in the mix.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)


[jira] [Commented] (AMQ-5558) Make some activemq jar executable and able to send/receive messages

2017-04-04 Thread Gary Tully (JIRA)

[ 
https://issues.apache.org/jira/browse/AMQ-5558?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15955269#comment-15955269
 ] 

Gary Tully commented on AMQ-5558:
-

refinement
https://git-wip-us.apache.org/repos/asf?p=activemq.git;a=commit;h=09acc504f18cdecbdf9f947ef3d07deafa2ec0b2

> Make some activemq jar executable and able to send/receive messages
> ---
>
> Key: AMQ-5558
> URL: https://issues.apache.org/jira/browse/AMQ-5558
> Project: ActiveMQ
>  Issue Type: New Feature
>Affects Versions: 5.11.0
>Reporter: Dejan Bosanac
>Assignee: Dejan Bosanac
> Fix For: 5.12.0
>
>
> It would be nice to have basic verification/example tool builded directly in 
> activemq-client.jar, so that folks can do something like 
> {code}java -jar lib/activemq-client-xxx.jar producer
> java -jar lib/activemq-client-xxx.jar consumer{code}



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)


[jira] [Resolved] (AMQ-6645) activemq:browse command does not display Header - OriginalDestination

2017-04-04 Thread Gary Tully (JIRA)

 [ 
https://issues.apache.org/jira/browse/AMQ-6645?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Gary Tully resolved AMQ-6645.
-
Resolution: Fixed

https://git-wip-us.apache.org/repos/asf?p=activemq.git;a=commit;h=4a3d117d9693480c4a6564dc2c349317d16a14b3

> activemq:browse command does not display Header - OriginalDestination
> -
>
> Key: AMQ-6645
> URL: https://issues.apache.org/jira/browse/AMQ-6645
> Project: ActiveMQ
>  Issue Type: Bug
>Affects Versions: 5.14.0
>Reporter: Gary Tully
>Assignee: Gary Tully
>Priority: Minor
> Fix For: 5.15.0
>
>
> The jmx view correctly exposes the originaDestination attribute but the 
> browse command does not map this property in error.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)


[jira] [Created] (AMQ-6645) activemq:browse command does not display Header - OriginalDestination

2017-04-04 Thread Gary Tully (JIRA)
Gary Tully created AMQ-6645:
---

 Summary: activemq:browse command does not display Header - 
OriginalDestination
 Key: AMQ-6645
 URL: https://issues.apache.org/jira/browse/AMQ-6645
 Project: ActiveMQ
  Issue Type: Bug
Affects Versions: 5.14.0
Reporter: Gary Tully
Assignee: Gary Tully
Priority: Minor
 Fix For: 5.15.0


The jmx view correctly exposes the originaDestination attribute but the browse 
command does not map this property in error.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)


[jira] [Commented] (AMQ-6494) Exceptions and timeouts during shutdown of connectors

2017-04-04 Thread Gary Tully (JIRA)

[ 
https://issues.apache.org/jira/browse/AMQ-6494?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15955123#comment-15955123
 ] 

Gary Tully commented on AMQ-6494:
-

reverted 
https://git-wip-us.apache.org/repos/asf?p=activemq.git;a=commit;h=0f7561e85ab18912ce65120dde465aef5acda12a
 and added a fix to the vm transport such that it won't ignore exceptions. I 
think that is the root cause of the original test delay on stop via the 
shutdown hook.

https://git-wip-us.apache.org/repos/asf?p=activemq.git;a=commit;h=729766e4925ec05ec05410887df146dd27adbbf4


> Exceptions and timeouts during shutdown of connectors
> -
>
> Key: AMQ-6494
> URL: https://issues.apache.org/jira/browse/AMQ-6494
> Project: ActiveMQ
>  Issue Type: Bug
>  Components: Broker
>Affects Versions: 5.14.0
>Reporter: Hadrian Zbarcea
>Assignee: Hadrian Zbarcea
> Fix For: 5.15.0
>
>
> During shutdown there are a number of BrokerStoppedException(s) thrown 
> unnecessarily and unnecessary timeouts.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)


[jira] [Resolved] (AMQ-6644) Incorrect logging from KahaDB cleanup task when enableAckCompaction=true

2017-04-04 Thread Gary Tully (JIRA)

 [ 
https://issues.apache.org/jira/browse/AMQ-6644?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Gary Tully resolved AMQ-6644.
-
Resolution: Fixed

> Incorrect logging from KahaDB cleanup task when enableAckCompaction=true
> 
>
> Key: AMQ-6644
> URL: https://issues.apache.org/jira/browse/AMQ-6644
> Project: ActiveMQ
>  Issue Type: Bug
>  Components: KahaDB
>Affects Versions: 5.14.0
>Reporter: Gary Tully
>Assignee: Gary Tully
>Priority: Minor
> Fix For: 5.15.0
>
>
> When KahaDB is configured for enableAckCompaction=true, it moves acks into a 
> new journal file. Such journal file will only contains the compacted acks, it 
> won't be used to hold messages. 
> If the actual journal (to which new messages are written to) has a lower 
> number than the journal files that were created during ack compaction, the 
> periodic cleanup task will not delete any journals that are higher than the 
> actual journal file. So multiple journal files may remain active on disk 
> although there is no single unconsumed message on the broker. 
> This in itself is okay, however when trace logging for the cleanup task is 
> enabled, it reports differently, namely that it is going to delete these 
> journals, where in fact it is not deleting them.
> E.g. lets take the following example.
> The KahaDB folder on disk consists of 
> {code}
> [kahadb]$ ls -alh
> total 54M
> drwxr-xr-x.  2 fuse fuse  128K Feb  1 15:50 .
> drwxr-xr-x. 13 fuse fuse  4.0K Nov  4 13:14 ..
> -rw-r--r--.  1 fuse fuse   32M Feb  1 16:26 db-65.log
> -rw-r--r--.  1 fuse fuse  4.6M Feb  1 15:24 db-66.log
> -rw-r--r--.  1 fuse fuse  4.5M Feb  1 15:29 db-67.log
> -rw-r--r--.  1 fuse fuse  4.6M Feb  1 15:34 db-68.log
> -rw-r--r--.  1 fuse fuse  4.5M Feb  1 15:39 db-69.log
> -rw-r--r--.  1 fuse fuse  2.5M Feb  1 16:26 db.data
> -rw-r--r--.  1 fuse fuse   32M Feb  1 14:51 db-log.template
> -rw-r--r--.  1 fuse fuse 1002K Feb  1 16:26 db.redo
> -rw-r--r--.  1 fuse fuse 8 Feb  1 14:51 lock
> {code}
> and the logging says:
> {code}
> Last update: 65:26636520, full gc candidates set: [65, 66, 67, 68, 69]
> gc candidates after producerSequenceIdTrackerLocation:65, [66, 67, 68, 69]
> gc candidates after ackMessageFileMapLocation:65, [66, 67, 68, 69]
> ...
> gc candidates: [66, 67, 68, 69]
> ackMessageFileMap: {65=[65]}
> Cleanup removing the data files: [66, 67, 68, 69]
> {code}
> In this example the actual journal file to which msgs are written is 65. The 
> journal files 66-69 were created during ack compaction and have a higher 
> number than 65.
> So KahaDB won't delete the journals 66-69 until the actual journal file is 
> moved to journal 70, despite that there are no unconsumed messages on the 
> broker.
> However the last log line suggests that it will remove the journals 66-69, 
> but they will not get removed due to rule above. 
> We should align the logging output with the logic used to determine which 
> journals to delete.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)


[jira] [Created] (AMQ-6644) Incorrect logging from KahaDB cleanup task when enableAckCompaction=true

2017-04-04 Thread Gary Tully (JIRA)
Gary Tully created AMQ-6644:
---

 Summary: Incorrect logging from KahaDB cleanup task when 
enableAckCompaction=true
 Key: AMQ-6644
 URL: https://issues.apache.org/jira/browse/AMQ-6644
 Project: ActiveMQ
  Issue Type: Bug
  Components: KahaDB
Affects Versions: 5.14.0
Reporter: Gary Tully
Assignee: Gary Tully
Priority: Minor
 Fix For: 5.15.0


When KahaDB is configured for enableAckCompaction=true, it moves acks into a 
new journal file. Such journal file will only contains the compacted acks, it 
won't be used to hold messages. 

If the actual journal (to which new messages are written to) has a lower number 
than the journal files that were created during ack compaction, the periodic 
cleanup task will not delete any journals that are higher than the actual 
journal file. So multiple journal files may remain active on disk although 
there is no single unconsumed message on the broker. 
This in itself is okay, however when trace logging for the cleanup task is 
enabled, it reports differently, namely that it is going to delete these 
journals, where in fact it is not deleting them.

E.g. lets take the following example.
The KahaDB folder on disk consists of 
{code}
[kahadb]$ ls -alh
total 54M
drwxr-xr-x.  2 fuse fuse  128K Feb  1 15:50 .
drwxr-xr-x. 13 fuse fuse  4.0K Nov  4 13:14 ..
-rw-r--r--.  1 fuse fuse   32M Feb  1 16:26 db-65.log
-rw-r--r--.  1 fuse fuse  4.6M Feb  1 15:24 db-66.log
-rw-r--r--.  1 fuse fuse  4.5M Feb  1 15:29 db-67.log
-rw-r--r--.  1 fuse fuse  4.6M Feb  1 15:34 db-68.log
-rw-r--r--.  1 fuse fuse  4.5M Feb  1 15:39 db-69.log
-rw-r--r--.  1 fuse fuse  2.5M Feb  1 16:26 db.data
-rw-r--r--.  1 fuse fuse   32M Feb  1 14:51 db-log.template
-rw-r--r--.  1 fuse fuse 1002K Feb  1 16:26 db.redo
-rw-r--r--.  1 fuse fuse 8 Feb  1 14:51 lock
{code}

and the logging says:

{code}
Last update: 65:26636520, full gc candidates set: [65, 66, 67, 68, 69]
gc candidates after producerSequenceIdTrackerLocation:65, [66, 67, 68, 69]
gc candidates after ackMessageFileMapLocation:65, [66, 67, 68, 69]
...
gc candidates: [66, 67, 68, 69]
ackMessageFileMap: {65=[65]}
Cleanup removing the data files: [66, 67, 68, 69]
{code}

In this example the actual journal file to which msgs are written is 65. The 
journal files 66-69 were created during ack compaction and have a higher number 
than 65.
So KahaDB won't delete the journals 66-69 until the actual journal file is 
moved to journal 70, despite that there are no unconsumed messages on the 
broker.
However the last log line suggests that it will remove the journals 66-69, but 
they will not get removed due to rule above. 

We should align the logging output with the logic used to determine which 
journals to delete.





--
This message was sent by Atlassian JIRA
(v6.3.15#6346)


[jira] [Resolved] (AMQ-6643) Shared virtual topic wildcard consumers receive spurious and duplicate messages

2017-04-04 Thread Gary Tully (JIRA)

 [ 
https://issues.apache.org/jira/browse/AMQ-6643?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Gary Tully resolved AMQ-6643.
-
Resolution: Fixed

> Shared virtual topic wildcard consumers receive spurious and duplicate 
> messages
> ---
>
> Key: AMQ-6643
> URL: https://issues.apache.org/jira/browse/AMQ-6643
> Project: ActiveMQ
>  Issue Type: Bug
>  Components: Broker
>Affects Versions: 5.14.0
>Reporter: Gary Tully
>Assignee: Gary Tully
> Fix For: 5.15.0
>
>
> Virtual topic wildcard subscriber queues are physical queues, however the 
> matching of destinations to new subscriptions matches based on the wildcard 
> destination in error. Causing subs to get subscribed in error and causing 
> duplicate subscriptions.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)


[jira] [Commented] (AMQ-6643) Shared virtual topic wildcard consumers receive spurious and duplicate messages

2017-04-04 Thread Gary Tully (JIRA)

[ 
https://issues.apache.org/jira/browse/AMQ-6643?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15954873#comment-15954873
 ] 

Gary Tully commented on AMQ-6643:
-

The restrictions introduced in https://issues.apache.org/jira/browse/AMQ-5594 
need to be more selective based on a more exact and consistent destination 
comparator.

> Shared virtual topic wildcard consumers receive spurious and duplicate 
> messages
> ---
>
> Key: AMQ-6643
> URL: https://issues.apache.org/jira/browse/AMQ-6643
> Project: ActiveMQ
>  Issue Type: Bug
>  Components: Broker
>Affects Versions: 5.14.0
>Reporter: Gary Tully
>Assignee: Gary Tully
> Fix For: 5.15.0
>
>
> Virtual topic wildcard subscriber queues are physical queues, however the 
> matching of destinations to new subscriptions matches based on the wildcard 
> destination in error. Causing subs to get subscribed in error and causing 
> duplicate subscriptions.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)


[jira] [Created] (AMQ-6643) Shared virtual topic wildcard consumers receive spurious and duplicate messages

2017-04-04 Thread Gary Tully (JIRA)
Gary Tully created AMQ-6643:
---

 Summary: Shared virtual topic wildcard consumers receive spurious 
and duplicate messages
 Key: AMQ-6643
 URL: https://issues.apache.org/jira/browse/AMQ-6643
 Project: ActiveMQ
  Issue Type: Bug
  Components: Broker
Affects Versions: 5.14.0
Reporter: Gary Tully
Assignee: Gary Tully
 Fix For: 5.15.0


Virtual topic wildcard subscriber queues are physical queues, however the 
matching of destinations to new subscriptions matches based on the wildcard 
destination in error. Causing subs to get subscribed in error and causing 
duplicate subscriptions.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)


[jira] [Commented] (AMQ-6640) network of brokers, duplex connector, network consumers not registered on destination - hung bridge

2017-03-30 Thread Gary Tully (JIRA)

[ 
https://issues.apache.org/jira/browse/AMQ-6640?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=1594#comment-1594
 ] 

Gary Tully commented on AMQ-6640:
-

network connector options suppressDuplicate[Queue|Topic]Subscriptions (which is 
used in ring topologies (not the norm)) requires the default true value for 
attribute dispatchAsync.


> network of brokers, duplex connector, network consumers not registered on 
> destination - hung bridge
> ---
>
> Key: AMQ-6640
> URL: https://issues.apache.org/jira/browse/AMQ-6640
> Project: ActiveMQ
>  Issue Type: Bug
>  Components: networkbridge
>Affects Versions: 5.14.0
>Reporter: Gary Tully
>Assignee: Gary Tully
> Fix For: 5.15.0
>
>
> Occasional hang in a network bridge under heavy load with large pending 
> backlog across multiple destinations.
> Hung network bridge threads blocked through crosstalk between consumer demand 
> and message forwarding traffic leading to blocked writes.
> Stack traces of the form, Broker1
> {code}
> ~~~
> "ActiveMQ Transport: tcp:///:51460@61616" daemon prio=10 
> tid=0x7efbbc011000 nid=0x42be waiting on condition [0x7efbb1a58000]
>java.lang.Thread.State: WAITING (parking)
>   at sun.misc.Unsafe.park(Native Method)
>   - parking to wait for  <0xc61a2118> (a 
> java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
>   at java.util.concurrent.locks.LockSupport.park(LockSupport.java:186)
>   at 
> java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2043)
>   at 
> java.util.concurrent.ArrayBlockingQueue.take(ArrayBlockingQueue.java:374)
>   at 
> org.apache.activemq.transport.FutureResponse.getResult(FutureResponse.java:48)
>   at 
> org.apache.activemq.transport.ResponseCorrelator.request(ResponseCorrelator.java:87)
>   at 
> org.apache.activemq.network.DemandForwardingBridgeSupport.addSubscription(DemandForwardingBridgeSupport.java:914)
>   at 
> org.apache.activemq.network.DemandForwardingBridgeSupport.addConsumerInfo(DemandForwardingBridgeSupport.java:1187)
>   at 
> org.apache.activemq.network.DemandForwardingBridgeSupport.serviceRemoteConsumerAdvisory(DemandForwardingBridgeSupport.java:772)
>   - locked <0xc25ed058> (a java.net.URI)
>   at 
> org.apache.activemq.network.DemandForwardingBridgeSupport.serviceRemoteCommand(DemandForwardingBridgeSupport.java:623)
>   at 
> org.apache.activemq.network.DemandForwardingBridgeSupport$3.onCommand(DemandForwardingBridgeSupport.java:225)
>   at 
> org.apache.activemq.transport.ResponseCorrelator.onCommand(ResponseCorrelator.java:116)
>   at 
> org.apache.activemq.transport.MutexTransport.onCommand(MutexTransport.java:50)
>   at 
> org.apache.activemq.transport.WireFormatNegotiator.onCommand(WireFormatNegotiator.java:125)
>   at 
> org.apache.activemq.transport.AbstractInactivityMonitor.onCommand(AbstractInactivityMonitor.java:300)
>   at 
> org.apache.activemq.transport.TransportSupport.doConsume(TransportSupport.java:83)
>   at 
> org.apache.activemq.transport.tcp.TcpTransport.doRun(TcpTransport.java:214)
>   at 
> org.apache.activemq.transport.tcp.TcpTransport.run(TcpTransport.java:196)
>   at java.lang.Thread.run(Thread.java:724)
> ~~~
> ~~~
> Dump 1 : "ActiveMQ VMTransport: vm://broker1#8-2" daemon prio=10 
> tid=0x7efbbc11b800 nid=0x42c4 runnable [0x7efbb1554000]
> java.lang.Thread.State: RUNNABLE
> at java.net.SocketOutputStream.socketWrite0(Native Method)
> at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:109)
> at java.net.SocketOutputStream.write(SocketOutputStream.java:153)
> at 
> org.apache.activemq.transport.tcp.TcpBufferedOutputStream.flush(TcpBufferedOutputStream.java:115)
> at java.io.DataOutputStream.flush(DataOutputStream.java:123)
> at 
> org.apache.activemq.transport.tcp.TcpTransport.oneway(TcpTransport.java:176)
> at 
> org.apache.activemq.transport.AbstractInactivityMonitor.doOnewaySend(AbstractInactivityMonitor.java:334)
> at 
> org.apache.activemq.transport.AbstractInactivityMonitor.oneway(AbstractInactivityMonitor.java:316)
> at 
> org.apache.activemq.transport.TransportFilter.oneway(TransportFilter.java:85)
> at 
> org.apache.activemq.transport.WireFormatNegotiator.oneway(WireFormatNegotiator.java:116)
> at 
> org.apache.activemq.transport.MutexTransport.oneway(MutexTransport.java:68)
> at 
> org.apache.activemq.transport.ResponseCorrelator.oneway(ResponseCorrelator.java:60)
> at 
> org.apache.activemq.network.DemandForwardingBridgeSupport.serviceLocalCommand(DemandForwardingBridgeSupport.java:994)
> at 
> 

[jira] [Resolved] (AMQ-6640) network of brokers, duplex connector, network consumers not registered on destination - hung bridge

2017-03-30 Thread Gary Tully (JIRA)

 [ 
https://issues.apache.org/jira/browse/AMQ-6640?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Gary Tully resolved AMQ-6640.
-
Resolution: Fixed

network connector internal vm transports are a all sync with the exception of 
the duplex end forwarding transport such that the vm dispatch thread can 
compete with inbound responses for acks without blocking

> network of brokers, duplex connector, network consumers not registered on 
> destination - hung bridge
> ---
>
> Key: AMQ-6640
> URL: https://issues.apache.org/jira/browse/AMQ-6640
> Project: ActiveMQ
>  Issue Type: Bug
>  Components: networkbridge
>Affects Versions: 5.14.0
>Reporter: Gary Tully
>Assignee: Gary Tully
> Fix For: 5.15.0
>
>
> Occasional hang in a network bridge under heavy load with large pending 
> backlog across multiple destinations.
> Hung network bridge threads blocked through crosstalk between consumer demand 
> and message forwarding traffic leading to blocked writes.
> Stack traces of the form, Broker1
> {code}
> ~~~
> "ActiveMQ Transport: tcp:///:51460@61616" daemon prio=10 
> tid=0x7efbbc011000 nid=0x42be waiting on condition [0x7efbb1a58000]
>java.lang.Thread.State: WAITING (parking)
>   at sun.misc.Unsafe.park(Native Method)
>   - parking to wait for  <0xc61a2118> (a 
> java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
>   at java.util.concurrent.locks.LockSupport.park(LockSupport.java:186)
>   at 
> java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2043)
>   at 
> java.util.concurrent.ArrayBlockingQueue.take(ArrayBlockingQueue.java:374)
>   at 
> org.apache.activemq.transport.FutureResponse.getResult(FutureResponse.java:48)
>   at 
> org.apache.activemq.transport.ResponseCorrelator.request(ResponseCorrelator.java:87)
>   at 
> org.apache.activemq.network.DemandForwardingBridgeSupport.addSubscription(DemandForwardingBridgeSupport.java:914)
>   at 
> org.apache.activemq.network.DemandForwardingBridgeSupport.addConsumerInfo(DemandForwardingBridgeSupport.java:1187)
>   at 
> org.apache.activemq.network.DemandForwardingBridgeSupport.serviceRemoteConsumerAdvisory(DemandForwardingBridgeSupport.java:772)
>   - locked <0xc25ed058> (a java.net.URI)
>   at 
> org.apache.activemq.network.DemandForwardingBridgeSupport.serviceRemoteCommand(DemandForwardingBridgeSupport.java:623)
>   at 
> org.apache.activemq.network.DemandForwardingBridgeSupport$3.onCommand(DemandForwardingBridgeSupport.java:225)
>   at 
> org.apache.activemq.transport.ResponseCorrelator.onCommand(ResponseCorrelator.java:116)
>   at 
> org.apache.activemq.transport.MutexTransport.onCommand(MutexTransport.java:50)
>   at 
> org.apache.activemq.transport.WireFormatNegotiator.onCommand(WireFormatNegotiator.java:125)
>   at 
> org.apache.activemq.transport.AbstractInactivityMonitor.onCommand(AbstractInactivityMonitor.java:300)
>   at 
> org.apache.activemq.transport.TransportSupport.doConsume(TransportSupport.java:83)
>   at 
> org.apache.activemq.transport.tcp.TcpTransport.doRun(TcpTransport.java:214)
>   at 
> org.apache.activemq.transport.tcp.TcpTransport.run(TcpTransport.java:196)
>   at java.lang.Thread.run(Thread.java:724)
> ~~~
> ~~~
> Dump 1 : "ActiveMQ VMTransport: vm://broker1#8-2" daemon prio=10 
> tid=0x7efbbc11b800 nid=0x42c4 runnable [0x7efbb1554000]
> java.lang.Thread.State: RUNNABLE
> at java.net.SocketOutputStream.socketWrite0(Native Method)
> at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:109)
> at java.net.SocketOutputStream.write(SocketOutputStream.java:153)
> at 
> org.apache.activemq.transport.tcp.TcpBufferedOutputStream.flush(TcpBufferedOutputStream.java:115)
> at java.io.DataOutputStream.flush(DataOutputStream.java:123)
> at 
> org.apache.activemq.transport.tcp.TcpTransport.oneway(TcpTransport.java:176)
> at 
> org.apache.activemq.transport.AbstractInactivityMonitor.doOnewaySend(AbstractInactivityMonitor.java:334)
> at 
> org.apache.activemq.transport.AbstractInactivityMonitor.oneway(AbstractInactivityMonitor.java:316)
> at 
> org.apache.activemq.transport.TransportFilter.oneway(TransportFilter.java:85)
> at 
> org.apache.activemq.transport.WireFormatNegotiator.oneway(WireFormatNegotiator.java:116)
> at 
> org.apache.activemq.transport.MutexTransport.oneway(MutexTransport.java:68)
> at 
> org.apache.activemq.transport.ResponseCorrelator.oneway(ResponseCorrelator.java:60)
> at 
> org.apache.activemq.network.DemandForwardingBridgeSupport.serviceLocalCommand(DemandForwardingBridgeSupport.java:994)
> at 
> 

[jira] [Reopened] (AMQ-6640) network of brokers, duplex connector, network consumers not registered on destination - hung bridge

2017-03-29 Thread Gary Tully (JIRA)

 [ 
https://issues.apache.org/jira/browse/AMQ-6640?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Gary Tully reopened AMQ-6640:
-

it is still not exactly right - need to rationalise the use of sync and async 
vm transports on either end of the duplex pipe, there is a need for some async 
processing because there is contention.

> network of brokers, duplex connector, network consumers not registered on 
> destination - hung bridge
> ---
>
> Key: AMQ-6640
> URL: https://issues.apache.org/jira/browse/AMQ-6640
> Project: ActiveMQ
>  Issue Type: Bug
>  Components: networkbridge
>Affects Versions: 5.14.0
>Reporter: Gary Tully
>Assignee: Gary Tully
> Fix For: 5.15.0
>
>
> Occasional hang in a network bridge under heavy load with large pending 
> backlog across multiple destinations.
> Hung network bridge threads blocked through crosstalk between consumer demand 
> and message forwarding traffic leading to blocked writes.
> Stack traces of the form, Broker1
> {code}
> ~~~
> "ActiveMQ Transport: tcp:///:51460@61616" daemon prio=10 
> tid=0x7efbbc011000 nid=0x42be waiting on condition [0x7efbb1a58000]
>java.lang.Thread.State: WAITING (parking)
>   at sun.misc.Unsafe.park(Native Method)
>   - parking to wait for  <0xc61a2118> (a 
> java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
>   at java.util.concurrent.locks.LockSupport.park(LockSupport.java:186)
>   at 
> java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2043)
>   at 
> java.util.concurrent.ArrayBlockingQueue.take(ArrayBlockingQueue.java:374)
>   at 
> org.apache.activemq.transport.FutureResponse.getResult(FutureResponse.java:48)
>   at 
> org.apache.activemq.transport.ResponseCorrelator.request(ResponseCorrelator.java:87)
>   at 
> org.apache.activemq.network.DemandForwardingBridgeSupport.addSubscription(DemandForwardingBridgeSupport.java:914)
>   at 
> org.apache.activemq.network.DemandForwardingBridgeSupport.addConsumerInfo(DemandForwardingBridgeSupport.java:1187)
>   at 
> org.apache.activemq.network.DemandForwardingBridgeSupport.serviceRemoteConsumerAdvisory(DemandForwardingBridgeSupport.java:772)
>   - locked <0xc25ed058> (a java.net.URI)
>   at 
> org.apache.activemq.network.DemandForwardingBridgeSupport.serviceRemoteCommand(DemandForwardingBridgeSupport.java:623)
>   at 
> org.apache.activemq.network.DemandForwardingBridgeSupport$3.onCommand(DemandForwardingBridgeSupport.java:225)
>   at 
> org.apache.activemq.transport.ResponseCorrelator.onCommand(ResponseCorrelator.java:116)
>   at 
> org.apache.activemq.transport.MutexTransport.onCommand(MutexTransport.java:50)
>   at 
> org.apache.activemq.transport.WireFormatNegotiator.onCommand(WireFormatNegotiator.java:125)
>   at 
> org.apache.activemq.transport.AbstractInactivityMonitor.onCommand(AbstractInactivityMonitor.java:300)
>   at 
> org.apache.activemq.transport.TransportSupport.doConsume(TransportSupport.java:83)
>   at 
> org.apache.activemq.transport.tcp.TcpTransport.doRun(TcpTransport.java:214)
>   at 
> org.apache.activemq.transport.tcp.TcpTransport.run(TcpTransport.java:196)
>   at java.lang.Thread.run(Thread.java:724)
> ~~~
> ~~~
> Dump 1 : "ActiveMQ VMTransport: vm://broker1#8-2" daemon prio=10 
> tid=0x7efbbc11b800 nid=0x42c4 runnable [0x7efbb1554000]
> java.lang.Thread.State: RUNNABLE
> at java.net.SocketOutputStream.socketWrite0(Native Method)
> at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:109)
> at java.net.SocketOutputStream.write(SocketOutputStream.java:153)
> at 
> org.apache.activemq.transport.tcp.TcpBufferedOutputStream.flush(TcpBufferedOutputStream.java:115)
> at java.io.DataOutputStream.flush(DataOutputStream.java:123)
> at 
> org.apache.activemq.transport.tcp.TcpTransport.oneway(TcpTransport.java:176)
> at 
> org.apache.activemq.transport.AbstractInactivityMonitor.doOnewaySend(AbstractInactivityMonitor.java:334)
> at 
> org.apache.activemq.transport.AbstractInactivityMonitor.oneway(AbstractInactivityMonitor.java:316)
> at 
> org.apache.activemq.transport.TransportFilter.oneway(TransportFilter.java:85)
> at 
> org.apache.activemq.transport.WireFormatNegotiator.oneway(WireFormatNegotiator.java:116)
> at 
> org.apache.activemq.transport.MutexTransport.oneway(MutexTransport.java:68)
> at 
> org.apache.activemq.transport.ResponseCorrelator.oneway(ResponseCorrelator.java:60)
> at 
> org.apache.activemq.network.DemandForwardingBridgeSupport.serviceLocalCommand(DemandForwardingBridgeSupport.java:994)
> at 
> 

[jira] [Resolved] (AMQ-6640) network of brokers, duplex connector, network consumers not registered on destination - hung bridge

2017-03-28 Thread Gary Tully (JIRA)

 [ 
https://issues.apache.org/jira/browse/AMQ-6640?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Gary Tully resolved AMQ-6640.
-
Resolution: Fixed

> network of brokers, duplex connector, network consumers not registered on 
> destination - hung bridge
> ---
>
> Key: AMQ-6640
> URL: https://issues.apache.org/jira/browse/AMQ-6640
> Project: ActiveMQ
>  Issue Type: Bug
>  Components: networkbridge
>Affects Versions: 5.14.0
>Reporter: Gary Tully
>Assignee: Gary Tully
> Fix For: 5.15.0
>
>
> Occasional hang in a network bridge under heavy load with large pending 
> backlog across multiple destinations.
> Hung network bridge threads blocked through crosstalk between consumer demand 
> and message forwarding traffic leading to blocked writes.
> Stack traces of the form, Broker1
> {code}
> ~~~
> "ActiveMQ Transport: tcp:///:51460@61616" daemon prio=10 
> tid=0x7efbbc011000 nid=0x42be waiting on condition [0x7efbb1a58000]
>java.lang.Thread.State: WAITING (parking)
>   at sun.misc.Unsafe.park(Native Method)
>   - parking to wait for  <0xc61a2118> (a 
> java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
>   at java.util.concurrent.locks.LockSupport.park(LockSupport.java:186)
>   at 
> java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2043)
>   at 
> java.util.concurrent.ArrayBlockingQueue.take(ArrayBlockingQueue.java:374)
>   at 
> org.apache.activemq.transport.FutureResponse.getResult(FutureResponse.java:48)
>   at 
> org.apache.activemq.transport.ResponseCorrelator.request(ResponseCorrelator.java:87)
>   at 
> org.apache.activemq.network.DemandForwardingBridgeSupport.addSubscription(DemandForwardingBridgeSupport.java:914)
>   at 
> org.apache.activemq.network.DemandForwardingBridgeSupport.addConsumerInfo(DemandForwardingBridgeSupport.java:1187)
>   at 
> org.apache.activemq.network.DemandForwardingBridgeSupport.serviceRemoteConsumerAdvisory(DemandForwardingBridgeSupport.java:772)
>   - locked <0xc25ed058> (a java.net.URI)
>   at 
> org.apache.activemq.network.DemandForwardingBridgeSupport.serviceRemoteCommand(DemandForwardingBridgeSupport.java:623)
>   at 
> org.apache.activemq.network.DemandForwardingBridgeSupport$3.onCommand(DemandForwardingBridgeSupport.java:225)
>   at 
> org.apache.activemq.transport.ResponseCorrelator.onCommand(ResponseCorrelator.java:116)
>   at 
> org.apache.activemq.transport.MutexTransport.onCommand(MutexTransport.java:50)
>   at 
> org.apache.activemq.transport.WireFormatNegotiator.onCommand(WireFormatNegotiator.java:125)
>   at 
> org.apache.activemq.transport.AbstractInactivityMonitor.onCommand(AbstractInactivityMonitor.java:300)
>   at 
> org.apache.activemq.transport.TransportSupport.doConsume(TransportSupport.java:83)
>   at 
> org.apache.activemq.transport.tcp.TcpTransport.doRun(TcpTransport.java:214)
>   at 
> org.apache.activemq.transport.tcp.TcpTransport.run(TcpTransport.java:196)
>   at java.lang.Thread.run(Thread.java:724)
> ~~~
> ~~~
> Dump 1 : "ActiveMQ VMTransport: vm://broker1#8-2" daemon prio=10 
> tid=0x7efbbc11b800 nid=0x42c4 runnable [0x7efbb1554000]
> java.lang.Thread.State: RUNNABLE
> at java.net.SocketOutputStream.socketWrite0(Native Method)
> at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:109)
> at java.net.SocketOutputStream.write(SocketOutputStream.java:153)
> at 
> org.apache.activemq.transport.tcp.TcpBufferedOutputStream.flush(TcpBufferedOutputStream.java:115)
> at java.io.DataOutputStream.flush(DataOutputStream.java:123)
> at 
> org.apache.activemq.transport.tcp.TcpTransport.oneway(TcpTransport.java:176)
> at 
> org.apache.activemq.transport.AbstractInactivityMonitor.doOnewaySend(AbstractInactivityMonitor.java:334)
> at 
> org.apache.activemq.transport.AbstractInactivityMonitor.oneway(AbstractInactivityMonitor.java:316)
> at 
> org.apache.activemq.transport.TransportFilter.oneway(TransportFilter.java:85)
> at 
> org.apache.activemq.transport.WireFormatNegotiator.oneway(WireFormatNegotiator.java:116)
> at 
> org.apache.activemq.transport.MutexTransport.oneway(MutexTransport.java:68)
> at 
> org.apache.activemq.transport.ResponseCorrelator.oneway(ResponseCorrelator.java:60)
> at 
> org.apache.activemq.network.DemandForwardingBridgeSupport.serviceLocalCommand(DemandForwardingBridgeSupport.java:994)
> at 
> org.apache.activemq.network.DemandForwardingBridgeSupport$2.onCommand(DemandForwardingBridgeSupport.java:207)
> at 
> org.apache.activemq.transport.ResponseCorrelator.onCommand(ResponseCorrelator.java:116)
> at 
> 

[jira] [Commented] (AMQ-6640) network of brokers, duplex connector, network consumers not registered on destination - hung bridge

2017-03-28 Thread Gary Tully (JIRA)

[ 
https://issues.apache.org/jira/browse/AMQ-6640?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15945214#comment-15945214
 ] 

Gary Tully commented on AMQ-6640:
-

AMQ-4328 fix needed to be confined to the async side, the duplex responder side.

> network of brokers, duplex connector, network consumers not registered on 
> destination - hung bridge
> ---
>
> Key: AMQ-6640
> URL: https://issues.apache.org/jira/browse/AMQ-6640
> Project: ActiveMQ
>  Issue Type: Bug
>  Components: networkbridge
>Affects Versions: 5.14.0
>Reporter: Gary Tully
>Assignee: Gary Tully
> Fix For: 5.15.0
>
>
> Occasional hang in a network bridge under heavy load with large pending 
> backlog across multiple destinations.
> Hung network bridge threads blocked through crosstalk between consumer demand 
> and message forwarding traffic leading to blocked writes.
> Stack traces of the form, Broker1
> {code}
> ~~~
> "ActiveMQ Transport: tcp:///:51460@61616" daemon prio=10 
> tid=0x7efbbc011000 nid=0x42be waiting on condition [0x7efbb1a58000]
>java.lang.Thread.State: WAITING (parking)
>   at sun.misc.Unsafe.park(Native Method)
>   - parking to wait for  <0xc61a2118> (a 
> java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
>   at java.util.concurrent.locks.LockSupport.park(LockSupport.java:186)
>   at 
> java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2043)
>   at 
> java.util.concurrent.ArrayBlockingQueue.take(ArrayBlockingQueue.java:374)
>   at 
> org.apache.activemq.transport.FutureResponse.getResult(FutureResponse.java:48)
>   at 
> org.apache.activemq.transport.ResponseCorrelator.request(ResponseCorrelator.java:87)
>   at 
> org.apache.activemq.network.DemandForwardingBridgeSupport.addSubscription(DemandForwardingBridgeSupport.java:914)
>   at 
> org.apache.activemq.network.DemandForwardingBridgeSupport.addConsumerInfo(DemandForwardingBridgeSupport.java:1187)
>   at 
> org.apache.activemq.network.DemandForwardingBridgeSupport.serviceRemoteConsumerAdvisory(DemandForwardingBridgeSupport.java:772)
>   - locked <0xc25ed058> (a java.net.URI)
>   at 
> org.apache.activemq.network.DemandForwardingBridgeSupport.serviceRemoteCommand(DemandForwardingBridgeSupport.java:623)
>   at 
> org.apache.activemq.network.DemandForwardingBridgeSupport$3.onCommand(DemandForwardingBridgeSupport.java:225)
>   at 
> org.apache.activemq.transport.ResponseCorrelator.onCommand(ResponseCorrelator.java:116)
>   at 
> org.apache.activemq.transport.MutexTransport.onCommand(MutexTransport.java:50)
>   at 
> org.apache.activemq.transport.WireFormatNegotiator.onCommand(WireFormatNegotiator.java:125)
>   at 
> org.apache.activemq.transport.AbstractInactivityMonitor.onCommand(AbstractInactivityMonitor.java:300)
>   at 
> org.apache.activemq.transport.TransportSupport.doConsume(TransportSupport.java:83)
>   at 
> org.apache.activemq.transport.tcp.TcpTransport.doRun(TcpTransport.java:214)
>   at 
> org.apache.activemq.transport.tcp.TcpTransport.run(TcpTransport.java:196)
>   at java.lang.Thread.run(Thread.java:724)
> ~~~
> ~~~
> Dump 1 : "ActiveMQ VMTransport: vm://broker1#8-2" daemon prio=10 
> tid=0x7efbbc11b800 nid=0x42c4 runnable [0x7efbb1554000]
> java.lang.Thread.State: RUNNABLE
> at java.net.SocketOutputStream.socketWrite0(Native Method)
> at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:109)
> at java.net.SocketOutputStream.write(SocketOutputStream.java:153)
> at 
> org.apache.activemq.transport.tcp.TcpBufferedOutputStream.flush(TcpBufferedOutputStream.java:115)
> at java.io.DataOutputStream.flush(DataOutputStream.java:123)
> at 
> org.apache.activemq.transport.tcp.TcpTransport.oneway(TcpTransport.java:176)
> at 
> org.apache.activemq.transport.AbstractInactivityMonitor.doOnewaySend(AbstractInactivityMonitor.java:334)
> at 
> org.apache.activemq.transport.AbstractInactivityMonitor.oneway(AbstractInactivityMonitor.java:316)
> at 
> org.apache.activemq.transport.TransportFilter.oneway(TransportFilter.java:85)
> at 
> org.apache.activemq.transport.WireFormatNegotiator.oneway(WireFormatNegotiator.java:116)
> at 
> org.apache.activemq.transport.MutexTransport.oneway(MutexTransport.java:68)
> at 
> org.apache.activemq.transport.ResponseCorrelator.oneway(ResponseCorrelator.java:60)
> at 
> org.apache.activemq.network.DemandForwardingBridgeSupport.serviceLocalCommand(DemandForwardingBridgeSupport.java:994)
> at 
> org.apache.activemq.network.DemandForwardingBridgeSupport$2.onCommand(DemandForwardingBridgeSupport.java:207)
> at 
> 

[jira] [Created] (AMQ-6640) network of brokers, duplex connector, network consumers not registered on destination - hung bridge

2017-03-28 Thread Gary Tully (JIRA)
Gary Tully created AMQ-6640:
---

 Summary: network of brokers, duplex connector, network consumers 
not registered on destination - hung bridge
 Key: AMQ-6640
 URL: https://issues.apache.org/jira/browse/AMQ-6640
 Project: ActiveMQ
  Issue Type: Bug
  Components: networkbridge
Affects Versions: 5.14.0
Reporter: Gary Tully
Assignee: Gary Tully
 Fix For: 5.15.0


Occasional hang in a network bridge under heavy load with large pending backlog 
across multiple destinations.
Hung network bridge threads blocked through crosstalk between consumer demand 
and message forwarding traffic leading to blocked writes.

Stack traces of the form, Broker1
{code}

~~~
"ActiveMQ Transport: tcp:///:51460@61616" daemon prio=10 
tid=0x7efbbc011000 nid=0x42be waiting on condition [0x7efbb1a58000]
   java.lang.Thread.State: WAITING (parking)
at sun.misc.Unsafe.park(Native Method)
- parking to wait for  <0xc61a2118> (a 
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
at java.util.concurrent.locks.LockSupport.park(LockSupport.java:186)
at 
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2043)
at 
java.util.concurrent.ArrayBlockingQueue.take(ArrayBlockingQueue.java:374)
at 
org.apache.activemq.transport.FutureResponse.getResult(FutureResponse.java:48)
at 
org.apache.activemq.transport.ResponseCorrelator.request(ResponseCorrelator.java:87)
at 
org.apache.activemq.network.DemandForwardingBridgeSupport.addSubscription(DemandForwardingBridgeSupport.java:914)
at 
org.apache.activemq.network.DemandForwardingBridgeSupport.addConsumerInfo(DemandForwardingBridgeSupport.java:1187)
at 
org.apache.activemq.network.DemandForwardingBridgeSupport.serviceRemoteConsumerAdvisory(DemandForwardingBridgeSupport.java:772)
- locked <0xc25ed058> (a java.net.URI)
at 
org.apache.activemq.network.DemandForwardingBridgeSupport.serviceRemoteCommand(DemandForwardingBridgeSupport.java:623)
at 
org.apache.activemq.network.DemandForwardingBridgeSupport$3.onCommand(DemandForwardingBridgeSupport.java:225)
at 
org.apache.activemq.transport.ResponseCorrelator.onCommand(ResponseCorrelator.java:116)
at 
org.apache.activemq.transport.MutexTransport.onCommand(MutexTransport.java:50)
at 
org.apache.activemq.transport.WireFormatNegotiator.onCommand(WireFormatNegotiator.java:125)
at 
org.apache.activemq.transport.AbstractInactivityMonitor.onCommand(AbstractInactivityMonitor.java:300)
at 
org.apache.activemq.transport.TransportSupport.doConsume(TransportSupport.java:83)
at 
org.apache.activemq.transport.tcp.TcpTransport.doRun(TcpTransport.java:214)
at 
org.apache.activemq.transport.tcp.TcpTransport.run(TcpTransport.java:196)
at java.lang.Thread.run(Thread.java:724)
~~~


~~~
Dump 1 : "ActiveMQ VMTransport: vm://broker1#8-2" daemon prio=10 
tid=0x7efbbc11b800 nid=0x42c4 runnable [0x7efbb1554000]
java.lang.Thread.State: RUNNABLE
at java.net.SocketOutputStream.socketWrite0(Native Method)
at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:109)
at java.net.SocketOutputStream.write(SocketOutputStream.java:153)
at 
org.apache.activemq.transport.tcp.TcpBufferedOutputStream.flush(TcpBufferedOutputStream.java:115)
at java.io.DataOutputStream.flush(DataOutputStream.java:123)
at 
org.apache.activemq.transport.tcp.TcpTransport.oneway(TcpTransport.java:176)
at 
org.apache.activemq.transport.AbstractInactivityMonitor.doOnewaySend(AbstractInactivityMonitor.java:334)
at 
org.apache.activemq.transport.AbstractInactivityMonitor.oneway(AbstractInactivityMonitor.java:316)
at 
org.apache.activemq.transport.TransportFilter.oneway(TransportFilter.java:85)
at 
org.apache.activemq.transport.WireFormatNegotiator.oneway(WireFormatNegotiator.java:116)
at 
org.apache.activemq.transport.MutexTransport.oneway(MutexTransport.java:68)
at 
org.apache.activemq.transport.ResponseCorrelator.oneway(ResponseCorrelator.java:60)
at 
org.apache.activemq.network.DemandForwardingBridgeSupport.serviceLocalCommand(DemandForwardingBridgeSupport.java:994)
at 
org.apache.activemq.network.DemandForwardingBridgeSupport$2.onCommand(DemandForwardingBridgeSupport.java:207)
at 
org.apache.activemq.transport.ResponseCorrelator.onCommand(ResponseCorrelator.java:116)
at 
org.apache.activemq.transport.MutexTransport.onCommand(MutexTransport.java:50)
at 
org.apache.activemq.transport.vm.VMTransport.iterate(VMTransport.java:271)
at 
org.apache.activemq.thread.PooledTaskRunner.runTask(PooledTaskRunner.java:133)
at 
org.apache.activemq.thread.PooledTaskRunner$1.run(PooledTaskRunner.java:48)
at 

[jira] [Resolved] (AMQ-6628) [doc] Add details on message groups dispatch delay

2017-03-15 Thread Gary Tully (JIRA)

 [ 
https://issues.apache.org/jira/browse/AMQ-6628?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Gary Tully resolved AMQ-6628.
-
   Resolution: Fixed
Fix Version/s: 5.15.0

update applied, thanks for the contribution.

> [doc] Add details on message groups dispatch delay
> --
>
> Key: AMQ-6628
> URL: https://issues.apache.org/jira/browse/AMQ-6628
> Project: ActiveMQ
>  Issue Type: Bug
>  Components: Documentation
>Affects Versions: 5.14.4
>Reporter: Denis A.
>Assignee: Gary Tully
>Priority: Minor
>  Labels: documentation
> Fix For: 5.15.0
>
>
> On the message groups documentation page 
> (http://activemq.apache.org/message-groups.html), please add the following 
> text in the "Adding New Consumers" section:
> {quote}
> When both consumersBeforeDispatchStarts and timeBeforeDispatchStarts are set 
> to a value greater than zero, the dispatching will start as soon as the 
> required number of consumers are present or the timeBeforeDispatchStarts 
> timeout expires.
> If only consumersBeforeDispatchStarts is set then the timeout for consumers 
> to connect is 1 second.
> If all consumers disconnect then message dispatch delay will be applied again 
> at the next consumer connection.
> {quote}
> By the way, the link under the "As the appropriate test case" text need to be 
> fixed to point to a valid location like 
> https://github.com/apache/activemq/blob/master/activemq-unit-tests/src/test/java/org/apache/activemq/usecases/MessageGroupDelayedTest.java



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)


[jira] [Assigned] (AMQ-6628) [doc] Add details on message groups dispatch delay

2017-03-15 Thread Gary Tully (JIRA)

 [ 
https://issues.apache.org/jira/browse/AMQ-6628?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Gary Tully reassigned AMQ-6628:
---

Assignee: Gary Tully

> [doc] Add details on message groups dispatch delay
> --
>
> Key: AMQ-6628
> URL: https://issues.apache.org/jira/browse/AMQ-6628
> Project: ActiveMQ
>  Issue Type: Bug
>  Components: Documentation
>Affects Versions: 5.14.4
>Reporter: Denis A.
>Assignee: Gary Tully
>Priority: Minor
>  Labels: documentation
>
> On the message groups documentation page 
> (http://activemq.apache.org/message-groups.html), please add the following 
> text in the "Adding New Consumers" section:
> {quote}
> When both consumersBeforeDispatchStarts and timeBeforeDispatchStarts are set 
> to a value greater than zero, the dispatching will start as soon as the 
> required number of consumers are present or the timeBeforeDispatchStarts 
> timeout expires.
> If only consumersBeforeDispatchStarts is set then the timeout for consumers 
> to connect is 1 second.
> If all consumers disconnect then message dispatch delay will be applied again 
> at the next consumer connection.
> {quote}
> By the way, the link under the "As the appropriate test case" text need to be 
> fixed to point to a valid location like 
> https://github.com/apache/activemq/blob/master/activemq-unit-tests/src/test/java/org/apache/activemq/usecases/MessageGroupDelayedTest.java



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)


[jira] [Resolved] (AMQ-6625) IOException in kahaDB needs to pause pending IOExceptionHandler intervention

2017-03-13 Thread Gary Tully (JIRA)

 [ 
https://issues.apache.org/jira/browse/AMQ-6625?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Gary Tully resolved AMQ-6625.
-
Resolution: Fixed

Prior to the handIOException up-call the journal and index pause. The appender 
write thread won't get recreated and the index is marked unloaded.
This ensures that subsequent writes will fail allowing auto recovery from a 
partial write to kick in on restart.
The new kahaDBIOExceptionHandler implements a resume call on kahadb that allows 
the stopStartConnectors behaviour or ignore all errors behaviour to be chosen 
if necessary.

> IOException in kahaDB needs to pause pending IOExceptionHandler intervention
> 
>
> Key: AMQ-6625
> URL: https://issues.apache.org/jira/browse/AMQ-6625
> Project: ActiveMQ
>  Issue Type: Bug
>  Components: KahaDB
>Affects Versions: 5.14.0
>Reporter: Gary Tully
>Assignee: Gary Tully
> Fix For: 5.15.0
>
>
> KahaDB can recover from kill -9 by replaying the journal from the last 
> checkpoint or by detecting and reapplying partial writes to the index.
> However this activity is compromised if the journal or index accepts 
> subsequent writes. It an lead to skipped write batches or skipped partial 
> updates to the index.
> The desirable behaviour of treating an IOException as fatal and stopping the 
> broker in the knowledge that it will restart and fully recover needs to treat 
> the first IO error as fatal and by default not accept any further writes.
> A more advanced IOException handler can facilitate staying alive in more 
> specific scenarios and reactivate kahadb.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)


[jira] [Commented] (AMQ-6625) IOException in kahaDB needs to pause pending IOExceptionHandler intervention

2017-03-13 Thread Gary Tully (JIRA)

[ 
https://issues.apache.org/jira/browse/AMQ-6625?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15907486#comment-15907486
 ] 

Gary Tully commented on AMQ-6625:
-

If the broker needs to stay up, for sync traffic AMQ-6606 helps ensure the 
journal does not get corrupt batches.
KahaDBIOExceptionHandler allow this sort of behaviour by resetting kahadb after 
the first error. 

> IOException in kahaDB needs to pause pending IOExceptionHandler intervention
> 
>
> Key: AMQ-6625
> URL: https://issues.apache.org/jira/browse/AMQ-6625
> Project: ActiveMQ
>  Issue Type: Bug
>  Components: KahaDB
>Affects Versions: 5.14.0
>Reporter: Gary Tully
>Assignee: Gary Tully
> Fix For: 5.15.0
>
>
> KahaDB can recover from kill -9 by replaying the journal from the last 
> checkpoint or by detecting and reapplying partial writes to the index.
> However this activity is compromised if the journal or index accepts 
> subsequent writes. It an lead to skipped write batches or skipped partial 
> updates to the index.
> The desirable behaviour of treating an IOException as fatal and stopping the 
> broker in the knowledge that it will restart and fully recover needs to treat 
> the first IO error as fatal and by default not accept any further writes.
> A more advanced IOException handler can facilitate staying alive in more 
> specific scenarios and reactivate kahadb.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)


[jira] [Commented] (AMQ-6625) IOException in kahaDB needs to pause pending IOExceptionHandler intervention

2017-03-13 Thread Gary Tully (JIRA)

[ 
https://issues.apache.org/jira/browse/AMQ-6625?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15907474#comment-15907474
 ] 

Gary Tully commented on AMQ-6625:
-

AMQ-3725 feature is better suited to the jdbc store which is internally 
consistent.
Kahadb is tolerant to a single write failure.

> IOException in kahaDB needs to pause pending IOExceptionHandler intervention
> 
>
> Key: AMQ-6625
> URL: https://issues.apache.org/jira/browse/AMQ-6625
> Project: ActiveMQ
>  Issue Type: Bug
>  Components: KahaDB
>Affects Versions: 5.14.0
>Reporter: Gary Tully
>Assignee: Gary Tully
> Fix For: 5.15.0
>
>
> KahaDB can recover from kill -9 by replaying the journal from the last 
> checkpoint or by detecting and reapplying partial writes to the index.
> However this activity is compromised if the journal or index accepts 
> subsequent writes. It an lead to skipped write batches or skipped partial 
> updates to the index.
> The desirable behaviour of treating an IOException as fatal and stopping the 
> broker in the knowledge that it will restart and fully recover needs to treat 
> the first IO error as fatal and by default not accept any further writes.
> A more advanced IOException handler can facilitate staying alive in more 
> specific scenarios and reactivate kahadb.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)


[jira] [Created] (AMQ-6625) IOException in kahaDB needs to pause pending IOExceptionHandler intervention

2017-03-13 Thread Gary Tully (JIRA)
Gary Tully created AMQ-6625:
---

 Summary: IOException in kahaDB needs to pause pending 
IOExceptionHandler intervention
 Key: AMQ-6625
 URL: https://issues.apache.org/jira/browse/AMQ-6625
 Project: ActiveMQ
  Issue Type: Bug
  Components: KahaDB
Affects Versions: 5.14.0
Reporter: Gary Tully
Assignee: Gary Tully
 Fix For: 5.15.0


KahaDB can recover from kill -9 by replaying the journal from the last 
checkpoint or by detecting and reapplying partial writes to the index.
However this activity is compromised if the journal or index accepts subsequent 
writes. It an lead to skipped write batches or skipped partial updates to the 
index.
The desirable behaviour of treating an IOException as fatal and stopping the 
broker in the knowledge that it will restart and fully recover needs to treat 
the first IO error as fatal and by default not accept any further writes.
A more advanced IOException handler can facilitate staying alive in more 
specific scenarios and reactivate kahadb.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)


[jira] [Resolved] (AMQ-6606) Journal partial write can result in batch corruption on restart

2017-03-07 Thread Gary Tully (JIRA)

 [ 
https://issues.apache.org/jira/browse/AMQ-6606?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Gary Tully resolved AMQ-6606.
-
Resolution: Fixed

the fix is refined to just sync batches such that index updates from async 
writes do not get reused. In the sync case, the index is not updated till 
completion.

> Journal partial write can result in batch corruption on restart
> ---
>
> Key: AMQ-6606
> URL: https://issues.apache.org/jira/browse/AMQ-6606
> Project: ActiveMQ
>  Issue Type: Bug
>  Components: KahaDB
>Affects Versions: 5.14.0
>Reporter: Gary Tully
>Assignee: Gary Tully
> Fix For: 5.15.0, 5.14.4
>
>
> Recovery checking on kahadb will ignore a partial journal write at the end of 
> the journal. However repeated write errors increment the write offset and if 
> a subsequent write succeeds recovery fails reporting a corrupt block.
> {code}
>  MessageDatabase  | emq.store.kahadb.MessageDatabase | Detected corrupt 
> journal files. [34:43883209 >= key < 34:47226069]
> {code}
> One scenario is write failure for no space followed by gc which allows 
> subsequent writes to complete.
> A failed write or sync should fail with an exception and should revert any 
> offset increment such that a subsequent write reuses that offset, avoiding a 
> partial write corruption. 



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)


[jira] [Comment Edited] (AMQ-6606) Journal partial write can result in batch corruption on restart

2017-03-07 Thread Gary Tully (JIRA)

[ 
https://issues.apache.org/jira/browse/AMQ-6606?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15897168#comment-15897168
 ] 

Gary Tully edited comment on AMQ-6606 at 3/7/17 12:32 PM:
--

This needs more work.. readjustment of offset needs to terminate next pending 
write batch.


was (Author: gtully):
This needs more work.. readjustment of offset needs to percolate into all 
queued writes...  some more thought required to validate, but this current fix 
is not suffice.

> Journal partial write can result in batch corruption on restart
> ---
>
> Key: AMQ-6606
> URL: https://issues.apache.org/jira/browse/AMQ-6606
> Project: ActiveMQ
>  Issue Type: Bug
>  Components: KahaDB
>Affects Versions: 5.14.0
>Reporter: Gary Tully
>Assignee: Gary Tully
> Fix For: 5.15.0, 5.14.4
>
>
> Recovery checking on kahadb will ignore a partial journal write at the end of 
> the journal. However repeated write errors increment the write offset and if 
> a subsequent write succeeds recovery fails reporting a corrupt block.
> {code}
>  MessageDatabase  | emq.store.kahadb.MessageDatabase | Detected corrupt 
> journal files. [34:43883209 >= key < 34:47226069]
> {code}
> One scenario is write failure for no space followed by gc which allows 
> subsequent writes to complete.
> A failed write or sync should fail with an exception and should revert any 
> offset increment such that a subsequent write reuses that offset, avoiding a 
> partial write corruption. 



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)


[jira] [Reopened] (AMQ-6606) Journal partial write can result in batch corruption on restart

2017-03-06 Thread Gary Tully (JIRA)

 [ 
https://issues.apache.org/jira/browse/AMQ-6606?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Gary Tully reopened AMQ-6606:
-

This needs more work.. readjustment of offset needs to percolate into all 
queued writes...  some more thought required to validate, but this current fix 
is not suffice.

> Journal partial write can result in batch corruption on restart
> ---
>
> Key: AMQ-6606
> URL: https://issues.apache.org/jira/browse/AMQ-6606
> Project: ActiveMQ
>  Issue Type: Bug
>  Components: KahaDB
>Affects Versions: 5.14.0
>Reporter: Gary Tully
>Assignee: Gary Tully
> Fix For: 5.15.0, 5.14.4
>
>
> Recovery checking on kahadb will ignore a partial journal write at the end of 
> the journal. However repeated write errors increment the write offset and if 
> a subsequent write succeeds recovery fails reporting a corrupt block.
> {code}
>  MessageDatabase  | emq.store.kahadb.MessageDatabase | Detected corrupt 
> journal files. [34:43883209 >= key < 34:47226069]
> {code}
> One scenario is write failure for no space followed by gc which allows 
> subsequent writes to complete.
> A failed write or sync should fail with an exception and should revert any 
> offset increment such that a subsequent write reuses that offset, avoiding a 
> partial write corruption. 



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)


[jira] [Commented] (AMQ-6377) Introduce a periodic disk sync mode for KahaDB journal

2017-03-03 Thread Gary Tully (JIRA)

[ 
https://issues.apache.org/jira/browse/AMQ-6377?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15894591#comment-15894591
 ] 

Gary Tully commented on AMQ-6377:
-

[~cshannon] noticed the use of String for 
org.apache.activemq.store.kahadb.MessageDatabase#journalDiskSyncStrategy which 
makes that accessor a little expensive. Any good reason for that?
isEnableJournalDiskSyncs is used on every kahadb transaction store!
see: 
https://github.com/apache/activemq/blob/d9350912984f12356e9d51b0f00b5a28f5cfa58d/activemq-kahadb-store/src/main/java/org/apache/activemq/store/kahadb/KahaDBTransactionStore.java#L287

> Introduce a periodic disk sync mode for KahaDB journal
> --
>
> Key: AMQ-6377
> URL: https://issues.apache.org/jira/browse/AMQ-6377
> Project: ActiveMQ
>  Issue Type: New Feature
>  Components: Broker, KahaDB
>Affects Versions: 5.13.4
>Reporter: Christopher L. Shannon
>Assignee: Christopher L. Shannon
> Fix For: 5.14.0
>
>
> KahaDB has two modes for journal disk syncs, either always sync for each 
> write or never sync.  I'm proposing that we add a third option, a period disk 
> sync. 
> The intended behavior of this would be to run a task in the file appender 
> that would sync the file (if necessary) at some periodic interval (such as 
> every 500 ms, or 1 second, etc) instead of every write.  The file would also 
> be synced on close (on file rollover or shutdown)
> In my testing, syncing every 1 second has been proven to be nearly 
> indistinguishable performance as never disk syncing but is a safer option as 
> you insure that a sync is performed at least once per interval.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)


<    6   7   8   9   10   11   12   13   14   15   >