You made a good point I didn’t think
about: in some phase of the commit the exception throw by RAC may impact other
resources enlisted in the same transaction, then it’s out of scope for
EclipseLink to handle those cases. However, I can imagine a strong integration
between Oracle RAC and EclipseLink that could handle this special case ->
RAC could not send any error to the resource manager but instead ask
EclipseLink to retry directly with the new DB.
I cannot find any entry point about
EclipseLink default recovery timing settings, is it a concept that already
exist? With current EclipseLink code, if I use RAC, should I preferably set
anything different with EclipseLink settings?
From: eclipselink-users-bounces@xxxxxxxxxxx
[mailto:eclipselink-users-bounces@xxxxxxxxxxx] On Behalf Of Gordon Yorke
Sent: Thursday, November 13, 2008
8:08 AM
To: EclipseLink User Discussions
Subject: Re: [eclipselink-users]
What kind of Oracle Real Application Clusters(RAC) support EclipseLink
provides?
Hello Sebastien,
EclipseLink does support retrying queries executed outside
of a transaction but inside a transaction EclipseLink will return the SQL
Exception to the application so that the transaction can be replayed as
EclipseLink EM may not be th only participant in a transaction.
For a Java SE deployment I can see how it would be useful to
recommit an EntityManager transaction but depending on how many flushes
occurred and what other application threads were active on the recovery
database the transaction may no longer be valid (ie if your changes were in
reaction to certain existing state).
We could add a feature to support the simple case.
Also please note that you may need to configure the query
retry specifically for RAC as RAC recovery times can be longer than the default
recovery timing settings in EclipseLink. To update these settings
currently you will need a Session Customizer to set the values on the Session's
DatabaseLogin.
--Gordon
Sebastien Tardif wrote:
What kind of Oracle Real Application
Clusters (RAC) support EclipseLink provides?
We use RAC so we get failover at
DB/connection level, but it will be nice since we exclusively access the DB via
EclipseLink, that EclipseLink provide the failover at application level by:
retry query (read) if one RAC DB fail during execution
restart commit phase (write), including previous flush if one RAC
DB fail during the commit phase
_______________________________________________
eclipselink-users mailing list
eclipselink-users@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/eclipselink-users