Skip to content

Commit 3a13282

Browse files
Backport code changes from aosabook#200
1 parent 5697733 commit 3a13282

1 file changed

Lines changed: 6 additions & 2 deletions

File tree

cluster/cluster.markdown

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -468,7 +468,7 @@ class Replica(Role):
468468
self.execute_fn = execute_fn
469469
self.state = state
470470
self.slot = slot
471-
self.decisions = decisions.copy()
471+
self.decisions = decisions
472472
self.peers = peers
473473
self.proposals = {}
474474
# next slot num for a proposal (may lead slot)
@@ -983,7 +983,9 @@ class Network(object):
983983

984984
def send(self, sender, destinations, message):
985985
sender.logger.debug("sending %s to %s", message, destinations)
986-
for dest in (d for d in destinations if d in self.nodes):
986+
# avoid aliasing by making a closure containing distinct deep copy of
987+
# message for each dest
988+
def sendto(dest, message):
987989
if dest == sender.address:
988990
# reliably deliver local messages with no delay
989991
self.set_timer(sender.address, 0,
@@ -994,6 +996,8 @@ class Network(object):
994996
self.set_timer(dest, delay,
995997
functools.partial(self.nodes[dest].receive,
996998
sender.address, message))
999+
for dest in (d for d in destinations if d in self.nodes):
1000+
sendto(dest, copy.deepcopy(message))
9971001

9981002
```
9991003

0 commit comments

Comments
 (0)