Flow control
Should there be language in the spec to support flow control?
Buffering, backpressure etc.
Today, for PUSH:
-
A Transmitter is free to send as many or as little events per second as it wants. Most implementations would likely send events as soon as they are generate, potentially overwhelming Receivers during periods of high activity.
-
A Transmitter is free to buffer as many or as little events as it wants. So if the Receiver is down / unavailable, or is otherwise unable to ack all events for some reason, the Transmitter may start dropping them.
Similar considerations apply to PULL:
- If events are not pulled regularly, the Trasmitter may start dropping them. The exact details of how many events are buffered, for how long, etc. are implementation dependent and outside the spec currently.
I think it would be useful to have some of these knobs visible in the metadata / stream config, so that the Transmitters and Receivers can plan accordingly.
This came up in the following issues: https://github.com/openid/sharedsignals/issues/107 https://github.com/openid/sharedsignals/issues/106
This was discussed in the WG meeting on 2025-04-15.