however I think it contains a race condition over clientHandledStanzasCount(reading it may not be atomic).
I don't believe so, since we only use the lower 32bit of the long. See also javadoc of clientHandledStanzaCount: https://github.com/igniterealtime/Smack/blob/6b21455b32301d13996775c25879381faea 0bd2a/smack-tcp/src/main/java/org/jivesoftware/smack/tcp/XMPPTCPConnection.java# L222