diff Todo @ 462:d295e84c5e03

slow merge won't work. select time out.
author one
date Fri, 01 Oct 2010 15:58:20 +0900
parents 21cb16b7f3df
children 295c257ac073
line wrap: on
line diff
--- a/Todo	Fri Sep 24 17:17:37 2010 +0900
+++ b/Todo	Fri Oct 01 15:58:20 2010 +0900
@@ -1,3 +1,115 @@
+Fri Oct  1 10:09:41 JST 2010
+
+やっぱり、そんなに簡単には動かないか。slow merge だと dead lock する。
+
+SMCMD_QUITをSMCMD_QUIT_2に変えているのは誰? Editor 側でやっているのかぁ。
+
+Tue Sep 28 10:43:14 JST 2010
+
+廻る順序でコマンド順は確定する。
+    方法は三つ
+        nop 前置方式
+        slow merge 方式 (二周後に確定)
+        sort interval 方式
+
+Editor1のc(eid=1) は、e(eid=2) よりは後になる。しかし、今の
+方法だと前だと判断されてしまう。nop 方式だと、その前に付く
+ので、そこで区切られる。
+
+ea(eid=2)とnopは同じ意味だが、区別する方法は?
+
+    START_MERGE INSET DELETE END_MERGE
+
+となるはず。
+
+    Editor1 では、sm e(eid=2) em c(eid=1)
+    Editor3 では、sm e(eid=2) c(eid=1) em
+
+となる? 
+
+em 後がある em 後へ
+sm-em間が空 ->sm-em 間へ
+sm-em間にコマンドがある ->  
+    同じsort interval  ->sm-em へ
+    新しいsort interval  ->em以降 へ
+
+Merge 後に sm-em は sm 以前に移される。
+em 以降の次のsort interval がsm-em に移動。(全部?)
+
+sort interval とは何? (良い質問だな〜)
+
+    eid の順序の一塊
+    新しい自分のコマンドは新しいsort interval を作る
+
+(いけそうではあるな...)
+
+途中の editor の脱落とかあると、どうしても同期がずれる?
+再送の仕組みは?
+
+Fri Sep 24 17:42:50 JST 2010
+
+    Editor3   Editor2    Editor1 
+              e(eid=2)
+                         e(eid=2)
+    e(eid=2)             c(eid=1)
+    c(eid=1)  e(eid=2)
+              c(eid=1)   ea(eid=2)*
+    ea(eid=2)*           c(eid=1)
+    ca(eid=1)*ea(eid=2)*
+              ca(eid=1)*
+                         ca(eid=1)*
+
+    [e,c]     [e,c]      [e,c]
+
+うーん、ack のみで merge するので良さそう。いや、そうすると、
+二周目の間にコマンドが入るけど、その扱いは?
+
+あ、そうか。他のeditorからのコマンドの前に自分のコマンドを入れる
+ってのがあったような気がする。二周目のackは、それを実現できない
+のか。
+
+    Editor3   Editor2    Editor1 
+              e(eid=2)
+                         1e(eid=2)
+    31e(eid=2)           c(eid=1)
+    3c(eid=1) 231e(eid=2)*
+              23c(eid=1) 231*
+    23                   23c(eid=1)*
+    12          23                
+    ca(eid=1)*ea(eid=2)*
+              ca(eid=1)*
+                         ca(eid=1)*
+
+    [c,e]     [c,e]      [c,e]
+
+う、結構わからんな。
+
+Fri Sep 24 17:42:50 JST 2010
+
+順序がずれる問題は、送信キューをEditor localに持つことで解消。
+
+結果がおかしいことがあるのは、(* は merge operation )
+
+    Editor1   Editor2    Editor3 
+              e(eid=2)
+                         e(eid=2)
+    e(eid=2)             c(eid=1)
+    c(eid=1)  e(eid=2)*
+              c(eid=1)   ea(eid=2)*
+    ea(eid=2)*           c(eid=1)
+    ca(eid=1) ea(eid=2)            
+              ca(eid=1)  
+                         ca(eid=1)  
+
+    [e,c]     [c,e]      [e,c]
+
+と巡回させた時に、Editor2 で e(eid=2) が確定してしまうかららしい。
+つまり eid=1 か ack を待てば良い。(ack は all eid と考えて良い)
+
+と言うことは、ack のみで merge するべきだってこと? 
+
+それでは、だめなみたいだなぁ。
+
 Thu Sep 23 14:57:57 JST 2010
 
 やっぱり、send が