-
Type: Investigation
-
Resolution: Done
-
Priority: Major - P3
-
None
-
Affects Version/s: None
-
Component/s: None
-
None
This change widens the acceptable values of maxTimeMS for find and count (previously [0, INT_MAX], now [0, LLONG_MAX]).
This is backwards compatible; all previously accepted values remain valid.
It is unlikely that any caller depended on an error when providing maxTimeMS greater than INT_MAX, but this is technically an externally visible change.
If other components wish to allow the full range of maxTimeMS to be used, changes to datatypes/validation may be required.
Description of Linked Ticket
Currently FindCommandRequest and AggregateCommandRequest represent maxTimeMS differently:
- 'find' uses int32: https://github.com/10gen/mongo/blob/fd6296cfb951f0593d94ae512c795f02dccf729f/src/mongo/db/query/find_command.idl#L63-L67
- 'aggregate' uses safeInt64: https://github.com/10gen/mongo/blob/fd6296cfb951f0593d94ae512c795f02dccf729f/src/mongo/db/pipeline/aggregate_command.idl#L205-L210
Not only is the C++ type different, but also the BSON type and the parsing/validation rules are different. For simplicity, can we make them the same? Especially since we translate 'find' requests to 'aggregate' (for views), you would think they have the same set of valid values.
Looks like the last ticket to touch this was SERVER-54925, so there may be more discussion or explanation there.
- depends on
-
SERVER-78877 Why do 'find' and 'aggregate' commands represent maxTimeMS differently?
- Closed