Home » Modeling » EMF » [CDO] Problem running clone example
|
Re: [CDO] Problem running clone example [message #968116 is a reply to message #968050] |
Fri, 02 November 2012 07:53 |
|
Am 02.11.2012 07:56, schrieb Jan Rosczak:
> 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
Normally this (or similar protocol problems) are caused by server and clients not using the exact same version/build.
I've recently implemented:
259086: Protocol versions should be checked
https://bugs.eclipse.org/bugs/show_bug.cgi?id=259086
But one of your peers may still be running an older version.
There's a minor potential for a string encoding defect. What charsets are you using?
> 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.
Theoretically it wouldn't need branching if you actually don't use branches other than the main branch. But I doubt that
I added support for disabling branching explicitely. The consequence is that, for now, you get an extra integer column
in each attribute table.
Cheers
/Eike
----
http://www.esc-net.de
http://thegordian.blogspot.com
http://twitter.com/eikestepper
Cheers
/Eike
----
http://www.esc-net.de
http://thegordian.blogspot.com
http://twitter.com/eikestepper
|
|
| | | | | | | | | | | | |
Re: [CDO] Problem running clone example [message #980108 is a reply to message #980060] |
Sun, 11 November 2012 11:02 |
Cristian Spiescu Messages: 100 Registered: July 2009 |
Senior Member |
|
|
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 12:25 |
|
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.
Cheers
/Eike
----
http://www.esc-net.de
http://thegordian.blogspot.com
http://twitter.com/eikestepper
|
|
| |
Goto Forum:
Current Time: Wed Sep 25 20:20:29 GMT 2024
Powered by FUDForum. Page generated in 0.05680 seconds
|