# HG changeset patch # User one # Date 1285921212 -32400 # Node ID 3c2918368de3ae792510f3254fffd78eca44a3ac # Parent d295e84c5e0367c83c3700340529dc132b54e360 slow merge mode diff -r d295e84c5e03 -r 3c2918368de3 rep/handler/Editor.java --- a/rep/handler/Editor.java Fri Oct 01 15:58:20 2010 +0900 +++ b/rep/handler/Editor.java Fri Oct 01 17:20:12 2010 +0900 @@ -25,7 +25,7 @@ public static boolean noMergeMode=false; static final boolean doOptimize = false; private LinkedList writeQueue = new LinkedList(); - static boolean slowMerge = true; + static boolean slowMerge = false; public Editor(SessionManager manager,int editorNo){ // no translator case @@ -281,6 +281,12 @@ translator.startMerge(command); } + /** + * sentList と ack を見比べて、正しい順序で来たかどうかを調べる。途中参加したEditorの場合は、Ackは + * 無視して良い。 + * @param command + * @return + */ private boolean checkAck(REPCommand command) { assert(!isMerging()); REPCommand prev; @@ -337,8 +343,9 @@ sendToEditor(mergeEnd); checkAck(preMergeCommand); if (preMergeCommand.eid==eid) { - if (!slowMerge) + if (!slowMerge) { sendAck(preMergeCommand); + } } else { next.send(preMergeCommand); } @@ -355,9 +362,13 @@ case REPCMD_DELETE: keep.cmd = REP.REPCMD_DELETE_ACK;break; default: assert(false); } - sentList.addLast(command); - //ServerMainLoop.logger.writeLog("Editor eid:"+eid+" sentList = "+sentList); + if (slowMerge) + sentList.addLast(keep); + else + sentList.addLast(command); + ServerMainLoop.logger.writeLog("Editor"+eid+": sendAck sentList = "+sentList); assert(sentList.size()