WIP: skip loop if periodicity says not to flush yet. #486
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Waiting for the platformRuntimeDone event has a floor of 25ms. For very fast functions, we can slow them down even when we won't flush.
This removes that limitation, and allows events to buffer in the event bus until we decide at the top of an invocation that we'll be flushing.
This is a work in progress and cannot ship as is, because I'm statically setting the number of invocations to buffer. Instead the invocation context buffer needs to be refactored entirely.
I suggest dropping the enhanced metrics entirely from the invocation context tracker as we can increment/set metrics without knowing which invocation they belong to (as was the previous implementation). The invocation buffer is meant to simply hold enough data to create certain spans when needed or set certain metrics like timeouts/ooms. We should store only what we need here, instead of using it as a general purpose invocation tracker
But it does help very busy functions like this one in an infinite loop: