The behavior of the block indexer currently builds a stream of all events coming from all blockchain transactions, and then streams those events in batches to any matched listeners. For a blockchain transaction that emits multiple events, there is no guarantee about how a batch will break - during high throughput when batches are being completely filled, it's possible that a batch could break up events from a single transaction into two different batches.
There are some cases where it may be useful or necessary for an event stream listener (either internal or external) to combine information from two events in the same transaction. The easiest way to enable this type of processing would be to guarantee that batches will never break up events from a transaction.
Some detail questions are also implied:
Should this be an always-on behavior, or configurable?
What happens if a single transaction emits more events than the configured batch size? Which behavior takes precedence?
Should event streams continue to deliver a flat stream of events, or should the events be organized into transaction groupings?
If a transaction emits multiple events, but only 1 matches a given event stream, should that stream deliver only the matched event, or should it automatically include the other events from the same transaction as well?
The behavior of the block indexer currently builds a stream of all events coming from all blockchain transactions, and then streams those events in batches to any matched listeners. For a blockchain transaction that emits multiple events, there is no guarantee about how a batch will break - during high throughput when batches are being completely filled, it's possible that a batch could break up events from a single transaction into two different batches.
There are some cases where it may be useful or necessary for an event stream listener (either internal or external) to combine information from two events in the same transaction. The easiest way to enable this type of processing would be to guarantee that batches will never break up events from a transaction.
Some detail questions are also implied: