hallnath1 / CASTLEGUARD

CASTLEGUARD: Continuously Anonymizing STreaming data via adaptive cLustEring with GUARanteed Differential privacy
Apache License 2.0
7 stars 0 forks source link

Fix the 'tuple not in deque' error when outputting #43

Closed alexander-jackson closed 4 years ago

alexander-jackson commented 4 years ago

Fix the 'tuple not in deque' error that sometimes occurs when outputting a tuple. This was caused by a tuple not being removed from its parent cluster when being output in this location. While it would be removed from the global tuple queue, the cluster could then be later used as part of a merge operation. This could move the tuple to another 'live' cluster, which could then be output at a later date, thus outputting the tuple again and failing.

This also fixes the other case that could happen when we can output using a cluster in big_gamma. This currently never happens as clusters are not moved around correctly, but fixes it for the future.

Also enforce an ordering, where we should suppress a tuple and then output it. This is because suppression should not take long, whereas callback is unknown to us. Thus, suppressing removes the tuple as early as possible.