changeset 466:b13926e43c28

minor fix
author one
date Sat, 02 Oct 2010 08:44:33 +0900
parents c83af820eb62
children 87ae0424a62a
files Todo rep/handler/Editor.java
diffstat 2 files changed, 13 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- 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 する。
--- 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);