Mercurial > hg > RemoteEditor > REPSessionManager
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 |