comparison 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
comparison
equal deleted inserted replaced
461:e7eeb8be0de1 462:d295e84c5e03
1 Fri Oct 1 10:09:41 JST 2010
2
3 やっぱり、そんなに簡単には動かないか。slow merge だと dead lock する。
4
5 SMCMD_QUITをSMCMD_QUIT_2に変えているのは誰? Editor 側でやっているのかぁ。
6
7 Tue Sep 28 10:43:14 JST 2010
8
9 廻る順序でコマンド順は確定する。
10 方法は三つ
11 nop 前置方式
12 slow merge 方式 (二周後に確定)
13 sort interval 方式
14
15 Editor1のc(eid=1) は、e(eid=2) よりは後になる。しかし、今の
16 方法だと前だと判断されてしまう。nop 方式だと、その前に付く
17 ので、そこで区切られる。
18
19 ea(eid=2)とnopは同じ意味だが、区別する方法は?
20
21 START_MERGE INSET DELETE END_MERGE
22
23 となるはず。
24
25 Editor1 では、sm e(eid=2) em c(eid=1)
26 Editor3 では、sm e(eid=2) c(eid=1) em
27
28 となる?
29
30 em 後がある em 後へ
31 sm-em間が空 ->sm-em 間へ
32 sm-em間にコマンドがある ->
33 同じsort interval ->sm-em へ
34 新しいsort interval ->em以降 へ
35
36 Merge 後に sm-em は sm 以前に移される。
37 em 以降の次のsort interval がsm-em に移動。(全部?)
38
39 sort interval とは何? (良い質問だな〜)
40
41 eid の順序の一塊
42 新しい自分のコマンドは新しいsort interval を作る
43
44 (いけそうではあるな...)
45
46 途中の editor の脱落とかあると、どうしても同期がずれる?
47 再送の仕組みは?
48
49 Fri Sep 24 17:42:50 JST 2010
50
51 Editor3 Editor2 Editor1
52 e(eid=2)
53 e(eid=2)
54 e(eid=2) c(eid=1)
55 c(eid=1) e(eid=2)
56 c(eid=1) ea(eid=2)*
57 ea(eid=2)* c(eid=1)
58 ca(eid=1)*ea(eid=2)*
59 ca(eid=1)*
60 ca(eid=1)*
61
62 [e,c] [e,c] [e,c]
63
64 うーん、ack のみで merge するので良さそう。いや、そうすると、
65 二周目の間にコマンドが入るけど、その扱いは?
66
67 あ、そうか。他のeditorからのコマンドの前に自分のコマンドを入れる
68 ってのがあったような気がする。二周目のackは、それを実現できない
69 のか。
70
71 Editor3 Editor2 Editor1
72 e(eid=2)
73 1e(eid=2)
74 31e(eid=2) c(eid=1)
75 3c(eid=1) 231e(eid=2)*
76 23c(eid=1) 231*
77 23 23c(eid=1)*
78 12 23
79 ca(eid=1)*ea(eid=2)*
80 ca(eid=1)*
81 ca(eid=1)*
82
83 [c,e] [c,e] [c,e]
84
85 う、結構わからんな。
86
87 Fri Sep 24 17:42:50 JST 2010
88
89 順序がずれる問題は、送信キューをEditor localに持つことで解消。
90
91 結果がおかしいことがあるのは、(* は merge operation )
92
93 Editor1 Editor2 Editor3
94 e(eid=2)
95 e(eid=2)
96 e(eid=2) c(eid=1)
97 c(eid=1) e(eid=2)*
98 c(eid=1) ea(eid=2)*
99 ea(eid=2)* c(eid=1)
100 ca(eid=1) ea(eid=2)
101 ca(eid=1)
102 ca(eid=1)
103
104 [e,c] [c,e] [e,c]
105
106 と巡回させた時に、Editor2 で e(eid=2) が確定してしまうかららしい。
107 つまり eid=1 か ack を待てば良い。(ack は all eid と考えて良い)
108
109 と言うことは、ack のみで merge するべきだってこと?
110
111 それでは、だめなみたいだなぁ。
112
1 Thu Sep 23 14:57:57 JST 2010 113 Thu Sep 23 14:57:57 JST 2010
2 114
3 やっぱり、send が 115 やっぱり、send が
4 116
5 Editor Object から Editor へのsend 117 Editor Object から Editor へのsend