Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Switch the operations callback to use an indexing strategy. #140

Merged
merged 2 commits into from
Mar 17, 2023

Conversation

plietar
Copy link
Contributor

@plietar plietar commented Mar 17, 2023

The callback endpoint when completing an operation needs to access the KV to check the integrity of the operation context that is being passed by the caller.

We previously used as historical query to look this up, but this almost always ends up returning a Service Unavailable error while the historical transaction is being fetched, and the callback needs to be retried after a short delay.

This replaces the historical query by caching the expected digest in the existing operations indexing strategy. This increases memory usage a little, but given that the indexing strategy is periodically purged, this increase should be bounded. If the operation completes too quickly, there is still a chance the strategy won't have indexed the original transaction yet, and the existing retry mechanism will be used.

The callback endpoint when completing an operation needs to access the
KV to check the integrity of the operation context that is being passed
by the caller.

We previously used as historical query to look this up, but this almost
always ends up returning a Service Unavailable error while the
historical transaction is being fetched, and the callback needs to be
retried after a short delay.

This replaces the historical query by caching the expected digest in the
existing operations indexing strategy. This increases memory usage a
little, but given that the indexing strategy is periodically purged,
this increase should be bounded. If the operation completes too quickly,
there is still a chance the strategy won't have indexed the original
transaction yet, and the existing retry mechanism will be used.
app/src/operations_endpoints.h Outdated Show resolved Hide resolved
Co-authored-by: Maik Riechert <maik.riechert@microsoft.com>
@plietar plietar enabled auto-merge (squash) March 17, 2023 11:07
@plietar plietar merged commit 0882204 into main Mar 17, 2023
@plietar plietar deleted the plietar/external-context branch March 17, 2023 11:27
@ivarprudnikov ivarprudnikov added this to the 0.5.0 milestone Nov 14, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants