# HG changeset patch # User one # Date 1285976673 -32400 # Node ID b13926e43c28b4289f3b406cf2a8fe96c742fcc5 # Parent c83af820eb625d26e51c68bfda8b2652e6d757e0 minor fix diff -r c83af820eb62 -r b13926e43c28 Todo --- a/Todo Sat Oct 02 08:32:26 2010 +0900 +++ b/Todo Sat Oct 02 08:44:33 2010 +0900 @@ -1,3 +1,9 @@ +Sat Oct 2 08:43:32 JST 2010 + +なんか振り出しに戻った感じ〜 + +Deak lock, Ack miss, 結果の不良と全部そろっている + Fri Oct 1 10:09:41 JST 2010 やっぱり、そんなに簡単には動かないか。slow merge だと dead lock する。 diff -r c83af820eb62 -r b13926e43c28 rep/handler/Editor.java --- a/rep/handler/Editor.java Sat Oct 02 08:32:26 2010 +0900 +++ b/rep/handler/Editor.java Sat Oct 02 08:44:33 2010 +0900 @@ -288,13 +288,15 @@ * @return */ private boolean checkAck(REPCommand command) { - assert(!isMerging()); - REPCommand prev; - prev=ackList.remove(0); - if (prev==null || prev.seq != command.seq || prev.eid!=command.eid) { + REPCommand prev = null; + try { + if(isMerging() || ackList.size()==0) throw new Exception(); + prev=ackList.remove(0); + if (prev==null || prev.seq != command.seq || prev.eid!=command.eid) throw new Exception(); + } catch (Exception n) { // should be more robust to allow communication failure String err = "Editor eid="+eid+" checkReturnedCommand() : command = " + command + " prev="+ - (prev==null?"null":prev)+" ackList="; + (prev==null?"null":prev)+" ackList="; err += ackList; ServerMainLoop.logger.writeLog(err); assert(false);