CDRIVER-4718 store recoveryToken
for Load Balanced topology
#1417
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.
Summary
recoveryToken
for Load Balanced topologyBackground & Motivation
Bug was discovered running proposed specification test changes with the PHP driver: mongodb/specifications#1459 (comment)
The Load Balancer specification notes:
Sharded Transactions describes expected behavior for
recoveryToken
:Aside: Connection pinning
The Load Balancer specification describes required behavior for pinning all transaction operations to one connection:
This is intentionally not implemented in libmongoc due to not being needed. CDRIVER-4056 notes:
This motivated keeping a separate
_in_sharded_txn
(to check for mongos pinning) from_in_sharded_or_loadbalanced_txn
(to check forrecoveryToken
)