You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@activemq.apache.org by franz1981 <gi...@git.apache.org> on 2017/12/06 16:37:13 UTC

[GitHub] activemq-artemis pull request #1691: ARTEMIS-1541 Make the JDBC Node Manager...

GitHub user franz1981 opened a pull request:

    https://github.com/apache/activemq-artemis/pull/1691

    ARTEMIS-1541 Make the JDBC Node Manager more resilient on failures

    In order to make the JDBC Node Manager more resilient has been implemented:
    - lowered from SERIALIZABLE to READ_COMMITTED Isolation level on NodeId setup to avoid
      ad-hoc (ie per DBMS) handling of failures
    - recovering with fixed number of retries during the NodeId setup + unrecoverable failure otherwise
    - unrecoverable fail on exceptions while renewing a lease lock
    
    In addition, in different parts of these critical processes are added more log informations to help diagnose.

You can merge this pull request into a Git repository by running:

    $ git pull https://github.com/franz1981/activemq-artemis jdbc_ha_improvements

Alternatively you can review and apply these changes as the patch at:

    https://github.com/apache/activemq-artemis/pull/1691.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 #1691
    
----

----


---

[GitHub] activemq-artemis pull request #1691: ARTEMIS-1541 Make the JDBC Node Manager...

Posted by franz1981 <gi...@git.apache.org>.
Github user franz1981 closed the pull request at:

    https://github.com/apache/activemq-artemis/pull/1691


---

[GitHub] activemq-artemis issue #1691: ARTEMIS-1541 Make the JDBC Node Manager more r...

Posted by mtaylor <gi...@git.apache.org>.
Github user mtaylor commented on the issue:

    https://github.com/apache/activemq-artemis/pull/1691
  
    @franz1981 nice one.  Did you test this against all our current supported databases?  Our CI currently doesn't cover DB tests.


---

[GitHub] activemq-artemis issue #1691: ARTEMIS-1541 Make the JDBC Node Manager more r...

Posted by franz1981 <gi...@git.apache.org>.
Github user franz1981 commented on the issue:

    https://github.com/apache/activemq-artemis/pull/1691
  
    @mtaylor I've performed the failover tests on other DBMS and it is working as expected, but disabling the `ThreadLeakCheckRule` due to a "known" leak on the Oracle thin driver - the uninterruptible/unstoppable/unbreakable `oracle.jdbc.driver.BlockSource.ThreadedCachingBlockSource.BlockReleaser` thread:
    ```
    public void run() {
                    while(true) {
                        try {
                            BlockSource.ThreadedCachingBlockSource.BlockReleaser var1 = SOLE_INSTANCE;
                            synchronized(SOLE_INSTANCE) {
                                SOLE_INSTANCE.wait(300000L);
                            }
    
                            BlockSource.ThreadedCachingBlockSource.releaseFromAllSources();
                        } catch (Throwable var4) {
                            ;
                        }
                    }
                }
    ```



---

[GitHub] activemq-artemis pull request #1691: ARTEMIS-1541 Make the JDBC Node Manager...

Posted by asfgit <gi...@git.apache.org>.
Github user asfgit closed the pull request at:

    https://github.com/apache/activemq-artemis/pull/1691


---

[GitHub] activemq-artemis issue #1691: ARTEMIS-1541 Make the JDBC Node Manager more r...

Posted by franz1981 <gi...@git.apache.org>.
Github user franz1981 commented on the issue:

    https://github.com/apache/activemq-artemis/pull/1691
  
    @mtaylor Thanks! And good point: I need to do further tests with the different DBMS first :+1: 


---

[GitHub] activemq-artemis issue #1691: ARTEMIS-1541 Make the JDBC Node Manager more r...

Posted by franz1981 <gi...@git.apache.org>.
Github user franz1981 commented on the issue:

    https://github.com/apache/activemq-artemis/pull/1691
  
    @mtaylor The CI tests hasn't shown any regression due to this PR :+1: 


---

[GitHub] activemq-artemis pull request #1691: ARTEMIS-1541 Make the JDBC Node Manager...

