• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: Remote Synchronizer exceptions
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Remote Synchronizer exceptions


  • Subject: Re: Remote Synchronizer exceptions
  • From: Theodore Petrosky <email@hidden>
  • Date: Mon, 19 Jan 2015 13:02:02 -0500

are you using the default version of ERJGroupsSynchronizer? that was jgroups 2.6.8 they are up to version 3.6.1.

I seem to recall that in a project I had to update jgroups.

Just a thought. I had a similar problem with JasperReports and updating to the newest (almost) version fixed the issue.

Ted

On 1/19/15 12:48 PM, OC wrote:
Hello there,

to sync changes betwixt instances, I am using Remote Synchronizer with the following setup:

===
er.extensions.ERXObjectStoreCoordinatorPool.maxCoordinators=3
er.extensions.remoteSynchronizer.enabled=true
er.extensions.remoteSynchronizer=er.jgroups.ERJGroupsSynchronizer
er.extensions.jgroupsSynchronizer.multicastAddress=230.0.0.1
er.extensions.jgroupsSynchronizer.multicastPort=9753
er.extensions.jgroupsSynchronizer.localBindAddress=127.0.0.1
er.extensions.jgroupsSynchronizer.groupName=REBOIS_SYNC
===

Most time, it works excellently.

Occassionally though, I'm getting exceptions like this

===
15:15:02.574 INFO  Received 97 changes from 127.0.0.1:60979       //log:er.extensions.remoteSynchronizer.ERXRemoteSynchronizer [Incoming-1,REBOIS_SYNC,127.0.0.1:62546]
15:15:02.985 ERROR Exception condition 379. Optimistic locking: multiple transaction conflict detected.at com.frontbase.jdbc.FBJErrorMetaData.errorMessageAtIndex(Unknown Source)
===

(full stack below). It does make sense: while my own save code is written to handle optimistic exceptions properly, the Remote Synchronizer self-evidently is not. But the outcome is rather grave, namely, instances which contain different values in their EO stacks, and which either present the different values to users, or even report weird errors.

(The last case, which lead me to this, was one instance removing an object from a relationship and deleting it from the database. Another instance alas, most probably due to the aforementioned exception, has not been informed that the object was removed from a relationship, and fell to databaseContextFailedToFetchObject. Ick.)

How do you solve this problem? To be frank, I can't see a solution, but for writing my own Remote Synchronizer, which I would rather do without for time reasons...

Thanks for any advice,
OC

=== full stack trace of the exception in case it helps any ===
15:15:02.574 INFO  Received 97 changes from 127.0.0.1:60979       //log:er.extensions.remoteSynchronizer.ERXRemoteSynchronizer [Incoming-1,REBOIS_SYNC,127.0.0.1:62546]
15:15:02.985 ERROR Exception condition 379. Optimistic locking: multiple transaction conflict detected.at com.frontbase.jdbc.FBJErrorMetaData.errorMessageAtIndex(Unknown Source)
at com.frontbase.jdbc.FBJErrorMetaData.getExceptionChain(Unknown Source)
at com.frontbase.jdbc.FBJConnection.checkMetaData(Unknown Source)
at com.frontbase.jdbc.FBJConnection.commit(Unknown Source)
at com.webobjects.jdbcadaptor.JDBCContext.commitTransaction(JDBCContext.java:452)
at com.webobjects.jdbcadaptor.JDBCChannel._endFetch(JDBCChannel.java:417)
at com.webobjects.jdbcadaptor.JDBCChannel.fetchRow(JDBCChannel.java:1458)
at com.webobjects.eoaccess.EODatabaseChannel._fetchObject(EODatabaseChannel.java:321)
at com.webobjects.eoaccess.EODatabaseContext._objectsWithFetchSpecificationEditingContext(EODatabaseContext.java:3071)
at er.extensions.eof.ERXDatabaseContext._objectsWithFetchSpecificationEditingContext(ERXDatabaseContext.java:68)
at com.webobjects.eoaccess.EODatabaseContext.objectsWithFetchSpecification(EODatabaseContext.java:3195)
at com.webobjects.eocontrol.EOObjectStoreCoordinator.objectsWithFetchSpecification(EOObjectStoreCoordinator.java:488)
at com.webobjects.eocontrol.EOEditingContext.objectsWithFetchSpecification(EOEditingContext.java:4069)
at er.extensions.eof.ERXEC.objectsWithFetchSpecification(ERXEC.java:1308)
at com.webobjects.eocontrol.EOEditingContext.objectsWithFetchSpecification(EOEditingContext.java:4444)
at er.extensions.eof.ERXEOGlobalIDUtilities.fetchObjectsWithGlobalIDs(ERXEOGlobalIDUtilities.java:290)
at er.extensions.eof.ERXObjectStoreCoordinatorSynchronizer$ProcessChangesQueue$UpdateCacheChangeProcessor.processCacheChange(ERXObjectStoreCoordinatorSynchronizer.java:393)
at er.extensions.eof.ERXObjectStoreCoordinatorSynchronizer$ProcessChangesQueue.processRemoteChange(ERXObjectStoreCoordinatorSynchronizer.java:560)
at er.extensions.eof.ERXObjectStoreCoordinatorSynchronizer$ProcessChangesQueue.run(ERXObjectStoreCoordinatorSynchronizer.java:622)
at java.lang.Thread.run(Thread.java:695)

