Attaching a patch which includes a plugin that records server start/end points for an RPC, and a servlet that displays them.
One of the tests has a main() method which lets one "demo" the output. Fun to play with. I've attached sample output here. It's very ugly.
I've also very naively measured the overhead of the stats collection. It's not small:
Overhead: 28.7800%. RPC/s: 3422.781569 (with) vs 4407.859213 (without). RPC time (ms): 0.292160 vs 0.226868
That said, stats processing is not getting in the way of sub-microsecond RPCs. And this server is doing absolutely nothing. The input and output schemas are 'null', so there's not even any parsing to do.
This patch depends on
AVRO-271, AVRO-273, and AVRO-275.