diff --git a/syndicate/dataflow.rkt b/syndicate/dataflow.rkt index 67bc9e0..ac94b68 100644 --- a/syndicate/dataflow.rkt +++ b/syndicate/dataflow.rkt @@ -54,11 +54,14 @@ (define workset (dataflow-graph-damaged-nodes g)) (when (not (hash-empty? workset)) (set-dataflow-graph-damaged-nodes! g (hash)) + (define updated (make-hash)) (hash-for-each workset (lambda (object-id _) (for [(subject-id (in-hashset-values (dataflow-graph-edges-forward g) object-id))] - (dataflow-forget-subject! g subject-id) - (parameterize ((current-dataflow-subject-id subject-id)) - (repair-node! subject-id))))) + (when (not (hash-has-key? updated subject-id)) + (hash-set! updated subject-id #t) + (dataflow-forget-subject! g subject-id) + (parameterize ((current-dataflow-subject-id subject-id)) + (repair-node! subject-id)))))) (loop))))