|
isResumableChangeStreamError is not currently passing in a serialization context when calling aggregation_request_helper::parseFromBSON which can cause us to deserialize agg fields incorrectly. In order to reach a valid request, we will need to go back up the call stack several layers and pass it down.
AggregateCommandRequest::parse() <-- consumes sc here
|
aggregation_request_helper::parseFromBSON() <-- no sc here
|
ErrorLabelBuilder::isResumableChangeStreamError()
|
ErrorLabelBuilder::build
|
getErrorLabels
|
ParseAndRunCommand::_updateStatsAndApplyErrorLabels <-- request can be pulled from _rec
|
appendErrorLabelsAndTopologyVersion
|
ExecCommandDatabase::_handleFailure <-- OpMsgRequest is available here
|
RunCommandImpl::_epilogue() <-- OpMsgRequest is available here
|
|
We may consider pulling the VTS off the opCtx for this fix as a stopgap, but we likely want to pull it from the request where possible. This change is in support of SERVER-73113, and can be tested by enabling the dbName assertions in that ticket.
|