[jira] [Updated] (AMQ-7067) KahaDB Recovery can experience a dangling transaction when prepare and commit occur on different pagefiles.
[ https://issues.apache.org/jira/browse/AMQ-7067?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Jamie goodyear updated AMQ-7067: Attachment: amq7067test.patch > KahaDB Recovery can experience a dangling transaction when prepare and commit > occur on different pagefiles. > --- > > Key: AMQ-7067 > URL: https://issues.apache.org/jira/browse/AMQ-7067 > Project: ActiveMQ > Issue Type: Bug > Components: KahaDB, XA >Affects Versions: 5.15.6 >Reporter: Jamie goodyear >Priority: Critical > Fix For: 5.16.0, 5.15.7 > > Attachments: amq7067test.patch > > > KahaDB Recovery can experience a dangling transaction when prepare and commit > occur on different pagefiles. > Scenario: > A XA Transaction is started, message is prepared and sent into Broker. > We then send into broker enough messages to file page file (100 message with > 512 * 1024 characters in message payload). This forces a new pagefile to be > created. > Commit the XA transaction. Commit will land on the new page file. > Restart the Broker. > Upon restart a KahaDB recovery is executed. > The prepare in PageFile 1 is not matched to Commit on PageFile 2, as such, it > will appear in recovered message state. > Looking deeper into this scenario, it appears that the commit message is > GC'd, hence the prepare & commit can not be matched. > The MessageDatabase only checks the following for GC: > {color:#808080}// Don't GC files referenced by in-progress tx > {color}{color:#cc7832}if {color}(inProgressTxRange[{color:#6897bb}0{color}] > != {color:#cc7832}null{color}) { > {color:#cc7832}for {color}({color:#cc7832}int > {color}pendingTx=inProgressTxRange[{color:#6897bb}0{color}].getDataFileId(){color:#cc7832}; > {color}pendingTx <= > inProgressTxRange[{color:#6897bb}1{color}].getDataFileId(){color:#cc7832}; > {color}pendingTx++) { > gcCandidateSet.remove(pendingTx){color:#cc7832}; > {color} } > } > We need to become aware of where the prepare & commits occur in pagefiles > with respect to GCing files. -- This message was sent by Atlassian JIRA (v7.6.3#76005)
[jira] [Comment Edited] (AMQ-7067) KahaDB Recovery can experience a dangling transaction when prepare and commit occur on different pagefiles.
[ https://issues.apache.org/jira/browse/AMQ-7067?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16638417#comment-16638417 ] Jamie goodyear edited comment on AMQ-7067 at 10/4/18 5:40 PM: -- Please see the amq7067 unit test. This patch is for AMQ 5.15.x branch. You can execute using the following command: mvn -Dtest=AMQ7067Test test Keeping original comment for history: I've attached a stand alone test case to reproduce the issue. Here's how to use the test case: 0. Setup AMQ 5.15.6 broker on local system. Use default configuration, no special settings required. Start broker. 1. Extract AMQ7067 zip file. 2. Run XATransactionTest while Broker is live using : mvn clean compile exec:java -Dexec.mainClass="XATransactionTest" The test case will output: [INFO] — exec-maven-plugin:1.6.0:java (default-cli) @ transaction — SLF4J: Class path contains multiple SLF4J bindings. SLF4J: Found binding in [jar:file:/Users/icbts/.m2/repository/org/apache/activemq/activemq-all/5.15.6/activemq-all-5.15.6.jar!/org/slf4j/impl/StaticLoggerBinder.class] SLF4J: Found binding in [jar:file:/Users/icbts/.m2/repository/org/slf4j/slf4j-log4j12/1.6.1/slf4j-log4j12-1.6.1.jar!/org/slf4j/impl/StaticLoggerBinder.class] SLF4J: See [http://www.slf4j.org/codes.html#multiple_bindings] for an explanation. SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory] createDanglingTransaction txid: XID:[55,globalId=ffe9ffb8fff7ffa1,branchId=ffe9ffb8fff7ffa1] createXATransaction txid: XID:[55,globalId=15333ec,branchId=15333ec] Pending Transactions 1: [XID:[55,globalId=ffe9ffb8fff7ffa1,branchId=ffe9ffb8fff7ffa1]] INFO | I/O exception (org.apache.http.NoHttpResponseException) caught when processing request to {}->[http://localhost:8161:] The target server failed to respond INFO | Retrying request to {}->[http://localhost:8161|http://localhost:8161/] Pending Transactions 2: [XID:[55,globalId=ffe9ffb8fff7ffa1,branchId=ffe9ffb8fff7ffa1], XID:[55,globalId=15333ec,branchId=15333ec]] [INFO] In the Broker log you'll see: INFO | KahaDB is version 6 INFO | Recovering from the journal @1:741 INFO | Recovery replayed 429 operations from the journal in 0.081 seconds. WARN | Recovered prepared XA TX: [XID:[55,globalId=ffe9ffb8fff7ffa1,branchId=ffe9ffb8fff7ffa1]] WARN | Recovered prepared XA TX: [XID:[55,globalId=15333ec,branchId=15333ec]] On JConsole you'll see two messages in org.apache.activemq > Broker > RecoveredXaTransaction MBean. Given we commit the transaction, I'd expect there to not be a message in Recovered state. Note: If we do not send additional messages to force a new page file, than we do not see the message in Recovered state after broker restart. It appears to be that the prepared statement in db-1.log,. and commit in db-2.log will result in the commit getting GC'd (hence no pare to match) and having the message being seen as being in prepared state, and hence getting recovered. was (Author: jgoodyear): I've attached a stand alone test case to reproduce the issue. Here's how to use the test case: 0. Setup AMQ 5.15.6 broker on local system. Use default configuration, no special settings required. Start broker. 1. Extract AMQ7067 zip file. 2. Run XATransactionTest while Broker is live using : mvn clean compile exec:java -Dexec.mainClass="XATransactionTest" The test case will output: [INFO] — exec-maven-plugin:1.6.0:java (default-cli) @ transaction — SLF4J: Class path contains multiple SLF4J bindings. SLF4J: Found binding in [jar:file:/Users/icbts/.m2/repository/org/apache/activemq/activemq-all/5.15.6/activemq-all-5.15.6.jar!/org/slf4j/impl/StaticLoggerBinder.class] SLF4J: Found binding in [jar:file:/Users/icbts/.m2/repository/org/slf4j/slf4j-log4j12/1.6.1/slf4j-log4j12-1.6.1.jar!/org/slf4j/impl/StaticLoggerBinder.class] SLF4J: See [http://www.slf4j.org/codes.html#multiple_bindings] for an explanation. SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory] createDanglingTransaction txid: XID:[55,globalId=ffe9ffb8fff7ffa1,branchId=ffe9ffb8fff7ffa1] createXATransaction txid: XID:[55,globalId=15333ec,branchId=15333ec] Pending Transactions 1:
[jira] [Updated] (AMQ-7067) KahaDB Recovery can experience a dangling transaction when prepare and commit occur on different pagefiles.
[ https://issues.apache.org/jira/browse/AMQ-7067?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Jamie goodyear updated AMQ-7067: Attachment: (was: AMQ7067.zip) > KahaDB Recovery can experience a dangling transaction when prepare and commit > occur on different pagefiles. > --- > > Key: AMQ-7067 > URL: https://issues.apache.org/jira/browse/AMQ-7067 > Project: ActiveMQ > Issue Type: Bug > Components: KahaDB, XA >Affects Versions: 5.15.6 >Reporter: Jamie goodyear >Priority: Critical > Fix For: 5.16.0, 5.15.7 > > > KahaDB Recovery can experience a dangling transaction when prepare and commit > occur on different pagefiles. > Scenario: > A XA Transaction is started, message is prepared and sent into Broker. > We then send into broker enough messages to file page file (100 message with > 512 * 1024 characters in message payload). This forces a new pagefile to be > created. > Commit the XA transaction. Commit will land on the new page file. > Restart the Broker. > Upon restart a KahaDB recovery is executed. > The prepare in PageFile 1 is not matched to Commit on PageFile 2, as such, it > will appear in recovered message state. > Looking deeper into this scenario, it appears that the commit message is > GC'd, hence the prepare & commit can not be matched. > The MessageDatabase only checks the following for GC: > {color:#808080}// Don't GC files referenced by in-progress tx > {color}{color:#cc7832}if {color}(inProgressTxRange[{color:#6897bb}0{color}] > != {color:#cc7832}null{color}) { > {color:#cc7832}for {color}({color:#cc7832}int > {color}pendingTx=inProgressTxRange[{color:#6897bb}0{color}].getDataFileId(){color:#cc7832}; > {color}pendingTx <= > inProgressTxRange[{color:#6897bb}1{color}].getDataFileId(){color:#cc7832}; > {color}pendingTx++) { > gcCandidateSet.remove(pendingTx){color:#cc7832}; > {color} } > } > We need to become aware of where the prepare & commits occur in pagefiles > with respect to GCing files. -- This message was sent by Atlassian JIRA (v7.6.3#76005)
[jira] [Commented] (ARTEMIS-2110) JDBC LeaseLocker repeated renew or renew after aquire can fail in error
[ https://issues.apache.org/jira/browse/ARTEMIS-2110?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16638408#comment-16638408 ] ASF GitHub Bot commented on ARTEMIS-2110: - GitHub user gtully opened a pull request: https://github.com/apache/activemq-artemis/pull/2346 ARTEMIS-2110 allow a lease renew without update to the expiry timesta… …mp. Fix intermittent failure of org.apache.activemq.artemis.core.server.impl.jdbc.JdbcLeaseLockTest#shouldRenewAcquiredLock You can merge this pull request into a Git repository by running: $ git pull https://github.com/gtully/activemq-artemis ARTEMIS-2110 Alternatively you can review and apply these changes as the patch at: https://github.com/apache/activemq-artemis/pull/2346.patch To close this pull request, make a commit to your master/trunk branch with (at least) the following in the commit message: This closes #2346 commit ddf0cac2d7531dc49484c283a7f4cbe44d8e278e Author: gtully Date: 2018-10-04T15:47:16Z ARTEMIS-2110 allow a lease renew without update to the expiry timestamp. Fix intermittent failure of org.apache.activemq.artemis.core.server.impl.jdbc.JdbcLeaseLockTest#shouldRenewAcquiredLock > JDBC LeaseLocker repeated renew or renew after aquire can fail in error > --- > > Key: ARTEMIS-2110 > URL: https://issues.apache.org/jira/browse/ARTEMIS-2110 > Project: ActiveMQ Artemis > Issue Type: Bug > Components: Broker >Affects Versions: 2.6.3 >Reporter: Gary Tully >Assignee: Gary Tully >Priority: Minor > Fix For: 2.7.0 > > > There is an intermittent failure in: > org.apache.activemq.artemis.core.server.impl.jdbc.JdbcLeaseLockTest#shouldRenewAcquiredLock > (seems to block pr ci, and reproduced for me 20% of the time) > if the db currentTime has not moved on, using the same lease time results in > a failure. A renew immediately after acquiring the lock is a sensible pattern > to verify the aquire. > > The lock renew needs >= in place or > on the WHERE clause to allow an > 'identity' lease to succeed. -- This message was sent by Atlassian JIRA (v7.6.3#76005)
[jira] [Comment Edited] (AMQ-7067) KahaDB Recovery can experience a dangling transaction when prepare and commit occur on different pagefiles.
[ https://issues.apache.org/jira/browse/AMQ-7067?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16638417#comment-16638417 ] Jamie goodyear edited comment on AMQ-7067 at 10/4/18 3:53 PM: -- I've attached a stand alone test case to reproduce the issue. Here's how to use the test case: 0. Setup AMQ 5.15.6 broker on local system. Use default configuration, no special settings required. Start broker. 1. Extract AMQ7067 zip file. 2. Run XATransactionTest while Broker is live using : mvn clean compile exec:java -Dexec.mainClass="XATransactionTest" The test case will output: [INFO] — exec-maven-plugin:1.6.0:java (default-cli) @ transaction — SLF4J: Class path contains multiple SLF4J bindings. SLF4J: Found binding in [jar:file:/Users/icbts/.m2/repository/org/apache/activemq/activemq-all/5.15.6/activemq-all-5.15.6.jar!/org/slf4j/impl/StaticLoggerBinder.class] SLF4J: Found binding in [jar:file:/Users/icbts/.m2/repository/org/slf4j/slf4j-log4j12/1.6.1/slf4j-log4j12-1.6.1.jar!/org/slf4j/impl/StaticLoggerBinder.class] SLF4J: See [http://www.slf4j.org/codes.html#multiple_bindings] for an explanation. SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory] createDanglingTransaction txid: XID:[55,globalId=ffe9ffb8fff7ffa1,branchId=ffe9ffb8fff7ffa1] createXATransaction txid: XID:[55,globalId=15333ec,branchId=15333ec] Pending Transactions 1: [XID:[55,globalId=ffe9ffb8fff7ffa1,branchId=ffe9ffb8fff7ffa1]] INFO | I/O exception (org.apache.http.NoHttpResponseException) caught when processing request to {}->[http://localhost:8161:] The target server failed to respond INFO | Retrying request to {}->[http://localhost:8161|http://localhost:8161/] Pending Transactions 2: [XID:[55,globalId=ffe9ffb8fff7ffa1,branchId=ffe9ffb8fff7ffa1], XID:[55,globalId=15333ec,branchId=15333ec]] [INFO] In the Broker log you'll see: INFO | KahaDB is version 6 INFO | Recovering from the journal @1:741 INFO | Recovery replayed 429 operations from the journal in 0.081 seconds. WARN | Recovered prepared XA TX: [XID:[55,globalId=ffe9ffb8fff7ffa1,branchId=ffe9ffb8fff7ffa1]] WARN | Recovered prepared XA TX: [XID:[55,globalId=15333ec,branchId=15333ec]] On JConsole you'll see two messages in org.apache.activemq > Broker > RecoveredXaTransaction MBean. Given we commit the transaction, I'd expect there to not be a message in Recovered state. Note: If we do not send additional messages to force a new page file, than we do not see the message in Recovered state after broker restart. It appears to be that the prepared statement in db-1.log,. and commit in db-2.log will result in the commit getting GC'd (hence no pare to match) and having the message being seen as being in prepared state, and hence getting recovered. was (Author: jgoodyear): I've attached a stand alone test case to reproduce the issue. Here's how to use the test case: 0. Setup AMQ 5.15.6 broker on local system. Use default configuration, no special settings required. Start broker. 1. Extract AMQ7067 zip file. 2. Use maven to build the test case. 3. Run XATransactionTest while Broker is live using : mvn clean compile exec:java -Dexec.mainClass="XATransactionTest" The test case will output: [INFO] --- exec-maven-plugin:1.6.0:java (default-cli) @ transaction --- SLF4J: Class path contains multiple SLF4J bindings. SLF4J: Found binding in [jar:file:/Users/icbts/.m2/repository/org/apache/activemq/activemq-all/5.15.6/activemq-all-5.15.6.jar!/org/slf4j/impl/StaticLoggerBinder.class] SLF4J: Found binding in [jar:file:/Users/icbts/.m2/repository/org/slf4j/slf4j-log4j12/1.6.1/slf4j-log4j12-1.6.1.jar!/org/slf4j/impl/StaticLoggerBinder.class] SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation. SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory] createDanglingTransaction txid: XID:[55,globalId=ffe9ffb8fff7ffa1,branchId=ffe9ffb8fff7ffa1] createXATransaction txid: XID:[55,globalId=15333ec,branchId=15333ec] Pending Transactions 1: [XID:[55,globalId=ffe9ffb8fff7ffa1,branchId=ffe9ffb8fff7ffa1]] INFO | I/O exception (org.apache.http.NoHttpResponseException) caught when processing request to {}->http://localhost:8161: The target
[jira] [Commented] (AMQ-7067) KahaDB Recovery can experience a dangling transaction when prepare and commit occur on different pagefiles.
[ https://issues.apache.org/jira/browse/AMQ-7067?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16638417#comment-16638417 ] Jamie goodyear commented on AMQ-7067: - I've attached a stand alone test case to reproduce the issue. Here's how to use the test case: 0. Setup AMQ 5.15.6 broker on local system. Use default configuration, no special settings required. Start broker. 1. Extract AMQ7067 zip file. 2. Use maven to build the test case. 3. Run XATransactionTest while Broker is live using : mvn clean compile exec:java -Dexec.mainClass="XATransactionTest" The test case will output: [INFO] --- exec-maven-plugin:1.6.0:java (default-cli) @ transaction --- SLF4J: Class path contains multiple SLF4J bindings. SLF4J: Found binding in [jar:file:/Users/icbts/.m2/repository/org/apache/activemq/activemq-all/5.15.6/activemq-all-5.15.6.jar!/org/slf4j/impl/StaticLoggerBinder.class] SLF4J: Found binding in [jar:file:/Users/icbts/.m2/repository/org/slf4j/slf4j-log4j12/1.6.1/slf4j-log4j12-1.6.1.jar!/org/slf4j/impl/StaticLoggerBinder.class] SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation. SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory] createDanglingTransaction txid: XID:[55,globalId=ffe9ffb8fff7ffa1,branchId=ffe9ffb8fff7ffa1] createXATransaction txid: XID:[55,globalId=15333ec,branchId=15333ec] Pending Transactions 1: [XID:[55,globalId=ffe9ffb8fff7ffa1,branchId=ffe9ffb8fff7ffa1]] INFO | I/O exception (org.apache.http.NoHttpResponseException) caught when processing request to {}->http://localhost:8161: The target server failed to respond INFO | Retrying request to {}->http://localhost:8161 Pending Transactions 2: [XID:[55,globalId=ffe9ffb8fff7ffa1,branchId=ffe9ffb8fff7ffa1], XID:[55,globalId=15333ec,branchId=15333ec]] [INFO] In the Broker log you'll see: INFO | KahaDB is version 6 INFO | Recovering from the journal @1:741 INFO | Recovery replayed 429 operations from the journal in 0.081 seconds. WARN | Recovered prepared XA TX: [XID:[55,globalId=ffe9ffb8fff7ffa1,branchId=ffe9ffb8fff7ffa1]] WARN | Recovered prepared XA TX: [XID:[55,globalId=15333ec,branchId=15333ec]] On JConsole you'll see two messages in org.apache.activemq > Broker > RecoveredXaTransaction MBean. Given we commit the transaction, I'd expect there to not be a message in Recovered state. Note: If we do not send additional messages to force a new page file, than we do not see the message in Recovered state after broker restart. It appears to be that the prepared statement in db-1.log,. and commit in db-2.log will result in the commit getting GC'd (hence no pare to match) and having the message being seen as being in prepared state, and hence getting recovered. > KahaDB Recovery can experience a dangling transaction when prepare and commit > occur on different pagefiles. > --- > > Key: AMQ-7067 > URL: https://issues.apache.org/jira/browse/AMQ-7067 > Project: ActiveMQ > Issue Type: Bug > Components: KahaDB, XA >Affects Versions: 5.15.6 >Reporter: Jamie goodyear >Priority: Critical > Fix For: 5.16.0, 5.15.7 > > Attachments: AMQ7067.zip > > > KahaDB Recovery can experience a dangling transaction when prepare and commit > occur on different pagefiles. > Scenario: > A XA Transaction is started, message is prepared and sent into Broker. > We then send into broker enough messages to file page file (100 message with > 512 * 1024 characters in message payload). This forces a new pagefile to be > created. > Commit the XA transaction. Commit will land on the new page file. > Restart the Broker. > Upon restart a KahaDB recovery is executed. > The prepare in PageFile 1 is not matched to Commit on PageFile 2, as such, it > will appear in recovered message state. > Looking deeper into this scenario, it appears that the commit message is > GC'd, hence the prepare & commit can not be matched. > The MessageDatabase only checks the following for GC: > {color:#808080}// Don't GC files referenced by in-progress tx > {color}{color:#cc7832}if {color}(inProgressTxRange[{color:#6897bb}0{color}] > != {color:#cc7832}null{color}) { > {color:#cc7832}for {color}({color:#cc7832}int >
[jira] [Created] (ARTEMIS-2110) JDBC LeaseLocker repeated renew or renew after aquire can fail in error
Gary Tully created ARTEMIS-2110: --- Summary: JDBC LeaseLocker repeated renew or renew after aquire can fail in error Key: ARTEMIS-2110 URL: https://issues.apache.org/jira/browse/ARTEMIS-2110 Project: ActiveMQ Artemis Issue Type: Bug Components: Broker Affects Versions: 2.6.3 Reporter: Gary Tully Assignee: Gary Tully Fix For: 2.7.0 There is an intermittent failure in: org.apache.activemq.artemis.core.server.impl.jdbc.JdbcLeaseLockTest#shouldRenewAcquiredLock (seems to block pr ci, and reproduced for me 20% of the time) if the db currentTime has not moved on, using the same lease time results in a failure. A renew immediately after acquiring the lock is a sensible pattern to verify the aquire. The lock renew needs >= in place or > on the WHERE clause to allow an 'identity' lease to succeed. -- This message was sent by Atlassian JIRA (v7.6.3#76005)
[jira] [Updated] (AMQ-7067) KahaDB Recovery can experience a dangling transaction when prepare and commit occur on different pagefiles.
[ https://issues.apache.org/jira/browse/AMQ-7067?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Jamie goodyear updated AMQ-7067: Attachment: AMQ7067.zip > KahaDB Recovery can experience a dangling transaction when prepare and commit > occur on different pagefiles. > --- > > Key: AMQ-7067 > URL: https://issues.apache.org/jira/browse/AMQ-7067 > Project: ActiveMQ > Issue Type: Bug > Components: KahaDB, XA >Affects Versions: 5.15.6 >Reporter: Jamie goodyear >Priority: Critical > Fix For: 5.16.0, 5.15.7 > > Attachments: AMQ7067.zip > > > KahaDB Recovery can experience a dangling transaction when prepare and commit > occur on different pagefiles. > Scenario: > A XA Transaction is started, message is prepared and sent into Broker. > We then send into broker enough messages to file page file (100 message with > 512 * 1024 characters in message payload). This forces a new pagefile to be > created. > Commit the XA transaction. Commit will land on the new page file. > Restart the Broker. > Upon restart a KahaDB recovery is executed. > The prepare in PageFile 1 is not matched to Commit on PageFile 2, as such, it > will appear in recovered message state. > Looking deeper into this scenario, it appears that the commit message is > GC'd, hence the prepare & commit can not be matched. > The MessageDatabase only checks the following for GC: > {color:#808080}// Don't GC files referenced by in-progress tx > {color}{color:#cc7832}if {color}(inProgressTxRange[{color:#6897bb}0{color}] > != {color:#cc7832}null{color}) { > {color:#cc7832}for {color}({color:#cc7832}int > {color}pendingTx=inProgressTxRange[{color:#6897bb}0{color}].getDataFileId(){color:#cc7832}; > {color}pendingTx <= > inProgressTxRange[{color:#6897bb}1{color}].getDataFileId(){color:#cc7832}; > {color}pendingTx++) { > gcCandidateSet.remove(pendingTx){color:#cc7832}; > {color} } > } > We need to become aware of where the prepare & commits occur in pagefiles > with respect to GCing files. -- This message was sent by Atlassian JIRA (v7.6.3#76005)
[jira] [Created] (AMQ-7067) KahaDB Recovery can experience a dangling transaction when prepare and commit occur on different pagefiles.
Jamie goodyear created AMQ-7067: --- Summary: KahaDB Recovery can experience a dangling transaction when prepare and commit occur on different pagefiles. Key: AMQ-7067 URL: https://issues.apache.org/jira/browse/AMQ-7067 Project: ActiveMQ Issue Type: Bug Components: KahaDB, XA Affects Versions: 5.15.6 Reporter: Jamie goodyear Fix For: 5.16.0, 5.15.7 KahaDB Recovery can experience a dangling transaction when prepare and commit occur on different pagefiles. Scenario: A XA Transaction is started, message is prepared and sent into Broker. We then send into broker enough messages to file page file (100 message with 512 * 1024 characters in message payload). This forces a new pagefile to be created. Commit the XA transaction. Commit will land on the new page file. Restart the Broker. Upon restart a KahaDB recovery is executed. The prepare in PageFile 1 is not matched to Commit on PageFile 2, as such, it will appear in recovered message state. Looking deeper into this scenario, it appears that the commit message is GC'd, hence the prepare & commit can not be matched. The MessageDatabase only checks the following for GC: {color:#808080}// Don't GC files referenced by in-progress tx {color}{color:#cc7832}if {color}(inProgressTxRange[{color:#6897bb}0{color}] != {color:#cc7832}null{color}) { {color:#cc7832}for {color}({color:#cc7832}int {color}pendingTx=inProgressTxRange[{color:#6897bb}0{color}].getDataFileId(){color:#cc7832}; {color}pendingTx <= inProgressTxRange[{color:#6897bb}1{color}].getDataFileId(){color:#cc7832}; {color}pendingTx++) { gcCandidateSet.remove(pendingTx){color:#cc7832}; {color} } } We need to become aware of where the prepare & commits occur in pagefiles with respect to GCing files. -- This message was sent by Atlassian JIRA (v7.6.3#76005)
[jira] [Commented] (ARTEMIS-1980) Warn on failed check of table existence should be info
[ https://issues.apache.org/jira/browse/ARTEMIS-1980?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16638224#comment-16638224 ] ASF GitHub Bot commented on ARTEMIS-1980: - Github user franz1981 commented on a diff in the pull request: https://github.com/apache/activemq-artemis/pull/2181#discussion_r222663365 --- Diff: artemis-jdbc-store/src/main/java/org/apache/activemq/artemis/jdbc/store/drivers/AbstractJDBCDriver.java --- @@ -227,7 +227,11 @@ private void createTableIfNotExists(String tableName, String... sqls) throws SQL } } } catch (SQLException e) { - logger.warn(JDBCUtils.appendSQLExceptionDetails(new StringBuilder("Can't verify the initialization of table ").append(tableName).append(" due to:"), e, sqlProvider.getCountJournalRecordsSQL())); + if (logger.isDebugEnabled()) { --- End diff -- I have addressed it maintaining the relevant information about the error only on trace level :+1: > Warn on failed check of table existence should be info > -- > > Key: ARTEMIS-1980 > URL: https://issues.apache.org/jira/browse/ARTEMIS-1980 > Project: ActiveMQ Artemis > Issue Type: Improvement > Components: Broker >Affects Versions: 2.6.2 >Reporter: Francesco Nigro >Assignee: Francesco Nigro >Priority: Trivial > Fix For: 2.7.0 > > Original Estimate: 1h > Remaining Estimate: 1h > > DB2 metadata checks should erroneously report stale table existence on > not existing/just deleted table, making the subsequent warning logs of failed > SELECT COUNT useless and scaring: should be better to let them lowered to > INFO level, avoiding users log reporting tools (if any) to react to an > expected behaviour. > -- This message was sent by Atlassian JIRA (v7.6.3#76005)
[jira] [Commented] (ARTEMIS-2103) VirtualTopic doesn't work correctly with multiple consumers
[ https://issues.apache.org/jira/browse/ARTEMIS-2103?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16638113#comment-16638113 ] ASF GitHub Bot commented on ARTEMIS-2103: - Github user gtully commented on the issue: https://github.com/apache/activemq-artemis/pull/2341 going to try again, the tests that fails is lease.tryAquire/renew which seems to be b/c it happens in the same millisecond. Will work on a fix for that. > VirtualTopic doesn't work correctly with multiple consumers > --- > > Key: ARTEMIS-2103 > URL: https://issues.apache.org/jira/browse/ARTEMIS-2103 > Project: ActiveMQ Artemis > Issue Type: Bug > Components: Broker, OpenWire >Affects Versions: 2.6.3 >Reporter: Pawel >Assignee: Gary Tully >Priority: Major > > It's impossibe to subscribe multiple virtual topics with the same consumer > name. > I've configured acceptor like described in documentation: > {code:java} > tcp://0.0.0.0:61616?tcpSendBufferSize=1048576;tcpReceiveBufferSize=1048576;protocols=CORE,AMQP,STOMP,HORNETQ,MQTT,OPENWIRE;useEpoll=true;amqpCredits=1000;amqpLowCredits=300;virtualTopicConsumerWildcards=Consumer.*.%3E%3B2{code} > When I'm connecting first consumer: > *Consumer.cons1.VirtualTopic.t1* > proper binding is created. > Next I'm trying to connect second consumer with the same name: > *Consumer.cons1.VirtualTopic.t2* > But no binding is created. -- This message was sent by Atlassian JIRA (v7.6.3#76005)
[jira] [Commented] (ARTEMIS-2103) VirtualTopic doesn't work correctly with multiple consumers
[ https://issues.apache.org/jira/browse/ARTEMIS-2103?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16638115#comment-16638115 ] ASF GitHub Bot commented on ARTEMIS-2103: - GitHub user gtully reopened a pull request: https://github.com/apache/activemq-artemis/pull/2341 ARTEMIS-2103 - use the full openwire consumer queue for the mapped vi… …rtual topic queue binding, fix and test You can merge this pull request into a Git repository by running: $ git pull https://github.com/gtully/activemq-artemis ARTEMIS-2103 Alternatively you can review and apply these changes as the patch at: https://github.com/apache/activemq-artemis/pull/2341.patch To close this pull request, make a commit to your master/trunk branch with (at least) the following in the commit message: This closes #2341 commit 6281101971bdbc32f8932738b59f01cf3adfbd0d Author: gtully Date: 2018-10-03T12:24:42Z ARTEMIS-2103 - use the full openwire consumer queue for the mapped virtual topic queue binding, fix and test > VirtualTopic doesn't work correctly with multiple consumers > --- > > Key: ARTEMIS-2103 > URL: https://issues.apache.org/jira/browse/ARTEMIS-2103 > Project: ActiveMQ Artemis > Issue Type: Bug > Components: Broker, OpenWire >Affects Versions: 2.6.3 >Reporter: Pawel >Assignee: Gary Tully >Priority: Major > > It's impossibe to subscribe multiple virtual topics with the same consumer > name. > I've configured acceptor like described in documentation: > {code:java} > tcp://0.0.0.0:61616?tcpSendBufferSize=1048576;tcpReceiveBufferSize=1048576;protocols=CORE,AMQP,STOMP,HORNETQ,MQTT,OPENWIRE;useEpoll=true;amqpCredits=1000;amqpLowCredits=300;virtualTopicConsumerWildcards=Consumer.*.%3E%3B2{code} > When I'm connecting first consumer: > *Consumer.cons1.VirtualTopic.t1* > proper binding is created. > Next I'm trying to connect second consumer with the same name: > *Consumer.cons1.VirtualTopic.t2* > But no binding is created. -- This message was sent by Atlassian JIRA (v7.6.3#76005)
[jira] [Commented] (ARTEMIS-2103) VirtualTopic doesn't work correctly with multiple consumers
[ https://issues.apache.org/jira/browse/ARTEMIS-2103?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16638114#comment-16638114 ] ASF GitHub Bot commented on ARTEMIS-2103: - Github user gtully closed the pull request at: https://github.com/apache/activemq-artemis/pull/2341 > VirtualTopic doesn't work correctly with multiple consumers > --- > > Key: ARTEMIS-2103 > URL: https://issues.apache.org/jira/browse/ARTEMIS-2103 > Project: ActiveMQ Artemis > Issue Type: Bug > Components: Broker, OpenWire >Affects Versions: 2.6.3 >Reporter: Pawel >Assignee: Gary Tully >Priority: Major > > It's impossibe to subscribe multiple virtual topics with the same consumer > name. > I've configured acceptor like described in documentation: > {code:java} > tcp://0.0.0.0:61616?tcpSendBufferSize=1048576;tcpReceiveBufferSize=1048576;protocols=CORE,AMQP,STOMP,HORNETQ,MQTT,OPENWIRE;useEpoll=true;amqpCredits=1000;amqpLowCredits=300;virtualTopicConsumerWildcards=Consumer.*.%3E%3B2{code} > When I'm connecting first consumer: > *Consumer.cons1.VirtualTopic.t1* > proper binding is created. > Next I'm trying to connect second consumer with the same name: > *Consumer.cons1.VirtualTopic.t2* > But no binding is created. -- This message was sent by Atlassian JIRA (v7.6.3#76005)
[jira] [Created] (ARTEMIS-2109) Cannot build Artemis with JDK 11
Miroslav Novak created ARTEMIS-2109: --- Summary: Cannot build Artemis with JDK 11 Key: ARTEMIS-2109 URL: https://issues.apache.org/jira/browse/ARTEMIS-2109 Project: ActiveMQ Artemis Issue Type: Bug Components: Broker Affects Versions: 2.6.3 Reporter: Miroslav Novak Artemis cannot be build with JDK 11: {code} $ java -version openjdk version "11" 2018-09-25 OpenJDK Runtime Environment 18.9 (build 11+28) OpenJDK 64-Bit Server VM 18.9 (build 11+28, mixed mode) {code} Build fails with: {code} $ mvn clean install ... [INFO] [INFO] Building ActiveMQ Artemis Parent 2.7.0-SNAPSHOT [INFO] [INFO] [INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ artemis-pom --- [INFO] Deleting /home/mnovak/projects/activemq-artemis/target [INFO] [INFO] --- maven-enforcer-plugin:1.4:enforce (enforce-maven) @ artemis-pom --- [INFO] [INFO] --- maven-enforcer-plugin:1.4:enforce (enforce-java) @ artemis-pom --- [INFO] [INFO] Reactor Summary: [INFO] [INFO] ActiveMQ Artemis Parent FAILURE [ 0.302 s] [INFO] ActiveMQ Artemis Commons ... SKIPPED [INFO] ActiveMQ Artemis Core Client ... SKIPPED [INFO] ActiveMQ Artemis Selector Implementation ... SKIPPED [INFO] ActiveMQ Artemis JMS Client SKIPPED [INFO] ActiveMQ Artemis Native POM SKIPPED [INFO] ActiveMQ Artemis Journal ... SKIPPED [INFO] ActiveMQ Artemis JDBC Store SKIPPED [INFO] ActiveMQ Artemis Server SKIPPED [INFO] ActiveMQ Artemis Protocols . SKIPPED [INFO] ActiveMQ Artemis AMQP Protocol . SKIPPED [INFO] ActiveMQ Artemis STOMP Protocol SKIPPED [INFO] ActiveMQ Artemis OpenWire Protocol . SKIPPED [INFO] ActiveMQ Artemis HQClient Protocol . SKIPPED [INFO] ActiveMQ Artemis HornetQ Protocol .. SKIPPED [INFO] ActiveMQ Artemis MQTT Protocol . SKIPPED [INFO] ActiveMQ Artemis DTO ... SKIPPED [INFO] ActiveMQ Artemis Service Extensions SKIPPED [INFO] ActiveMQ Artemis JMS Server SKIPPED [INFO] ActiveMQ Artemis CDI Integration ... SKIPPED [INFO] ActiveMQ Artemis Boot .. SKIPPED [INFO] ActiveMQ Artemis Tools . SKIPPED [INFO] ActiveMQ Artemis CLI ... SKIPPED [INFO] ActiveMQ Artemis Web ... SKIPPED [INFO] ActiveMQ Artemis Web ... SKIPPED [INFO] ActiveMQ Artemis Core Client All ... SKIPPED [INFO] ActiveMQ Artemis Client OSGi ... SKIPPED [INFO] ActiveMQ Artemis JUnit Rules ... SKIPPED [INFO] ActiveMQ Artemis JMS Client All SKIPPED [INFO] ActiveMQ Artemis JMS Client OSGi ... SKIPPED [INFO] ActiveMQ Artemis RAR POM ... SKIPPED [INFO] ActiveMQ Artemis REST Interface Implementation . SKIPPED [INFO] ActiveMQ Artemis Maven Plugin .. SKIPPED [INFO] ActiveMQ Artemis Server OSGi ... SKIPPED [INFO] ActiveMQ Artemis Cons .. SKIPPED [INFO] ActiveMQ Artemis HawtIO Branding ... SKIPPED [INFO] ActiveMQ Artemis HawtIO Plugin . SKIPPED [INFO] ActiveMQ Artemis Console ... SKIPPED [INFO] ActiveMQ Artemis Spring Integration SKIPPED [INFO] Apache ActiveMQ Artemis Distribution ... SKIPPED [INFO] ActiveMQ Artemis Tests POM . SKIPPED [INFO] ActiveMQ Artemis Test Support .. SKIPPED [INFO] ActiveMQ Artemis Unit Tests SKIPPED [INFO] ActiveMQ Artemis Joram Tests ... SKIPPED [INFO] ActiveMQ Artemis timing Tests .. SKIPPED [INFO] ActiveMQ Artemis JMS Tests . SKIPPED [INFO] ActiveMQ Artemis Features .. SKIPPED [INFO] ActiveMQ Artemis Integration Tests . SKIPPED [INFO] ActiveMQ Artemis Client Integration Tests .. SKIPPED [INFO] ActiveMQ Artemis Compatibility Tests ... SKIPPED [INFO] ActiveMQ Artemis soak Tests SKIPPED [INFO] ActiveMQ Artemis stress Tests .. SKIPPED [INFO] ActiveMQ Artemis performance Tests . SKIPPED [INFO] Smoke Tests SKIPPED [INFO]
[jira] [Commented] (ARTEMIS-2104) Implement tests for Import/Export (replay) of messages
[ https://issues.apache.org/jira/browse/ARTEMIS-2104?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16637911#comment-16637911 ] ASF GitHub Bot commented on ARTEMIS-2104: - Github user michalxo commented on the issue: https://github.com/apache/activemq-artemis/pull/2260 Can this be merged now? > Implement tests for Import/Export (replay) of messages > -- > > Key: ARTEMIS-2104 > URL: https://issues.apache.org/jira/browse/ARTEMIS-2104 > Project: ActiveMQ Artemis > Issue Type: Test > Components: Broker >Reporter: Oleg Sushchenko >Priority: Major > -- This message was sent by Atlassian JIRA (v7.6.3#76005)