if you are interested, I have ERJGroupsSynchronizer set up with jGroups 3.6.1. I could zip it up and you could try it, if you like.

There are some internals that had to be adjusted, but when I updated ERJGroupsSynchronizer, I worked directly with Bela (jGroups author) to understand the changes needed. In a nutshell, he eliminated his Exception checking and changed to use the Java Exceptions. remove the section:

if (ERXProperties.booleanForKeyWithDefault("er.extensions.jgroupsSynchronizer.autoReconnect", true)) {
      _channel.setOpt(Channel.AUTO_RECONNECT, Boolean.TRUE);
}
as (in his words) Shunning was removed a long time ago.

there are a couple of others and he said, <bela__> tedpet: I also suggest use a config file shipped with the version you download, e.g. udp.xml, and then make slight modifications to it, if needed"

Or if I could figure this out, I would push my changes up to Wonder!

Ted

On 1/20/15 7:40 AM, OC wrote:
Indeed, 2.6.8 it is. I'll try to upgrade, thanks!

(Is there some trick to upgrade in a smart way, so as I will not have to 
manually re-check the current version when I am next time upgrading the 
complete WOnder? At the moment I can't see one, but that might just mean I'm 
blind.)

Thanks a lot,
OC

On 19. 1. 2015, at 19:02, Theodore Petrosky <[email protected]> wrote:

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 protected])
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/webobjects-dev/tedpet5%40yahoo.com

This email sent to [email protected]

_______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list      ([email protected])
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com

This email sent to [email protected]

Reply via email to