moonlibs / xqueue

Imbue tarantool space with power of queue
15 stars 12 forks source link

Implements per tube statistics #19

Closed ochaton closed 3 months ago

ochaton commented 1 year ago

This patch adds statistics for tubes.

Developer must set list of tubes they want to get statistics for. Initial load is performed the same way as for default by status statistics. _on_replace trigger is slightly patched to perform track status change inside tubes and records transitions.

xqueue:stats() now returns field tube along with counts and transition. Each value for tube is table of counts and transition with the same semantics.

Also added new meta-status S for cross-tubes transitions (X already used as not exists). It is possible to :release() task in tube A with update { '=', 'tube', 'B' }, with this operation task will be "removed" from tube A and "placed" into tube B.

It is not the same as :ack + :put. So now, in statistics, if both tubes are monitored, user may see pair of transitions T->S (for tube A) and S->R (for tube B). S for tranSition (maybe you have better letter for this)