Posted by franz1981 <gi...@git.apache.org>.
GitHub user franz1981 reopened a pull request:

    https://github.com/apache/activemq-artemis/pull/1691

    ARTEMIS-1541 Make the JDBC Node Manager more resilient on failures

    In order to make the JDBC Node Manager more resilient has been implemented:
    - recovering with fixed number of retries during the NodeId setup + unrecoverable failure otherwise
    - unrecoverable fail on exceptions while renewing a lease lock
    
    In addition, in different parts of these critical processes are added more log informations to help diagnose.

You can merge this pull request into a Git repository by running:

    $ git pull https://github.com/franz1981/activemq-artemis jdbc_ha_improvements

Alternatively you can review and apply these changes as the patch at:

    https://github.com/apache/activemq-artemis/pull/1691.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 #1691
    
----
commit 70b21725edae28b591b87bb4de0f51364e9cfd50
Author: Francesco Nigro <ni...@gmail.com>
Date:   2017-12-06T10:28:59Z

    ARTEMIS-1541 Make the JDBC Node Manager more resilient on failures
    
    In order to make the JDBC Node Manager more resilient has been implemented:
    - recovering with fixed number of retries during the NodeId setup + unrecoverable failure otherwise
    - unrecoverable fail on exceptions while renewing a lease lock
    
    In addition, in different parts of these critical processes are added more log informations to help diagnose.

----


---

[GitHub] activemq-artemis issue #1691: ARTEMIS-1541 Make the JDBC Node Manager more r...

Posted by mtaylor <gi...@git.apache.org>.
Github user mtaylor commented on the issue:

    https://github.com/apache/activemq-artemis/pull/1691
  
    > Do you mean which versions of which DBMS?
    Yes.
    
    >  how do you propose to do that?
    Just add the driver to the class path and pass in the driver class parameter via system properties.  We do this for other JDBC tests


---

[GitHub] activemq-artemis issue #1691: ARTEMIS-1541 Make the JDBC Node Manager more r...

Posted by franz1981 <gi...@git.apache.org>.
Github user franz1981 commented on the issue:

    https://github.com/apache/activemq-artemis/pull/1691
  
    @mtaylor 
    > and the thread does not cause interference with other tests
    
    That's the part I'm sure of it: it seems that only a SIGKILL can close a process that has any of these threads running-
    
    > Which systems did you run the tests against? 
    
    Do you mean which versions of which DBMS?
    
    > It would be good to have this set up in the CI env
    
    Considering that I'm not sure that is possible to kill gently the Oracle one, how do you propose to do that?
    eg The Oracle thin driver is not on maven AFAIK
    



---

[GitHub] activemq-artemis issue #1691: ARTEMIS-1541 Make the JDBC Node Manager more r...

Posted by franz1981 <gi...@git.apache.org>.
Github user franz1981 commented on the issue:

    https://github.com/apache/activemq-artemis/pull/1691
  
    @mtaylor Please do not merge it yet: I need to run the CI tests first 
    
    @mtaylor @jmesnil How it seems? 



---

[GitHub] activemq-artemis issue #1691: ARTEMIS-1541 Make the JDBC Node Manager more r...

Posted by franz1981 <gi...@git.apache.org>.
Github user franz1981 commented on the issue:

    https://github.com/apache/activemq-artemis/pull/1691
  
    @mtaylor 
    The DBMS I've tested are MySQL 5.7 and Oracle 12 c (and obviously Derby!).
    What I think it worths to do is improve the tests to make them more configurations with ease but I'm thinking to address it as a separate PR in order to not charge this one with other changes, wdyt?



---

[GitHub] activemq-artemis issue #1691: ARTEMIS-1541 Make the JDBC Node Manager more r...

Posted by mtaylor <gi...@git.apache.org>.
Github user mtaylor commented on the issue:

    https://github.com/apache/activemq-artemis/pull/1691
  
    @franz1981 If you really can't kill it and the thread does not cause interference with other tests you can add an exception to the ThreadCheckerRule.  Which systems did you run the tests against?  It would be good to have this set up in the CI env.


---