Which is the "Production" version of BTM?

classic Classic list List threaded Threaded
6 messages Options
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Which is the "Production" version of BTM?

chrisjr
Hi,

I'm trying to use BTM for a high-availability service running on top of Oracle. However, I have discovered that I *cannot* use BTM 2.1.4 due its lethal amounts of "synchronization" in its XAPool.class.

Basically, our JDBC contains multiple (ADDRESS = (...)) sections: when I configured the firewall to block network access to one of these Oracle servers, the entire application ground to a standstill! I have also discovered that this is an old and well-known problem with the BTM 2.1.x branch:


http://docs.codehaus.org/display/BTM/BTM-2.2

However, I cannot find any reference to btm-2.2.x release in any Maven repository. This strikes me as odd, seeing as BTM 2.2 was mentioned over 2 years ago.

Can anyone help me with this please?
Thanks,
Chris


---------------------------------------------------------------------
To unsubscribe from this list, please visit:

    http://xircles.codehaus.org/manage_email


Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Which is the "Production" version of BTM?

Brett Wooldridge-2
BTM 2.2 was an internal development branch and was never released.  The project has been in transition as Ludovic, the original author and maintainer, has been occupied by other projects.  We have moved the project over to github, but has been keeping the codehaus pages in place.


The master branch of the github repository is what is destined to become the BTM 3.0 release, but the core developers (including myself) have also been too busy with our respective day jobs to pull the trigger on the release.  I can tell you that I made most of the changes in the 3.0 branch, because my company has high-performance demands.  High-performance is certainly different than high-availability, and there is no guarantee that 3.0 solves your issue.

I do consider BTM 3.0-SNAPSHOT to be stable.  My company has delivered it with our system for the past two years, and it is running in some of the largest telecom providers in the world.

I'll talk to Ludovic about what is necessary publish 3.0 as a release candidate.

Brett





On Fri, Mar 21, 2014 at 10:18 AM, Chris Rankin <[hidden email]> wrote:
Hi,

I'm trying to use BTM for a high-availability service running on top of Oracle. However, I have discovered that I *cannot* use BTM 2.1.4 due its lethal amounts of "synchronization" in its XAPool.class.

Basically, our JDBC contains multiple (ADDRESS = (...)) sections: when I configured the firewall to block network access to one of these Oracle servers, the entire application ground to a standstill! I have also discovered that this is an old and well-known problem with the BTM 2.1.x branch:


http://docs.codehaus.org/display/BTM/BTM-2.2

However, I cannot find any reference to btm-2.2.x release in any Maven repository. This strikes me as odd, seeing as BTM 2.2 was mentioned over 2 years ago.

Can anyone help me with this please?
Thanks,
Chris


---------------------------------------------------------------------
To unsubscribe from this list, please visit:

    http://xircles.codehaus.org/manage_email



Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Which is the "Production" version of BTM?

chrisjr
> I do consider BTM 3.0-SNAPSHOT to be stable.  My company has delivered it with our system
> for the past two years, and it is running in some of the largest telecom providers in the world.

> I'll talk to Ludovic about what is necessary publish 3.0 as a release candidate.

Thanks, that would be a big help :-). I am very keen to use BTM, but cannot in good conscience use a -SNAPSHOT version because I wouldn't be able to guarantee the repeatability of my build.

Cheers,
Chris
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Proper JDBC configuration via ResourceLoader

chrisjr
In reply to this post by Brett Wooldridge-2
> High-performance is certainly different than high-availability, and there is no guarantee
> that 3.0 solves your issue.

I have now tested 3.0 and am happy to say that it no longer deadlocks within BTM :-). Any problems seem to have been pushed down into JDBC configuration instead, the most noticeable being that the Oracle JDBC driver tends to hang in Connection.close(). I am suspecting that this is due to me not having set appropriate timeout values:

- oracle.net.CONNECT_TIMEOUT
- oracle.jdbc.ReadTimeout

(Both of these properties are in milliseconds, of course). However, while the first property seems to be equivalent to driverProperties.loginTimeout, the second is actually one of the Oracle JDBC DataSource's "connection properties".

Is there any way to set this connection property via the ResourceLoader, please? I have already tried:

resource.<tag>.driverProperties.connectionProperties.oracle.jdbc.ReadTimeout=<value>

but it did not work. I have currently resorted to adding "-Doracle.jdbc.ReadTimeout=<value>" to the JVM's command line, but it would be neater to have all of the JDBC configuration in one place.

Thanks,
Chris
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Proper JDBC configuration via ResourceLoader

Ludovic Orban-2
Is your problem the same as the following one? https://github.com/bitronix/btm/issues/14

It could be there's a weakness in the BTM properties code that might be fixable without too much hassle. Would you mind contributing a patch?

--
Ludovic


On Fri, Mar 21, 2014 at 4:59 PM, chrisjr <[hidden email]> wrote:
> High-performance is certainly different than high-availability, and there
is no guarantee
> that 3.0 solves your issue.

I have now tested 3.0 and am happy to say that it no longer deadlocks within
BTM :-). Any problems seem to have been pushed down into JDBC configuration
instead, the most noticeable being that the Oracle JDBC driver tends to hang
in Connection.close(). I am suspecting that this is due to me not having set
appropriate timeout values:

- oracle.net.CONNECT_TIMEOUT
- oracle.jdbc.ReadTimeout

(Both of these properties are in milliseconds, of course). However, while
the first property seems to be equivalent to driverProperties.loginTimeout,
the second is actually one of the Oracle JDBC DataSource's "connection
properties".

Is there any way to set this connection property via the ResourceLoader,
please? I have already tried:

resource.<tag>.driverProperties.connectionProperties.oracle.jdbc.ReadTimeout=<value>

but it did not work. I have currently resorted to adding
"-Doracle.jdbc.ReadTimeout=<value>" to the JVM's command line, but it would
be neater to have all of the JDBC configuration in one place.

Thanks,
Chris



--
View this message in context: http://bitronix-transaction-manager.10986.n7.nabble.com/Which-is-the-Production-version-of-BTM-tp1618p1622.html
Sent from the Bitronix Transaction Manager mailing list archive at Nabble.com.

---------------------------------------------------------------------
To unsubscribe from this list, please visit:

    http://xircles.codehaus.org/manage_email



Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Proper JDBC configuration via ResourceLoader

chrisjr
> Is your problem the same as the following one? https://github.com/bitronix/btm/issues/14

Ha, yes, it's exactly the same. (I know because I raised that issue...)

I have submitted a pull request that fixes it.
Loading...