[SERVER-55614] Permit Versioned API options for getMore and transaction-continuing commands Created: 30/Mar/21 Updated: 29/Oct/23 Resolved: 07/May/21 |
|
| Status: | Closed |
| Project: | Core Server |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | 5.0.0-rc0 |
| Type: | Improvement | Priority: | Major - P3 |
| Reporter: | Andreas Braun | Assignee: | A. Jesse Jiryu Davis |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Issue Links: |
|
||||||||||||||||||||||||
| Backwards Compatibility: | Fully Compatible | ||||||||||||||||||||||||
| Sprint: | Repl 2021-05-17 | ||||||||||||||||||||||||
| Participants: | |||||||||||||||||||||||||
| Description |
|
The Versioned API design requires drivers and users to omit Versioned API parameters in the following two instances: The reason for not allowing them on getMore calls is that it's bound to the API Version declared when creating the cursor. For transactions, the entire transaction operates under the same declared API Version, so later commands should not be able to override this. While this approach makes sense, it creates unnecessary workload in drivers. Drivers have to inspect command documents to know whether they should append Versioned API options for this instance. This can have a performance impact for drivers that already have raw BSON documents at this point. To fix this, Drivers and users should be required to include API versioning options for getMore and transaction-continuing commands, with the server emitting a command error if there is an API Version mismatch (exact comparison, e.g. apiVersion, apiStrict, and apiDeprecationErrors match). To aid with the transition to this new requirement, the options should be optional at first and can become required options once all drivers have updated their logic to always include these options. |
| Comments |
| Comment by Githook User [ 07/May/21 ] |
|
Author: {'name': 'A. Jesse Jiryu Davis', 'email': 'jesse@mongodb.com', 'username': 'ajdavis'}Message: |
| Comment by A. Jesse Jiryu Davis [ 05/May/21 ] |
|
When I said "4 commits", I'd forgotten that I'd accidentally made the shell already pass API params in getMore and transaction-continuing commands ( |
| Comment by Githook User [ 04/May/21 ] |
|
Author: {'name': 'A. Jesse Jiryu Davis', 'email': 'jesse@mongodb.com', 'username': 'ajdavis'}Message: |
| Comment by A. Jesse Jiryu Davis [ 03/May/21 ] |
|
I plan on 4 commits:
|
| Comment by A. Jesse Jiryu Davis [ 30/Mar/21 ] |
|
I've been involved in Slack conversations about this change. Since the driver authors say it will make their code simpler, I'm in favor. |