After enabling a bunch of TFO-related metrics in diamond's TCP collector we've noticed that the values sent to graphite are not computed correctly. In particular, diamond seems to always return 0 for counters such as TCPFastOpenPassive. Albeit slowly, the value of TCPFastOpenPassive is indeed increasing on the server (see netstat -s | grep TCPFastOpenPassive) so the derivative should not always be 0.
A similar bug has been reported upstream but the submitter simply worked around the issue by sending the raw metric.
We should find out whether Collector.derivative() is buggy when it comes to "slowly increasing" metrics.