[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [ecf-dev] Exception handling start message null

On Tue, 10 Feb 2009 10:46:37 -0800
Scott Lewis <slewis@xxxxxxxxxxxxxxxxx> wrote:

Hi Scott,

Thanks for the reply.

> As far as I know, it is not a common problem...I have not seen it before.
> 
> One thought...is it possible that one of the clients is using the ECF 
> 3.0 stream?  With ECF 3.0 we've made a number of changes, and the 3.0 
> clients are not compatible with the 2.0/2.1-based clients 
> (unfortunately...but the scope of the changes in ECF 3.0...specifically 
> the abstraction into the new sync API...made it necessary to change the 
> wire protocol significantly).
No - there were always two equal versions of ECF (and they were not
3.0 - I sit in front of both machines :) )

> Is there anything in the log when this happens?  If so could you attach it?
Yes, I get this:

<cut>
!SESSION 2009-02-11 18:11:23.668
-----------------------------------------------
eclipse.buildId=M20080911-1700 java.version=1.6.0_0
java.vendor=Sun Microsystems Inc.
BootLoader constants: OS=linux, ARCH=x86, WS=gtk, NL=pl_PL
Command-line arguments:  -os linux -ws gtk -arch x86

!ENTRY org.eclipse.ecf.internal.provisional.docshare 4 4 2009-02-11
18:29:58.581 !MESSAGE Exception receiving message
!STACK 0
org.eclipse.jface.text.BadLocationException
	at
org.eclipse.jface.text.AbstractDocument.replace(AbstractDocument.java:1145)
at
org.eclipse.core.internal.filebuffers.SynchronizableDocument.replace(SynchronizableDocument.java:151)
at
org.eclipse.jface.text.AbstractDocument.replace(AbstractDocument.java:1176)
at
org.eclipse.core.internal.filebuffers.SynchronizableDocument.replace(SynchronizableDocument.java:137)
at
org.eclipse.ecf.internal.provisional.docshare.DocShare$6.run(DocShare.java:448)
at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35) at
org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:133)
at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3378)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3036)
at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2382)
at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2346) at
org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2198) at
org.eclipse.ui.internal.Workbench$5.run(Workbench.java:493) at
org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:288)
at
org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:488)
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
at
org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:113)
at
org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:193)
at
org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
at
org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
at
org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:386)
at
org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:616) at
org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:549) at
org.eclipse.equinox.launcher.Main.basicRun(Main.java:504) at
org.eclipse.equinox.launcher.Main.run(Main.java:1236)

!ENTRY org.eclipse.ecf.internal.provisional.docshare 4 4 2009-02-11
18:29:58.679 !MESSAGE Exception receiving message
!STACK 0
org.eclipse.jface.text.BadLocationException
	at
org.eclipse.jface.text.AbstractDocument.replace(AbstractDocument.java:1145)
at
org.eclipse.core.internal.filebuffers.SynchronizableDocument.replace(SynchronizableDocument.java:151)
at
org.eclipse.jface.text.AbstractDocument.replace(AbstractDocument.java:1176)
at
org.eclipse.core.internal.filebuffers.SynchronizableDocument.replace(SynchronizableDocument.java:137)
at
org.eclipse.ecf.internal.provisional.docshare.DocShare$6.run(DocShare.java:448)
at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35) at
org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:133)
at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3378)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3036)
at org.eclipse.jface.window.Window.runEventLoop(Window.java:825) at
org.eclipse.jface.window.Window.open(Window.java:801) at
org.eclipse.jface.dialogs.MessageDialog.openError(MessageDialog.java:322)
at
org.eclipse.ecf.internal.provisional.docshare.DocShare.showErrorToUser(DocShare.java:548)
at
org.eclipse.ecf.internal.provisional.docshare.DocShare$6.run(DocShare.java:453)
at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35) at
org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:133)
at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3378)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3036)
at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2382)
at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2346) at
org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2198) at
org.eclipse.ui.internal.Workbench$5.run(Workbench.java:493) at
org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:288)
at
org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:488)
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
at
org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:113)
at
org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:193)
at
org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
at
org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
at
org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:386)
at
org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:616) at
org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:549) at
org.eclipse.equinox.launcher.Main.basicRun(Main.java:504) at
org.eclipse.equinox.launcher.Main.run(Main.java:1236)

!ENTRY org.eclipse.ecf.internal.provisional.docshare 4 4 2009-02-11
18:29:58.752 !MESSAGE Exception receiving message
!STACK 0
org.eclipse.jface.text.BadLocationException
	at
