Skip to main content


Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Modeling » EMF » [CDO] Offline Clone: simultanous commits on master and clone cause timeout
[CDO] Offline Clone: simultanous commits on master and clone cause timeout [message #1794943] Tue, 11 September 2018 12:23
Maximilian Junker is currently offline Maximilian JunkerFriend
Messages: 1
Registered: September 2018
Junior Member
Hello,

we are working on an application that should run as two replicated instances. To realize this application we use the offline clone feature of CDO. We use CDO 4.6. In a particular situation the master instance imports data from an external system. During the import, it adds around 10.000 objects in chunks of 100. That means, for a couple of minutes the master instance successively adds 100 objects and commits the transaction. The same transaction is used for the whole import.

In principle this works fine and the data is replicated to the clone. However, if, during the import the clone performs a commit, too, something gets broken. From then on every commit-attempt on the clone fails withs a TimeoutRuntimeException exception. Sometimes, this state is reached after the first commit, sometimes a few commits are possible until the TimeoutRuntimeException happen. Increasing the timeout (CommitInfoTimeout) does not help. The behavior does not change even when the import is finished. After restarting the clone, commiting is possible again.

Additionally we see a couple of excpetions but I am not sure if they are related to the problem. For the transactions we create in the application, we enable durable locking. The exception below stems from an internal transaction used by CDO for the replication (at least this is my interpretation).

[ERROR] Durable locking is not enabled for view Transaction[1:39]
java.lang.IllegalStateException: Durable locking is not enabled for view Transaction[1:39]
at org.eclipse.emf.cdo.internal.server.syncing.SynchronizableRepository.unlockOnMaster(SynchronizableRepository.java:700)
at org.eclipse.emf.cdo.internal.server.syncing.SynchronizableRepository.unlockThrough(SynchronizableRepository.java:708)
at org.eclipse.emf.cdo.internal.server.syncing.SynchronizableRepository.unlock(SynchronizableRepository.java:691)
at org.eclipse.emf.cdo.internal.server.LockingManager$2.onRemoved(LockingManager.java:98)
at org.eclipse.emf.cdo.internal.server.LockingManager$2.onRemoved(LockingManager.java:1)
at org.eclipse.net4j.util.container.ContainerEventAdapter$1.removed(ContainerEventAdapter.java:93)
at org.eclipse.net4j.util.container.SingleDeltaContainerEvent.accept(SingleDeltaContainerEvent.java:91)
at org.eclipse.net4j.util.container.ContainerEventAdapter.notifyContainerEvent(ContainerEventAdapter.java:69)
at org.eclipse.net4j.util.container.ContainerEventAdapter.notifyEvent(ContainerEventAdapter.java:58)
at org.eclipse.net4j.util.event.Notifier.fireEventSafe(Notifier.java:167)
at org.eclipse.net4j.util.event.Notifier.fireEvent(Notifier.java:113)
at org.eclipse.net4j.util.event.Notifier.fireEvent(Notifier.java:89)
at org.eclipse.net4j.util.container.Container.fireEvent(Container.java:62)
at org.eclipse.net4j.util.container.Container.fireContainerEvent(Container.java:67)
at org.eclipse.net4j.util.container.Container.fireElementRemovedEvent(Container.java:77)
at org.eclipse.emf.cdo.internal.server.Session.viewClosed(Session.java:392)
at org.eclipse.emf.cdo.internal.server.View.doDeactivate(View.java:374)
at org.eclipse.net4j.util.lifecycle.Lifecycle.internalDeactivate(Lifecycle.java:129)
at org.eclipse.net4j.util.lifecycle.Lifecycle.deactivate(Lifecycle.java:167)
at org.eclipse.emf.cdo.internal.server.View.close(View.java:366)
at org.eclipse.emf.cdo.internal.server.syncing.SynchronizableRepository.handleCommitInfo(SynchronizableRepository.java:316)
at org.eclipse.emf.cdo.internal.server.syncing.RepositorySynchronizer$CommitRunnable.doRun(RepositorySynchronizer.java:658)
at org.eclipse.emf.cdo.internal.server.syncing.RepositorySynchronizer$RetryingRunnable.run(RepositorySynchronizer.java:581)
at org.eclipse.net4j.util.concurrent.QueueRunner2.work(QueueRunner2.java:26)
at org.eclipse.net4j.util.concurrent.QueueRunner2.work(QueueRunner2.java:1)
at org.eclipse.net4j.util.concurrent.QueueWorker.doWork(QueueWorker.java:78)
at org.eclipse.net4j.util.concurrent.QueueWorker.work(QueueWorker.java:70)
at org.eclipse.net4j.util.concurrent.Worker$WorkerThread.run(Worker.java:217)

Do you have any hint what could cause the problem?

Thanks,
Maximilian

[Updated on: Tue, 11 September 2018 15:15]

Report message to a moderator

Previous Topic:Ecore - method bodies
Next Topic:How to properly limit net4j's thread pool
Goto Forum:
  


Current Time: Sat Sep 22 16:38:15 GMT 2018

Powered by FUDForum. Page generated in 0.01608 seconds
.:: Contact :: Home ::.

Powered by: FUDforum 3.0.2.
Copyright ©2001-2010 FUDforum Bulletin Board Software

Back to the top