[CDO] Transaction Notification Issue [message #1714372] |
Thu, 12 November 2015 09:22 |
Samuel Leisering Messages: 34 Registered: July 2014 |
Member |
|
|
Hi
We encountered an issue with the notifications of transactions,
Some Clients are connected to the CDO Server, and every Client does some stuff like opening/closing transactions, reading and writing from and to the server.
The Server recieves around 30 commits/sec, sometimes more, sometimes less. Everything is ok performance-wise.
If another Client connects to the Server it *may* happen after some time that the client gets in a state where the waitForUpdate(timeStamp, 10000); in CDOTransactionImpl.commit *always* gets a timeout on every commit. Because of this, every commit runs for at least 10 seconds. The Data however is commited instantly, and every other client gets an appropriate notification.
We suspected some Performance Issue at this point, but on further inspection in turnes out that this client gets no notifications whatsoever.
Closing the session and transaction and recreating them has no effect, only restarting the client completely works (until it happens again).
We use CDO 4.4, and the Clients connect with a ReconnectingSessionConfiguration. The transactions have the options
transaction.options().addChangeSubscriptionPolicy(CDOAdapterPolicy.ALL);
transaction.options().setInvalidationNotificationEnabled(true);
Greetings,
Samuel
|
|
|
Re: [CDO] Transaction Notification Issue [message #1717107 is a reply to message #1714372] |
Wed, 09 December 2015 22:43 |
Stephane fournier Messages: 340 Registered: July 2009 |
Senior Member |
|
|
Hi Samuel,
I figured out this issue:
In my case, it only happens when you perform a commit within a CDO invalidation notification i.e your transaction is updating with remote changes (commit from a remote client i.e another JVM) and due to the change policy you set to ALL , it can notify eAdapters registered on your CDO Objects that leads to another commit.
To avoid the waitForUpdate(10s) you need to post the eAdapters() implementation that leads to another commit on another thread not the CDOInvalidationOne.
Hope it helps.
Samuel Leisering wrote on Thu, 12 November 2015 04:22Hi
We encountered an issue with the notifications of transactions,
Some Clients are connected to the CDO Server, and every Client does some stuff like opening/closing transactions, reading and writing from and to the server.
The Server recieves around 30 commits/sec, sometimes more, sometimes less. Everything is ok performance-wise.
If another Client connects to the Server it *may* happen after some time that the client gets in a state where the waitForUpdate(timeStamp, 10000); in CDOTransactionImpl.commit *always* gets a timeout on every commit. Because of this, every commit runs for at least 10 seconds. The Data however is commited instantly, and every other client gets an appropriate notification.
We suspected some Performance Issue at this point, but on further inspection in turnes out that this client gets no notifications whatsoever.
Closing the session and transaction and recreating them has no effect, only restarting the client completely works (until it happens again).
We use CDO 4.4, and the Clients connect with a ReconnectingSessionConfiguration. The transactions have the options
transaction.options().addChangeSubscriptionPolicy(CDOAdapterPolicy.ALL);
transaction.options().setInvalidationNotificationEnabled(true);
Greetings,
Samuel
|
|
|
Powered by
FUDForum. Page generated in 0.03136 seconds