Uploaded image for project: 'Core Server'
  1. Core Server
  2. SERVER-97901

It is impossible to use async RPC API with executor on which ClientMetadataPropagationEgressHook configured

    • Type: Icon: Bug Bug
    • Resolution: Unresolved
    • Priority: Icon: Major - P3 Major - P3
    • None
    • Affects Version/s: None
    • Component/s: None
    • None
    • Networking & Observability
    • ALL

      When a message is sent from an executor where ClientMetadataPropagationEgressHook already configured to shards via AsyncRPC with
      sendAuthenticatedCommandToShards , the error "is a duplicate field" is thrown.

      sendAuthenticatedCommandToShards sets Audit Meta and MayBypassWriteBlocking here, but these fields are set also in ClientMetadataPropagationEgressHook.

      In this case the result message BSON is generated with duplicated $audit or MayBypassWriteBlocking fields. For example:

      {"t":{"$date":"2024-10-31T15:05:29.053+00:00"},"s":"D2", "c":"COMMAND",  "id":21965,   "svc":"S", "ctx":"conn32","msg":"About to run the command","attr":{"db":"admin","client":"10.122.2.173:46010","commandArgs":{"listDatabases":1,"nameOnly":false,"clientOperationKey":{"$uuid":"2799b594-720a-4a14-bd06-efcd9ad9aaf3"},"mayBypassWriteBlocking":false,"lsid":{"id":{"$uuid":"693280ad-8d63-4b5d-be0c-b1748a5f6dc0"},"uid":{"$binary":{"base64":"47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=","subType":"0"}}},"$clusterTime":{"clusterTime":{"$timestamp":{"t":1730387128,"i":79}}},"$configTime":{"$timestamp":{"t":1730387128,"i":79}},"$topologyTime":{"$timestamp":{"t":1730387128,"i":17}},"$client":{"application":{"name":"MongoDB Shell"},"driver":{"name":"MongoDB Internal Client","version":"8.1.0-alpha-4629-gea54a8c"},"os":{"type":"Linux","name":"Ubuntu","architecture":"aarch64","version":"22.04"},"mongos":{"host":"ip-10-122-2-173:20044","client":"127.0.0.1:51002","version":"8.1.0-alpha-4629-gea54a8c"}},"mayBypassWriteBlocking":false,"$db":"admin"}}}
      

      In this case the receiver throws an exception like

      "errmsg" : "Database db could not be created :: caused by :: BSON field 'listDatabases.mayBypassWriteBlocking' is a duplicate field",
      

            Assignee:
            Unassigned Unassigned
            Reporter:
            igor.praznik@mongodb.com Igor Praznik
            Votes:
            0 Vote for this issue
            Watchers:
            5 Start watching this issue

              Created:
              Updated: