Operational Defect Database

BugZero found this defect 2409 days ago.

MongoDB | 406605

[SERVER-30249] Mongos does not attach operationTime to the results if the keys are not available

Last update date:


Affected products:

MongoDB Server

Affected releases:

No affected releases provided.

Fixed releases:




Currently mongos does not return operationTime until the signing keys become available. This prevents sessions to be causally consistent as the keys are not available instantaneously. Note: returning just operationTime even if there are no keys as it does not require keys introduces issues related to a multi-shard execution without gossiping logical time. Its ok for a single RS as it does not need to gossip the clusterTime as its always matches the oplog time Suggested implementation will block in mongos initialization until keys are available if its accessing a sharded cluster 1. in initializeSharding: https://github.com/mongodb/mongo/blob/r3.5.10/src/mongo/s/server.cpp#L190 add a blocking call until keys are available: status = waitForSigningKeys(opCtx); if (!status.isOK()) { return status; } 2. implement waitForSigningKeys as (very similar to waitForShardRegistryReload) Status waitForSigningKeys(OperationContext* opCtx) { while (true) { auto stopStatus = opCtx->checkForInterruptNoAssert(); if (!stopStatus.isOK()) { return stopStatus; }   try { auto logicalTimeValidator = LogicalTimeValidator::get(opCtx) if (logicalTimeValidator->shouldGossipLogicalTime()) { return Status::OK(); } sleepFor(kRetryInterval); continue; } catch (const DBException& ex) { Status status = ex.toStatus(); warning() << "Error waiting for signing keys, sleeping for 2 seconds and trying again" << causedBy(status); sleepFor(kRetryInterval); continue; } } }

Top User Comments

xgen-internal-githook commented on Mon, 31 Jul 2017 21:13:08 +0000: Author: {'email': 'misha@mongodb.com', 'username': 'mikety', 'name': 'Misha Tyulenev'} Message: SERVER-30249 wait for the signing keys to be available in mongos at startup Branch: master https://github.com/mongodb/mongo/commit/c9638cd6bcb85f6f5371ca92226d37aecf3d045b

Additional Resources / Links


BugZero Risk Score

Coming soon



Have you been affected by this bug?


Do you know how much operational outages are costing you?

Understand the cost to your business and how BugZero can help you reduce those costs.


Login to read and write comments.

Have you ever...

had your data corrupted from a