[SERVER-33947] Arbiter replies "No keys found for HMAC that is valid for time" to isMaster with clusterTime Created: 16/Mar/18  Updated: 24/Apr/18  Resolved: 13/Apr/18

Status: Closed
Project: Core Server
Component/s: Replication, Sharding
Affects Version/s: None
Fix Version/s: None

Type: Improvement Priority: Major - P3
Reporter: A. Jesse Jiryu Davis Assignee: Misha Tyulenev
Resolution: Duplicate Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Issue Links:
Duplicate
duplicates SERVER-32639 Arbiters in standalone replica sets c... Closed
Related
is related to CDRIVER-2555 Update clusterTime from handshake rep... Closed
Participants:

 Description   

I was trying to update the C Driver to update its clusterTime from replica set members' isMaster replies and send those new clusterTimes to other members in its isMaster requests. In my old code, the C Driver would initially discover the replica set by calling isMaster on all members, but ignore the clusterTimes it received in the server replies.

Now, I'm updating the client's clusterTime with the latest clusterTime seen in any isMaster reply as they are received, and I send that latest clusterTime with the next isMaster request to any member.

After this change, sending isMaster with a clusterTime to an arbiter causes:

{ "isMaster" : 1, "client" : { "driver" : { "name" : "mongoc", "version" : "1.10.0-dev" }, "os" : { "type" : "Darwin", "name" : "macOS", "version" : "17.4.0", "architecture" : "x86_64" }, "platform" : "cfg=0xde8265 posix=200112 stdc=201112 CC=clang 9.0.0 (clang-900.0.39.2) CFLAGS=\"-DBSON_MEMCHECK\" LDFLAGS=\"\"" }, "compression" : [  ], "$clusterTime" : { "clusterTime" : { "$timestamp" : { "t" : 1521233526, "i" : 1 } }, "signature" : { "hash" : { "$binary" : { "base64": "mPi0HEcgHcDV49pG4rvOLU14yO4=", "subType" : "00" } }, "keyId" : 6533633155528654849 } } }

Here's the isMaster sent to the arbiter:

{ "operationTime" : { "$timestamp" : { "t" : 1521233526, "i" : 1 } }, "ok" : 0.0, "errmsg" : "Cache Reader No keys found for HMAC that is valid for time: { ts: Timestamp(1521233526, 1) } with id: 6533633155528654849", "code" : 211, "codeName" : "KeyNotFound", "$clusterTime" : { "clusterTime" : { "$timestamp" : { "t" : 1521233526, "i" : 1 } }, "signature" : { "hash" : { "$binary" : { "base64": "AAAAAAAAAAAAAAAAAAAAAAAAAAA=", "subType" : "00" } }, "keyId" : 0 } } }

The replica set was started with auth; however, the driver never attempts to authenticate to the arbiter.

Server version 3.7.0-1275-g96e775a44f.



 Comments   
Comment by Kaloian Manassiev [ 21/Mar/18 ]

Assigning to misha.tyulenev to see if this is duplicate of SERVER-32845 and close if so.

Generated at Thu Feb 08 04:35:04 UTC 2024 using Jira 9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66.