Agoric / agoric-sdk

monorepo for the Agoric Javascript smart contract platform
Apache License 2.0
327 stars 206 forks source link

Add trigger slog events for timer and install bundles #10332

Open mhofman opened 4 hours ago

mhofman commented 4 hours ago

What is the Problem Being Solved?

Timer polls and install bundles generate swingset runs (possibly empty), but unlike "bridge" and "deliver" (mailbox) triggers, we do not record a trigger event for these. This forces any contextualized slog processor (e.g. #10269 or #8680) to peek ahead at the first delivery to classify the type of run. We should also consider including more details in the existing trigger to enhance the classification.

Description of the Design

To avoid future regressions with missing triggers for swingset runs, we should consider plumbing this into runSwingset() somehow.

Security Considerations

None

Scaling Considerations

A little extra/duplicated data, but very little in comparison of the rest of the slog size.

Test Plan

Manual is good enough

Upgrade Considerations

Requires a change of the chain software, but it does not affect consensus.

warner commented 4 hours ago

Yeah, that sounds reasonable to me. If it's easy, I'd add owner to the bridge-inbound records, that's one of the things I've needed to extract from the delivery to add to details fields (like identifying which oracle is submitting a PushPrice).

I think timer.poll() returns a boolean (wokeAnything in device-timer.js), not an integer, but still, including it in the slog event sounds useful.

Tell me more about "messages/acks info on cosmic-swingset-deliver-inbound" ? I don't think we have an event of that type. Are you thinking about whether a given bridge-inbound succeeded or failed? Or are you thinking about the sizes of the pending-sends and the other hangover-prevention data structures?

mhofman commented 4 hours ago

I'd add owner to the bridge-inbound records, that's one of the things I've needed to extract from the delivery to add to details fields (like identifying which oracle is submitting a PushPrice).

I believe all that is included in the body. See doBridgeInbound

I think timer.poll() returns a boolean (wokeAnything in device-timer.js), not an integer, but still, including it in the slog event sounds useful.

Yeah whatever the return value is. The name is addedToQueue in cosmic-swingset, which is not clear what type it was.

Tell me more about "messages/acks info on cosmic-swingset-deliver-inbound" ? I don't think we have an event of that type.

I'm talking about the deliverInvound of the mailbox, which arguably we don't really see on mainnet but that is technically enabled at that level (but are not provisioned so splats soon after I think).

mhofman commented 4 hours ago

Also I just remembered that any new events need to be added to the otel slog sender to avoid the problem of #8272/#9569 (which we likely should fix while we're at it).