Exception condition 363. Transaction rollback.
        //log:er.extensions.eof.ERXObjectStoreCoordinatorSynchronizer [ERXOSCProcessChanges]
JDBCAdaptorException: Exception condition 379. Optimistic locking: multiple transaction conflict detected.
   at com.webobjects.jdbcadaptor.JDBCContext.commitTransaction(JDBCContext.java:455)
      ... skipped 4 stack elements
   at er.extensions.eof.ERXDatabaseContext._objectsWithFetchSpecificationEditingContext(ERXDatabaseContext.java:68)
      ... skipped 1 stack elements
   at com.webobjects.eocontrol.EOObjectStoreCoordinator.objectsWithFetchSpecification(EOObjectStoreCoordinator.java:488)
   at com.webobjects.eocontrol.EOEditingContext.objectsWithFetchSpecification(EOEditingContext.java:4069)
   at er.extensions.eof.ERXEC.objectsWithFetchSpecification(ERXEC.java:1308)
   at com.webobjects.eocontrol.EOEditingContext.objectsWithFetchSpecification(EOEditingContext.java:4444)
   at er.extensions.eof.ERXEOGlobalIDUtilities.fetchObjectsWithGlobalIDs(ERXEOGlobalIDUtilities.java:290)
   at er.extensions.eof.ERXObjectStoreCoordinatorSynchronizer$ProcessChangesQueue$UpdateCacheChangeProcessor.processCacheChange(ERXObjectStoreCoordinatorSynchronizer.java:393)
   at er.extensions.eof.ERXObjectStoreCoordinatorSynchronizer$ProcessChangesQueue.processRemoteChange(ERXObjectStoreCoordinatorSynchronizer.java:560)
   at er.extensions.eof.ERXObjectStoreCoordinatorSynchronizer$ProcessChangesQueue.run(ERXObjectStoreCoordinatorSynchronizer.java:622)
   ... skipped 1 stack elements


  _______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list      (email@hidden)
Help/Unsubscribe/Update your Subscription:

This email sent to email@hidden

_______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list      (email@hidden)
Help/Unsubscribe/Update your Subscription:

This email sent to email@hidden


  • Follow-Ups:
    • Re: Remote Synchronizer exceptions
      • From: OC <email@hidden>
References: 
 >Remote Synchronizer exceptions (From: OC <email@hidden>)

  • Prev by Date: Remote Synchronizer exceptions
  • Next by Date: Re: Model/DB synchronization (was: Migrations (was: ERXSQLHelper))
  • Previous by thread: Remote Synchronizer exceptions
  • Next by thread: Re: Remote Synchronizer exceptions
  • Index(es):
    • Date
    • Thread