org.eclipse.jface.text.AbstractDocument.replace(AbstractDocument.java:1145)
at
org.eclipse.core.internal.filebuffers.SynchronizableDocument.replace(SynchronizableDocument.java:151)
at
org.eclipse.jface.text.AbstractDocument.replace(AbstractDocument.java:1176)
at
org.eclipse.core.internal.filebuffers.SynchronizableDocument.replace(SynchronizableDocument.java:137)
at
org.eclipse.ecf.internal.provisional.docshare.DocShare$6.run(DocShare.java:448)
at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35) at
org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:133)
at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3378)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3036)
at org.eclipse.jface.window.Window.runEventLoop(Window.java:825) at
org.eclipse.jface.window.Window.open(Window.java:801) at
org.eclipse.jface.dialogs.MessageDialog.openError(MessageDialog.java:322)
at
org.eclipse.ecf.internal.provisional.docshare.DocShare.showErrorToUser(DocShare.java:548)
at
org.eclipse.ecf.internal.provisional.docshare.DocShare$6.run(DocShare.java:453)
at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35) at
org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:133)
at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3378)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3036)
at org.eclipse.jface.window.Window.runEventLoop(Window.java:825) at
org.eclipse.jface.window.Window.open(Window.java:801) at
org.eclipse.jface.dialogs.MessageDialog.openError(MessageDialog.java:322)
at
org.eclipse.ecf.internal.provisional.docshare.DocShare.showErrorToUser(DocShare.java:548)
at
org.eclipse.ecf.internal.provisional.docshare.DocShare$6.run(DocShare.java:453)
at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35) at
org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:133)
at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3378)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3036)
at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2382)
at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2346) at
org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2198) at
org.eclipse.ui.internal.Workbench$5.run(Workbench.java:493) at
org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:288)
at
org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:488)
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
at
org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:113)
at
org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:193)
at
org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
at
org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
at
org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:386)
at
org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:616) at
org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:549) at
org.eclipse.equinox.launcher.Main.basicRun(Main.java:504) at
org.eclipse.equinox.launcher.Main.run(Main.java:1236) 
</cut>

> Also...if you are able, we would appreciate you trying to reproduce 
> using two ECF 3.0 clients...so that we can prevent this problem from 
> appearing in ECF 3.0.
I tried to run Eclipse 3.5/ECF 3.0. After several minutes of shared
editing I get a dialog: 
Exception handling start message Exception applying
change to document

and in log file:

<cut>
!ENTRY org.eclipse.ecf.internal.provisional.docshare 4 4 2009-02-11
19:38:27.998 !MESSAGE Exception receiving message
!STACK 1
org.eclipse.ecf.sync.ModelUpdateException: Exception applying change to
document at
org.eclipse.ecf.sync.doc.DocumentChangeMessage.applyToModel(DocumentChangeMessage.java:153)
at org.eclipse.ecf.docshare.DocShare$6.run(DocShare.java:425) at
org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35) at
org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:133)
at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3451)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3098)
at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2388)
at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2352) at
org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2204) at
org.eclipse.ui.internal.Workbench$5.run(Workbench.java:499) at
org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:333)
at
org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:492)
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
at
org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:113)
at
org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:194)
at
org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
at
org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
at
org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:368)
at
org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:616) at
org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:556) at
org.eclipse.equinox.launcher.Main.basicRun(Main.java:511) at
org.eclipse.equinox.launcher.Main.run(Main.java:1270) !SUBENTRY 1
org.eclipse.ecf.identity 4 0 2009-02-11 19:38:28.000 !MESSAGE Exception
applying change to document
</cut>

It seems to me, that it may be the same problem.

I thought, that maybe the problem is, that some of messages might not
get delivered (e.g. dropped by the server)? I did a following test
(which I belive confirms my "theory" :) ): I added
System.out.println("Got a " + remoteMsg.getOffset() + " " +
remoteMsg.getText()); 
in DocShare.java:418 and 
System.out.println("Sending " +
msg.getOffset() + " " + msg.getText()); in DocShare.java:645.

Then I tried to reproduce the exception and on the console I got:
for the first instance of Eclipse:

<cut>
Sending 2142 a
Sending 2143 s
Sending 2144 d
Sending 2145 /
Sending 2146 k
Sending 2147 l
Sending 2148 f
Sending 2149 j
Sending 2150 a
Sending 2151 ;
Sending 2152 f
Sending 2153 j
Sending 2154 k
Sending 2155 

Sending 2156 

Sending 2157 

Sending 2158 s
Sending 2159 k
Sending 2160 d

<many lines with sent messages...>

Sending 2417 

Sending 2418 

</cut>

and for the second one:

<cut>
Got a 2142 a
Got a 2143 s
Got a 2144 d
Got a 2145 /
Got a 2146 k
Got a 2147 l
Got a 2148 f
Got a 2149 j
Got a 2150 a
Got a 2151 ;
Got a 2152 f
Got a 2153 j
Got a 2154 k
Got a 2417 

Got a 2418 

</cut>

So obviously ~250 messages are missing. What do you think? Maybe if
such situation occurs, one side of the sharing session should request
an automatic synchronization of whole document? A less complicated
solution is to show a suitable information (instead of "null") in the
dialog (user would now what happened and that he has to restart the
sharing editing session - the resynchronization would be performed) ?

Regards,
Pawel