@0xda4fc7f2ce698a66; using Common = import "common.capnp"; struct Update { newAsyncOps @0 :List(AsyncOp); # List of new async ops that were crated since the last Update. statsUpdate @1 :Common.IntMap(Stats); # All async op stats that have changed since the last Update was sent. droppedEvents @2 :UInt64; # Count of how many async op events were not recorded because the applications event buffer was # at capacity. # # If everything is working normally, this is 0. If it is not that may inidcate that some data is # missing from this update and it may be necessary to increase the number of events buffered by # the application to ensure that data loss is avoided. # # If the application's instrumentation ensures reliable delivery of events, this will alway be 0 } struct AsyncOp { id @0 :Common.Id; # The async op's ID. # # This uniquely identifies this op across all *currently live* ones. metadata @1 :Common.MetaId; # The numeric id of the op's Metadata # # This identifies the `Metadata` that describes the `tracing` span # corresponding to this async op. The metadata for this ID will have been sent # in a prior `RegisterMetadata` message. source @2 :Text; # The source of this async operation. Most commonly this should be the name of the method where # the instantiation of this op has happened. parentAsyncOp @3 :Common.Id; # The ID of the parent async op. # # This field is only set if this async op was created while inside of another async op. resourceId @4 :Common.Id; # The resource's ID } struct Stats { createdAt @0 :Common.Timestamp; droppedAt @1 :Common.Timestamp; task @2 :Common.Id; # The ID of the task currently awaiting on this op pollStats @3 :Common.PollStats; attributes @4 :List(Common.Attribute); }