I have noticed that for a small number of queries I was only getting partial results. Looking at the detailed scanner stats, it seems like the results of a single scanner are missing entirely, despite all scanners completing successfully. In our setup with 8 salt buckets, I was missing almost exactly one eighth of the data points.
This seems to impact all queries, but only when a race condition occurs.
Looking at the SaltScanner code, the call to getCount() of the CountdownLatch here is not thread-safe, but the result is used as the key for the map in which the scanners' results are stored. If then two scanners both decrement the latch and then read the same numner, the second one would overwrite the entire results of the first one, which causes them to miss in the final response.
Happy to put in a PR to get that fixed.