After a successful connection establishment both participants should be in a consistent state, so they could see each other changes and the synchronization works reliable.
Currently the synchronization in shared documents works only unreliable (without any obvious pattern). Changes in shared documents are not always transmitted.
After toggling the follow mode on on both sides the synchronisation works correct (if the files have equivalent content).
Can you elaborate on the word "transmitted" ?
Are there any hints in the logfiles or are these assumption purely based on black-box testing the current Saros IntelliJ version ?
I tested an Eclipse <-> IntelliJ session and got similar results.
The IntelliJ log file looks like this:
ERROR 15:26:28,671 [AWT-EventQueue-0 13.1.4#IC-135.1230, eap:false] (SarosSession.java:194) error while invoking active activity consumer: de.fu_berlin.inf.dpp.intellij.editor.EditorManager$2@5b51dbb9, activity: TextSelectionActivity(offset: 48, length: 0, src: jenkins_alice_stf@saros-con.imp.fu-berlin.de/Saros, path: SPath [path=Foo/Test.txt, project=untitled104])
java.lang.IllegalArgumentException: Wrong end: 48; document length=22; start=48
at com.intellij.openapi.editor.impl.RangeMarkerImpl.<init>(RangeMarkerImpl.java:44)
at com.intellij.openapi.editor.impl.RangeMarkerImpl.<init>(RangeMarkerImpl.java:37)
at com.intellij.openapi.editor.impl.RangeHighlighterImpl.<init>(RangeHighlighterImpl.java:42)
at com.intellij.openapi.editor.impl.MarkupModelImpl.addRangeHighlighterAndChangeAttributes(MarkupModelImpl.java:117)
at com.intellij.openapi.editor.impl.MarkupModelImpl.addRangeHighlighter(MarkupModelImpl.java:162)
at de.fu_berlin.inf.dpp.intellij.editor.EditorAPI.textMarkAdd(EditorAPI.java:143)
at de.fu_berlin.inf.dpp.intellij.editor.LocalEditorManipulator.selectText(LocalEditorManipulator.java:173)
at de.fu_berlin.inf.dpp.intellij.editor.EditorManager$2.execTextSelection(EditorManager.java:196)
at de.fu_berlin.inf.dpp.intellij.editor.EditorManager$2.receive(EditorManager.java:119)
at de.fu_berlin.inf.dpp.activities.TextSelectionActivity.dispatch(TextSelectionActivity.java:107)
at de.fu_berlin.inf.dpp.session.AbstractActivityConsumer.exec(AbstractActivityConsumer.java:85)
at de.fu_berlin.inf.dpp.intellij.editor.EditorManager$2.exec(EditorManager.java:104)
at de.fu_berlin.inf.dpp.session.internal.SarosSession$2.execute(SarosSession.java:192)
at de.fu_berlin.inf.dpp.session.internal.ActivityHandler$3.run(ActivityHandler.java:369)
at de.fu_berlin.inf.dpp.util.ThreadUtils$1.run(ThreadUtils.java:38)
at com.intellij.openapi.application.impl.LaterInvocator$1.run(LaterInvocator.java:165)
at com.intellij.openapi.application.impl.LaterInvocator$FlushQueue.run(LaterInvocator.java:319)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:251)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:727)
at java.awt.EventQueue.access$200(EventQueue.java:103)
at java.awt.EventQueue$3.run(EventQueue.java:688)
at java.awt.EventQueue$3.run(EventQueue.java:686)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:697)
at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.java:697)
at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:524)
at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:335)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)
DEBUG 15:26:28,784 [DispatchContext] (ActivitySequencer.java:601) rcvd (001) jenkins_alice_stf@saros-con.imp.fu-berlin.de/Saros
DEBUG 15:26:28,785 [AWT-EventQueue-0 13.1.4#IC-135.1230, eap:false] (EditorManager.java:166) SPath [path=Foo/Test.txt, project=untitled104] text edit activity received TextEditActivity(offset: 48, new: 's', old: '', path: SPath [path=Foo/Test.txt, project=untitled104], src: jenkins_alice_stf@saros-con.imp.fu-berlin.de/Saros)
ERROR 15:26:28,786 [AWT-EventQueue-0 13.1.4#IC-135.1230, eap:false] (SarosSession.java:194) error while invoking active activity consumer: de.fu_berlin.inf.dpp.intellij.editor.EditorManager$2@5b51dbb9, activity: TextEditActivity(offset: 48, new: 's', old: '', path: SPath [path=Foo/Test.txt, project=untitled104], src: jenkins_alice_stf@saros-con.imp.fu-berlin.de/Saros)
java.lang.IndexOutOfBoundsException: Wrong offset: 48; documentLength: 22; s
at com.intellij.openapi.editor.impl.DocumentImpl.insertString(DocumentImpl.java:479)
at de.fu_berlin.inf.dpp.intellij.editor.EditorAPI$2$1$1.run(EditorAPI.java:87)
at com.intellij.openapi.application.impl.ApplicationImpl.runWriteAction(ApplicationImpl.java:984)
at de.fu_berlin.inf.dpp.intellij.editor.EditorAPI$2$1.run(EditorAPI.java:84)
at com.intellij.openapi.command.impl.CommandProcessorImpl.executeCommand(CommandProcessorImpl.java:124)
at com.intellij.openapi.command.impl.CommandProcessorImpl.executeCommand(CommandProcessorImpl.java:99)
at com.intellij.openapi.command.impl.CommandProcessorImpl.executeCommand(CommandProcessorImpl.java:85)
at de.fu_berlin.inf.dpp.intellij.editor.EditorAPI$2.run(EditorAPI.java:81)
at com.intellij.util.ui.UIUtil.invokeAndWaitIfNeeded(UIUtil.java:2070)
at de.fu_berlin.inf.dpp.intellij.editor.EditorAPI.insertText(EditorAPI.java:95)
at de.fu_berlin.inf.dpp.intellij.editor.LocalEditorManipulator.applyTextOperations(LocalEditorManipulator.java:145)
at de.fu_berlin.inf.dpp.intellij.editor.EditorManager$2.execTextEdit(EditorManager.java:172)
at de.fu_berlin.inf.dpp.intellij.editor.EditorManager$2.receive(EditorManager.java:114)
at de.fu_berlin.inf.dpp.activities.TextEditActivity.dispatch(TextEditActivity.java:181)
at de.fu_berlin.inf.dpp.session.AbstractActivityConsumer.exec(AbstractActivityConsumer.java:85)
at de.fu_berlin.inf.dpp.intellij.editor.EditorManager$2.exec(EditorManager.java:104)
at de.fu_berlin.inf.dpp.session.internal.SarosSession$2.execute(SarosSession.java:192)
at de.fu_berlin.inf.dpp.session.internal.ActivityHandler$3.run(ActivityHandler.java:369)
at de.fu_berlin.inf.dpp.util.ThreadUtils$1.run(ThreadUtils.java:38)
at com.intellij.openapi.application.impl.LaterInvocator$1.run(LaterInvocator.java:165)
at com.intellij.openapi.application.impl.LaterInvocator$FlushQueue.run(LaterInvocator.java:319)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:251)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:727)
at java.awt.EventQueue.access$200(EventQueue.java:103)
at java.awt.EventQueue$3.run(EventQueue.java:688)
at java.awt.EventQueue$3.run(EventQueue.java:686)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:697)
at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.java:697)
at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:524)
at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:335)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)</init></init></init>
0825f01e2312887c5a1dca697c750c52b34ee85d