users@glassfish.java.net

EJB Timer, JPA Entities, XA Transaction Glassfishv3 stops flushing updates.

From: <glassfish_at_javadesktop.org>
Date: Fri, 25 Jun 2010 01:24:58 PDT

I have a timer which reads entities A from database A and which creates or if it already exists updates entities B in database B. This timer ran for over a year in glassfishv2 with no problem.

After moving the application to glassfishv3 (now 3.0.1) updates to entity B stop been flushed to database B after a random amount of time (1 - 12 hours) while the respective update to entity A in database A is flushed (this is within an XA transaction). The crazy thing is the inserts for new entities B are flushed to database B correctly even when the updates are not. To make it even more arbitrary when the majority of updates stop flushing one or two may be flushed per hour

If I later manually update records in database A so that they are picked up by this timer they are correctly updated in database B until the updates stop working again.

I have disabled object and query cache in eclipselink to see if that made any difference and I turned logging to FINE and no exceptions are been thrown.

Database A is MySQL and database B is Oracle. The connection pools are configured the same as they were for glassfishv2.

What could be causing this strange behaviour and what can I do to try and debug it?

Here is a grep for the eclipselink SQL commands from the log files showing updates stopping but inserts continuing:

-bash-3.00# grep "INSERT INTO AccountSession" server.log_2010-06-24T19-* | wc -l
     823
-bash-3.00# grep "INSERT INTO AccountSession" server.log_2010-06-24T20-* | wc -l
    1056
-bash-3.00# grep "INSERT INTO AccountSession" server.log_2010-06-24T21-* | wc -l
    1427
-bash-3.00# grep "INSERT INTO AccountSession" server.log_2010-06-24T22-* | wc -l
     966
-bash-3.00# grep "INSERT INTO AccountSession" server.log_2010-06-24T23-* | wc -l
    1132

-bash-3.00# grep "UPDATE AccountSession" server.log_2010-06-24T19-* | wc -l
    8401
-bash-3.00# grep "UPDATE AccountSession" server.log_2010-06-24T20-* | wc -l
    8895
-bash-3.00# grep "UPDATE AccountSession" server.log_2010-06-24T21-* | wc -l
    5731
-bash-3.00# grep "UPDATE AccountSession" server.log_2010-06-24T22-* | wc -l
    1616
-bash-3.00# grep "UPDATE AccountSession" server.log_2010-06-24T23-* | wc -l
       1
[Message sent by forum member 'justinwyer']

http://forums.java.net/jive/thread.jspa?messageID=475780