No this patch doesn't fix this issue, when I have written the code I have think that publish_counters cannot be called in a concurrent manner. And the code of the RPCPublisher.flush method is not ThreadSafe
But (I haven't checked yet), I think that gevent can stop on the rpc.cast call (because it does some IO), to handle a other publish_counters call. And because RPCPublisher.flush method is not thread safe, self.local_queue can be override by the seconds publish_counters call, and when the gevent choose to finish to run the first call the local_queue doesn't have anymore the excepted content.
I put this issue as Critical because in this case some samples are loose.
No this patch doesn't fix this issue, when I have written the code I have think that publish_counters cannot be called in a concurrent manner. And the code of the RPCPublisher.flush method is not ThreadSafe
But (I haven't checked yet), I think that gevent can stop on the rpc.cast call (because it does some IO), to handle a other publish_counters call. And because RPCPublisher.flush method is not thread safe, self.local_queue can be override by the seconds publish_counters call, and when the gevent choose to finish to run the first call the local_queue doesn't have anymore the excepted content.
I put this issue as Critical because in this case some samples are loose.