From c5f2da587532c80cda066acc715344b74a9d19d5 Mon Sep 17 00:00:00 2001 From: Erik Johnston Date: Fri, 15 Aug 2014 11:47:01 +0100 Subject: Add a check to make sure that during state conflict res we only request a PDU we don't have. --- synapse/state.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) (limited to 'synapse') diff --git a/synapse/state.py b/synapse/state.py index d8977b61ea..4f8b4d9760 100644 --- a/synapse/state.py +++ b/synapse/state.py @@ -191,10 +191,18 @@ class StateHandler(object): key=lambda x: x.depth ) + pdu_id = missing_prev.prev_state_id + origin = missing_prev.prev_state_origin + + is_missing = yield self.store.get_pdu(pdu_id, origin) is None + + if not is_missing: + raise Exception("Conflict resolution failed.") + yield self._replication.get_pdu( destination=missing_prev.origin, - pdu_origin=missing_prev.prev_state_origin, - pdu_id=missing_prev.prev_state_id, + pdu_origin=origin, + pdu_id=pdu_id, outlier=True ) -- cgit 1.5.1