cache getFinishedSync result to eliminate N+1 query pattern #604
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.
cache
getFinishedSyncresult in C1File to eliminate N+1 query pattern during paginationadds
sync.Once-guarded cache fields to C1File structreplaces repeated
getFinishedSynccalls inlistConnectorObjectswith cached lookupproduction CPU profiling of temporal_sync revealed that
getFinishedSyncconsumed 44.32s (43.11% of CPU) during sync operations. The function was being called on everylistConnectorObjectspagination call whenreqSyncIDis not explicitly set.ListGrants → listConnectorObjects → getFinishedSync (repeated per page)
I tested this one by reducing the workload page size so I could emulate prod a little better with my tool and I saw good results.
for this case, baton-sdk benchmarks won't show any benefit because they do not work like temporal-sync does when running in prod.
Summary by CodeRabbit
✏️ Tip: You can customize this high-level summary in your review settings.