ack, review only/Thanks HansN On 1/24/19 02:17, Gary Lee wrote: > 'etcdctl watch' will return if connection to the etcd server is lost. > If that occurs, send a 'fake' takeover request to rded so rded > will reboot the node. This is in alignment with the etcd v3 plugin. > --- > src/osaf/consensus/plugins/etcd.plugin | 29 +++++++++++++++++++++-------- > 1 file changed, 21 insertions(+), 8 deletions(-) > > diff --git a/src/osaf/consensus/plugins/etcd.plugin > b/src/osaf/consensus/plugins/etcd.plugin > index f62cc89..f88a7e7 100644 > --- a/src/osaf/consensus/plugins/etcd.plugin > +++ b/src/osaf/consensus/plugins/etcd.plugin > @@ -17,7 +17,9 @@ > # backward compatible. This plugin may need to be adapted. > > readonly keyname="opensaf_consensus_lock" > +readonly takeover_request="takeover_request" > readonly directory="/opensaf/" > +readonly node_name_file="/etc/opensaf/node_name" > readonly etcd_options="--no-sync" > readonly etcd_timeout="5s" > > @@ -27,7 +29,8 @@ readonly etcd_timeout="5s" > # $1 - <key> > # returns: > # 0 - success, <value> is echoed to stdout > -# non-zero - failure > +# 1 - invalid param > +# other - failure > get() { > readonly key="$1" > > @@ -36,7 +39,7 @@ get() { > echo "$value" > return 0 > else > - return 1 > + return 2 > fi > } > > @@ -73,7 +76,8 @@ setkey() { > # returns: > # 0 - success > # 1 - already exists > -# 2 or above - other failure > +# 2 - invalid param > +# 3 or above - other failure > create_key() { > readonly key="$1" > readonly value="$2" > @@ -90,7 +94,7 @@ create_key() { > fi > fi > > - return 2 > + return 3 > } > > # set > @@ -103,7 +107,8 @@ create_key() { > # $4 - <timeout> > # returns: > # 0 - success > -# non-zero - failure > +# 1 - invalid param > +# other - failure > setkey_match_prev() { > readonly key="$1" > readonly value="$2" > @@ -115,7 +120,7 @@ setkey_match_prev() { > then > return 0 > else > - return 1 > + return 2 > fi > } > > @@ -158,7 +163,8 @@ lock() { > return 0 > fi > > - if current_owner=$(etcdctl get "$directory$keyname") > + if current_owner=$(etcdctl $etcd_options --timeout $etcd_timeout \ > + get "$directory$keyname") > then > # see if we already hold the lock > if [ "$current_owner" = "$owner" ]; then > @@ -252,7 +258,14 @@ watch() { > echo "$value" > return 0 > else > - return 1 > + # etcd down? > + if [ "$key" = "$takeover_request" ]; then > + hostname=`cat $node_name_file` > + echo "$hostname SC-0 10000000 UNDEFINED" > + return 0 > + else > + return 1 > + fi > fi > } >
_______________________________________________ Opensaf-devel mailing list Opensaf-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/opensaf-devel