Community
Participate
Working Groups
EclipseLink has query retry support, transaction retry support, and the ability to detect and reject dead connections from it own "internal" connection pool. This support does not work with external connectin pooling (JEE DataSource) to the same degree. We can detect a dead connection on execution or a query or start of a transaction, but we will just return it to the pool, and get it back again unless the DataSource supports some sort of dead connection handling. Most DataSource support testing a connection before giving it out (GridLink). A JTA DataSource must give out the same connection once bound to the transaction. So, our query retry can only work with a non-JTA DataSource that has connection testing enabled. Query retry cannot work with JTA, and transaction retry cannot work with JTA. Our SessionBeanHA test uses a JTA DataSource, so should not be working. The reason it works is that the RAC node failure occurs before the connection is given from the pool, and not during the execution of the query. To fix the test to test query retry the failure should occur durring the execution of the query. To cause this the number of objects should be increaed to 2,000 instead of 2, and the sleep decreased. This should cause a failure in JTA, please include this failure in this bug. To fix this failure a non-JTA DataSource should be define in the persistence.xml. As well we should test the trnasaction retry in a non-JTA DataSource.
We also need to test our new partitioning support with an Oracle RAC. The JPA PartitioningTests are setup to run on a RAC if Oracle is used and the hard-coded "penguin" server is used. The hard-coded service name must be made into a test property, and these tests need to be run as part of our RAC testing. A new suite using UCP, and GridLink will also need to be tested.
The Eclipselink project has moved to Github: https://github.com/eclipse-ee4j/eclipselink