From ffb6be1dae7bebf4596336acdefccbfe885bc8a9 Mon Sep 17 00:00:00 2001 From: Sander Vrijders Date: Wed, 6 Jun 2018 16:13:35 +0200 Subject: prototypes: Switch register and bind operation This switches the register and bind operations in the ouroboros prototype, to avoid a race condition when starting a server very fast. --- examples/docker-ouroboros.py | 3 +-- rumba/prototypes/ouroboros.py | 10 ++++++---- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/examples/docker-ouroboros.py b/examples/docker-ouroboros.py index 1c6009c..ce30fdb 100755 --- a/examples/docker-ouroboros.py +++ b/examples/docker-ouroboros.py @@ -53,8 +53,7 @@ for i in range(0, args.nodes): nodes[0].add_dif(shim_prev) nodes[0].add_dif_registration(n01, shim_prev) -tb = docker.Testbed(exp_name = "ouroboros", - base_image = "ouroborosrumba/prototype") +tb = docker.Testbed(exp_name = "ouroboros") exp = our.Experiment(tb, nodes = nodes) diff --git a/rumba/prototypes/ouroboros.py b/rumba/prototypes/ouroboros.py index 0c16482..1c24a0c 100644 --- a/rumba/prototypes/ouroboros.py +++ b/rumba/prototypes/ouroboros.py @@ -62,9 +62,6 @@ class OurServer(sb.Server): # Run and store PID n_cmd = 'pid=$(%s); ' % (o_cmd,) - # Add bind command - n_cmd += 'irm b process $pid name %s > /dev/null 2>&1; ' % (self.id,) - # Build register command r_cmd = 'irm r n %s ' % (self.id,) if len(self.difs) == 0: @@ -75,6 +72,10 @@ class OurServer(sb.Server): # Add register command n_cmd += r_cmd + + # Add bind command + n_cmd += 'irm b process $pid name %s > /dev/null 2>&1; ' % (self.id,) + n_cmd += 'echo $pid' # We need to return the pid for the sb return n_cmd @@ -148,7 +149,8 @@ class Experiment(mod.Experiment): time.sleep(2) else: for node in self.nodes: - node.execute_command("sudo nohup irmd > /dev/null &", time_out=None) + node.execute_command("sudo nohup irmd > /dev/null &", + time_out=None) def install_ouroboros(self): if isinstance(self.testbed, local.Testbed): -- cgit v1.2.3