Home » Modeling » EMF » [CDO] Problem running clone example
[CDO] Problem running clone example [message #968050] |
Fri, 02 November 2012 02:56  |
Eclipse User |
|
|
|
Hi,
I am trying to run the clone example from CDO 4.2-M2 using the bundles org.eclipse.emf.cdo.examples.master and org.eclipse.emf.cdo.examples.clone.
I changed the configuration of the master server as follows:
<property name="overrideUUID" value=""/>
<property name="supportingAudits" value="true"/>
<property name="supportingBranches" value="true"/>
<property name="supportingEcore" value="false"/>
<property name="ensureReferentialIntegrity" value="false"/>
<property name="allowInterruptRunningQueries" value="true"/>
<property name="idGenerationLocation" value="CLIENT"/>
Then I start the master server with an empty database and when starting the clone server with an empty database the clone throws an exception:
[WARN] Replication attempt failed. Retrying in 2 seconds...
org.eclipse.emf.cdo.common.util.TransportException: java.io.UTFDataFormatException: malformed input around byte 3
at org.eclipse.emf.cdo.internal.net4j.protocol.CDOClientProtocol.send(CDOClientProtocol.java:526)
at org.eclipse.emf.cdo.internal.net4j.protocol.CDOClientProtocol.replicateRepositoryRaw(CDOClientProtocol.java:450)
at org.eclipse.emf.cdo.internal.server.syncing.RepositorySynchronizer$ReplicateRunnable.run(RepositorySynchronizer.java:449)
at org.eclipse.net4j.util.concurrent.QueueRunner.work(QueueRunner.java:26)
at org.eclipse.net4j.util.concurrent.QueueRunner.work(QueueRunner.java:1)
at org.eclipse.net4j.util.concurrent.QueueWorker.doWork(QueueWorker.java:88)
at org.eclipse.net4j.util.concurrent.QueueWorker.work(QueueWorker.java:79)
at org.eclipse.net4j.util.concurrent.Worker$WorkerThread.run(Worker.java:206)
Caused by: java.io.UTFDataFormatException: malformed input around byte 3
at java.io.DataInputStream.readUTF(Unknown Source)
at java.io.DataInputStream.readUTF(Unknown Source)
at org.eclipse.net4j.util.io.ExtendedIOUtil.readString(ExtendedIOUtil.java:201)
at org.eclipse.net4j.util.io.ExtendedDataInputStream.readString(ExtendedDataInputStream.java:36)
at org.eclipse.net4j.util.io.ExtendedDataInput$Delegating.readString(ExtendedDataInput.java:135)
at org.eclipse.net4j.db.DBType$13.readValueWithResult(DBType.java:440)
at org.eclipse.net4j.db.DBUtil.deserializeTable(DBUtil.java:1004)
at org.eclipse.net4j.db.DBUtil.deserializeTable(DBUtil.java:944)
at org.eclipse.emf.cdo.server.internal.db.DBStoreAccessor.rawImport(DBStoreAccessor.java:1142)
at org.eclipse.emf.cdo.internal.server.syncing.SynchronizableRepository.replicateRaw(SynchronizableRepository.java:352)
at org.eclipse.emf.cdo.internal.net4j.protocol.ReplicateRepositoryRawRequest.confirming(ReplicateRepositoryRawRequest.java:45)
at org.eclipse.emf.cdo.internal.net4j.protocol.ReplicateRepositoryRawRequest.confirming(ReplicateRepositoryRawRequest.java:1)
at org.eclipse.emf.cdo.internal.net4j.protocol.CDOClientRequestWithMonitoring.confirming(CDOClientRequestWithMonitoring.java:117)
at org.eclipse.net4j.signal.RequestWithMonitoring.confirming(RequestWithMonitoring.java:171)
at org.eclipse.net4j.signal.RequestWithConfirmation.doExtendedInput(RequestWithConfirmation.java:125)
at org.eclipse.net4j.signal.Signal.doInput(Signal.java:328)
What am I doing wrong?
Another thing: I understood that the clone needs branching support, but does the master also need branching support and if yes, I would like to know why.
Thanks
//Jan
|
|
| | | | | | | | | | | | | |
Re: [CDO] Problem running clone example [message #980108 is a reply to message #980060] |
Sun, 11 November 2012 06:02   |
Eclipse User |
|
|
|
Dear Eike,
What I discovered until now:
I see that the exception always happens after processing the DataInput that looks like this. I mean, this is processed ok, but the next invocation of ExtendedIOUtil.readString(DataInput) would throw the exception. The DataInput seems to be empty.
[h, t, t, p, :, /, /, w, w, w, ., e, c, l, i, p, s, e, ., o, r, g, /, e, m, f, /, C, D, O, /, E, r, e, s, o, u, r, c, e, /, 4, ., 0, ., 0,
Daemon Thread [CDORepositorySynchronizer] (Suspended)
owns: Object (id=41)
ExtendedIOUtil.readString(DataInput) line: 192
ExtendedDataInputStream.readString() line: 36
CDOClientRequestWithMonitoring$2(ExtendedDataInput$Delegating).readString() line: 135
StringCompressor.readString(ExtendedDataInput) line: 330
StringCompressor.read(ExtendedDataInput) line: 175
CDOClientRequestWithMonitoring$2(CDODataInputImpl).readCDOPackageURI() line: 159
CDOPackageInfoImpl.read(CDODataInput) line: 90
CDOClientRequestWithMonitoring$2(CDODataInputImpl).readCDOPackageInfo() line: 153
CDOPackageUnitImpl.read(CDODataInput, ResourceSet) line: 316
CDOClientRequestWithMonitoring$2(CDODataInputImpl).readCDOPackageUnit(ResourceSet) line: 124
CDOClientRequestWithMonitoring$2(CDODataInputImpl).readCDOPackageUnits(ResourceSet) line: 139
OpenSessionRequest.confirming(CDODataInput, OMMonitor) line: 223
OpenSessionRequest.confirming(CDODataInput, OMMonitor) line: 1
OpenSessionRequest(CDOClientRequestWithMonitoring<RESULT>).confirming(ExtendedDataInputStream, OMMonitor) line: 117
OpenSessionRequest(RequestWithMonitoring<RESULT>).confirming(ExtendedDataInputStream) line: 171
OpenSessionRequest(RequestWithConfirmation<RESULT>).doExtendedInput(ExtendedDataInputStream) line: 125
OpenSessionRequest(Signal).doInput(BufferInputStream) line: 328
OpenSessionRequest(RequestWithConfirmation<RESULT>).doExecute(BufferInputStream, BufferOutputStream) line: 105
OpenSessionRequest(RequestWithMonitoring<RESULT>).doExecute(BufferInputStream, BufferOutputStream) line: 235
OpenSessionRequest(SignalActor).execute(BufferInputStream, BufferOutputStream) line: 53
OpenSessionRequest(Signal).runSync() line: 253
CDOClientProtocol(SignalProtocol<INFRA_STRUCTURE>).startSignal(SignalActor, long) line: 431
OpenSessionRequest(RequestWithConfirmation<RESULT>).doSend(long) line: 89
OpenSessionRequest(RequestWithConfirmation<RESULT>).send() line: 75
OpenSessionRequest(RequestWithMonitoring<RESULT>).send() line: 97
CDOClientProtocol.send(RequestWithConfirmation<RESULT>) line: 502
CDOClientProtocol.openSession(String, String, boolean, CDOCommonSession$Options$PassiveUpdateMode, CDOCommonSession$Options$LockNotificationMode) line: 109
CDONet4jSessionImpl.openSession() line: 227
CDONet4jSessionImpl.doActivate() line: 125
CDONet4jSessionImpl(Lifecycle).internalActivate() line: 76
CDONet4jSessionImpl(ShareableLifecycle).internalActivate() line: 43
CDONet4jSessionImpl(Lifecycle).activate() line: 162
CDONet4jSessionConfigurationImpl(CDOSessionConfigurationImpl).openSession() line: 310
CDONet4jSessionConfigurationImpl.openNet4jSession() line: 104
CDONet4jSessionConfigurationImpl.openSession() line: 110
CDONet4jSessionConfigurationImpl.openSession() line: 1
RepositorySynchronizer$ConnectRunnable.run() line: 353
RepositorySynchronizer(QueueRunner2<T>).work(WorkContext, T) line: 26
RepositorySynchronizer(QueueRunner2<T>).work(Worker$WorkContext, Object) line: 1
RepositorySynchronizer(QueueWorker<E>).doWork(Worker$WorkContext) line: 88
RepositorySynchronizer(QueueWorker<E>).work(Worker$WorkContext) line: 79
Worker$WorkerThread.run() line: 206
Another thing, or question: I see that each time the client tries to reconnect:
...
Opened Session77 [repo1]
Opened Session78 [repo1]
...
it creates new threads:
...
Daemon Thread [Net4jReceiveSerializer-Channel[77, CLIENT, cdo]] (Suspended)
Daemon Thread [Net4jReceiveSerializer-Channel[78, CLIENT, cdo]] (Suspended)
...
but after the exception happens, the threads don't disappear, and they seem to enter in sleep, both client and server.
...
Daemon Thread [Net4jReceiveSerializer-Channel[77, SERVER, cdo]] (Running)
Daemon Thread [Net4jReceiveSerializer-Channel[78, SERVER, cdo]] (Running)
...
I think that the connection with the server is somehow not ended properly. If I'm not mistaking, this scenario, with a client failing in this way, could kill a production server, suffocating it with a lot of threads.
As this not happens on your setup, can you give me some hints regarding where I could put breakpoints and what should I look for?
Best regards,
Cristian.
|
|
|
Re: [CDO] Problem running clone example [message #980179 is a reply to message #980108] |
Sun, 11 November 2012 07:25   |
Eclipse User |
|
|
|
Am 11.11.2012 12:02, schrieb Cristian Mising name:
> Dear Eike,
>
> What I discovered until now:
>
> I see that the exception always happens after processing the DataInput that looks like this. I mean, this is processed
> ok, but the next invocation of ExtendedIOUtil.readString(DataInput) would throw the exception. The DataInput seems to
> be empty.
Thanks for the infos. Can you please submit a bugzilla? I'm currently analyzing another strange effect with fail-over
replication. Thanks to the new example suite it's very easy now to play with the stuff and see issues we've not covered
in the tests. Of course this may take a while...
Cheers
/Eike
----
http://www.esc-net.de
http://thegordian.blogspot.com
http://twitter.com/eikestepper
>
> [h, t, t, p, :, /, /, w, w, w, ., e, c, l, i, p, s, e, ., o, r, g, /, e, m, f, /, C, D, O, /, E, r, e, s, o, u, r, c,
> e, /, 4, ., 0, ., 0,
>
> Daemon Thread [CDORepositorySynchronizer] (Suspended)
> owns: Object (id=41)
> ExtendedIOUtil.readString(DataInput) line: 192
> ExtendedDataInputStream.readString() line: 36
> CDOClientRequestWithMonitoring$2(ExtendedDataInput$Delegating).readString() line: 135
> StringCompressor.readString(ExtendedDataInput) line: 330
> StringCompressor.read(ExtendedDataInput) line: 175
> CDOClientRequestWithMonitoring$2(CDODataInputImpl).readCDOPackageURI() line: 159
> CDOPackageInfoImpl.read(CDODataInput) line: 90
> CDOClientRequestWithMonitoring$2(CDODataInputImpl).readCDOPackageInfo() line: 153
> CDOPackageUnitImpl.read(CDODataInput, ResourceSet) line: 316
> CDOClientRequestWithMonitoring$2(CDODataInputImpl).readCDOPackageUnit(ResourceSet) line: 124
> CDOClientRequestWithMonitoring$2(CDODataInputImpl).readCDOPackageUnits(ResourceSet) line: 139
> OpenSessionRequest.confirming(CDODataInput, OMMonitor) line: 223
> OpenSessionRequest.confirming(CDODataInput, OMMonitor) line: 1
> OpenSessionRequest(CDOClientRequestWithMonitoring<RESULT>).confirming(ExtendedDataInputStream, OMMonitor) line: 117
> OpenSessionRequest(RequestWithMonitoring<RESULT>).confirming(ExtendedDataInputStream) line: 171
> OpenSessionRequest(RequestWithConfirmation<RESULT>).doExtendedInput(ExtendedDataInputStream) line: 125
> OpenSessionRequest(Signal).doInput(BufferInputStream) line: 328
> OpenSessionRequest(RequestWithConfirmation<RESULT>).doExecute(BufferInputStream, BufferOutputStream) line: 105
> OpenSessionRequest(RequestWithMonitoring<RESULT>).doExecute(BufferInputStream, BufferOutputStream) line: 235
> OpenSessionRequest(SignalActor).execute(BufferInputStream, BufferOutputStream) line: 53
> OpenSessionRequest(Signal).runSync() line: 253
> CDOClientProtocol(SignalProtocol<INFRA_STRUCTURE>).startSignal(SignalActor, long) line: 431
> OpenSessionRequest(RequestWithConfirmation<RESULT>).doSend(long) line: 89
> OpenSessionRequest(RequestWithConfirmation<RESULT>).send() line: 75
> OpenSessionRequest(RequestWithMonitoring<RESULT>).send() line: 97
> CDOClientProtocol.send(RequestWithConfirmation<RESULT>) line: 502
> CDOClientProtocol.openSession(String, String, boolean, CDOCommonSession$Options$PassiveUpdateMode,
> CDOCommonSession$Options$LockNotificationMode) line: 109
> CDONet4jSessionImpl.openSession() line: 227
> CDONet4jSessionImpl.doActivate() line: 125
> CDONet4jSessionImpl(Lifecycle).internalActivate() line: 76
> CDONet4jSessionImpl(ShareableLifecycle).internalActivate() line: 43
> CDONet4jSessionImpl(Lifecycle).activate() line: 162
> CDONet4jSessionConfigurationImpl(CDOSessionConfigurationImpl).openSession() line: 310
> CDONet4jSessionConfigurationImpl.openNet4jSession() line: 104
> CDONet4jSessionConfigurationImpl.openSession() line: 110
> CDONet4jSessionConfigurationImpl.openSession() line: 1
> RepositorySynchronizer$ConnectRunnable.run() line: 353
> RepositorySynchronizer(QueueRunner2<T>).work(WorkContext, T) line: 26
> RepositorySynchronizer(QueueRunner2<T>).work(Worker$WorkContext, Object) line: 1
> RepositorySynchronizer(QueueWorker<E>).doWork(Worker$WorkContext) line: 88
> RepositorySynchronizer(QueueWorker<E>).work(Worker$WorkContext) line: 79
> Worker$WorkerThread.run() line: 206
>
>
> Another thing, or question: I see that each time the client tries to reconnect:
>
> ..
> Opened Session77 [repo1]
> Opened Session78 [repo1]
> ..
>
> it creates new threads:
>
> ..
> Daemon Thread [Net4jReceiveSerializer-Channel[77, CLIENT, cdo]] (Suspended)
> Daemon Thread [Net4jReceiveSerializer-Channel[78, CLIENT, cdo]] (Suspended)
> ..
>
> but after the exception happens, the threads don't disappear, and they seem to enter in sleep, both client and server.
>
> ..
> Daemon Thread [Net4jReceiveSerializer-Channel[77, SERVER, cdo]] (Running)
> Daemon Thread [Net4jReceiveSerializer-Channel[78, SERVER, cdo]] (Running)
> ..
>
> I think that the connection with the server is somehow not ended properly. If I'm not mistaking, this scenario, with a
> client failing in this way, could kill a production server, suffocating it with a lot of threads.
>
> As this not happens on your setup, can you give me some hints regarding where I could put breakpoints and what should
> I look for?
>
> Best regards,
> Cristian.
|
|
| |
Goto Forum:
Current Time: Wed Jul 23 14:26:05 EDT 2025
Powered by FUDForum. Page generated in 0.05999 seconds
|