diff --git a/imperative/distributed/federation.rkt b/imperative/distributed/federation.rkt index c2085ac..220f27f 100644 --- a/imperative/distributed/federation.rkt +++ b/imperative/distributed/federation.rkt @@ -263,7 +263,9 @@ (define old-matches (subscription-matches sub)) (define old-match-holders (hash-ref old-matches captures set)) (define new-match-holders (set-remove old-match-holders linkid)) - (define new-matches (hash-set old-matches captures new-match-holders)) + (define new-matches (if (set-empty? new-match-holders) + (hash-remove old-matches captures) + (hash-set old-matches captures new-match-holders))) (store-sub! (struct-copy subscription sub [matches new-matches])) (match (set-count new-match-holders) [0 (for [((peer peer-subid) (in-hash (subscription-holders sub)))]