rewrote check-nodes
parent
f588143082
commit
0cbd1ed207
|
@ -26,24 +26,27 @@ TUPLE: mdb name nodes collections ;
|
||||||
'[ _ write-message read-message ] with-client
|
'[ _ write-message read-message ] with-client
|
||||||
objects>> first ;
|
objects>> first ;
|
||||||
|
|
||||||
: -push ( seq elt -- )
|
|
||||||
swap push ; inline
|
|
||||||
|
|
||||||
: split-host-str ( hoststr -- host port )
|
: split-host-str ( hoststr -- host port )
|
||||||
":" split [ first ] keep
|
":" split [ first ] keep
|
||||||
second string>number ; inline
|
second string>number ; inline
|
||||||
|
|
||||||
|
: eval-ismaster-result ( node result -- node result )
|
||||||
|
[ [ "ismaster" ] dip at
|
||||||
|
>fixnum 1 =
|
||||||
|
[ t >>master? ] [ f >>master? ] if ] keep ;
|
||||||
|
|
||||||
|
: check-node ( node -- node remote )
|
||||||
|
dup inet>> ismaster-cmd
|
||||||
|
eval-ismaster-result
|
||||||
|
[ "remote" ] dip at ;
|
||||||
|
|
||||||
: check-nodes ( node -- nodelist )
|
: check-nodes ( node -- nodelist )
|
||||||
[ V{ } clone ] dip
|
check-node
|
||||||
[ -push ] 2keep
|
[ V{ } clone [ push ] keep ] dip
|
||||||
dup inet>> ismaster-cmd ! vec node result
|
[ split-host-str <inet> [ f ] dip
|
||||||
dup [ "ismaster" ] dip at
|
mdb-node boa check-node drop
|
||||||
>fixnum 1 = ! vec node result
|
swap tuck push
|
||||||
[ [ t >>master? drop ] dip f ]
|
] when* ;
|
||||||
[ [ f >>master? drop ] dip t ] if
|
|
||||||
[ "remote" ] 2dip [ at split-host-str <inet> ] dip
|
|
||||||
swap mdb-node boa swap
|
|
||||||
[ push ] keep ;
|
|
||||||
|
|
||||||
: verify-nodes ( -- )
|
: verify-nodes ( -- )
|
||||||
mdb>> nodes>> [ t ] dip at
|
mdb>> nodes>> [ t ] dip at
|
||||||
|
|
Loading…
Reference in New Issue