aboutsummaryrefslogtreecommitdiffstats
path: root/priv
diff options
context:
space:
mode:
authorDavid N. Welton <[email protected]>2014-07-17 15:15:27 +0200
committerDavid N. Welton <[email protected]>2014-07-17 15:15:27 +0200
commitc22d1e405aa881f5bb01085f8a1784bb3af174ac (patch)
tree422eae3d8bb6aaeebca84aa49631f474ee65b14d /priv
parent83678a116e6178cd870720c354ca79a4a9b3c853 (diff)
downloadrelx-c22d1e405aa881f5bb01085f8a1784bb3af174ac.tar.gz
relx-c22d1e405aa881f5bb01085f8a1784bb3af174ac.tar.bz2
relx-c22d1e405aa881f5bb01085f8a1784bb3af174ac.zip
Get tick time in order to 'synchronize' with the node we are connecting with.
Having a different net_ticktime than the remote node will lead to odd shell crashes. Fixes #209
Diffstat (limited to 'priv')
-rw-r--r--priv/templates/extended_bin.dtl7
-rw-r--r--priv/templates/nodetool.dtl2
2 files changed, 6 insertions, 3 deletions
diff --git a/priv/templates/extended_bin.dtl b/priv/templates/extended_bin.dtl
index bfdc132..79b84ce 100644
--- a/priv/templates/extended_bin.dtl
+++ b/priv/templates/extended_bin.dtl
@@ -32,9 +32,12 @@ relx_rem_sh() {
# transparently
id="remsh$(relx_gen_id)-${NAME}"
+ # Get the node's ticktime so that we use the same thing.
+ TICKTIME="$(relx_nodetool rpcterms net_kernel get_net_ticktime)"
+
# Setup remote shell command to control node
exec "$BINDIR/erl" "$NAME_TYPE" "$id" -remsh "$NAME" -boot start_clean \
- -setcookie "$COOKIE"
+ -setcookie "$COOKIE" -kernel net_ticktime $TICKTIME
}
# Generate a random id
@@ -46,7 +49,7 @@ relx_gen_id() {
relx_nodetool() {
command="$1"; shift
"$ERTS_DIR/bin/escript" "$ROOTDIR/bin/nodetool" "$NAME_TYPE" "$NAME" \
- -setcookie "$COOKIE" "$command"
+ -setcookie "$COOKIE" "$command" $@
}
# Output a start command for the last argument of run_erl
diff --git a/priv/templates/nodetool.dtl b/priv/templates/nodetool.dtl
index 80f1965..2f46395 100644
--- a/priv/templates/nodetool.dtl
+++ b/priv/templates/nodetool.dtl
@@ -42,7 +42,7 @@ main(Args) ->
_ ->
halt(1)
end;
- ["rpcterms", Module, Function, ArgsAsString] ->
+ ["rpcterms", Module, Function | ArgsAsString] ->
case rpc:call(TargetNode, list_to_atom(Module), list_to_atom(Function),
consult(ArgsAsString), 60000) of
{badrpc, Reason} ->