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

Remove unnecessary conversions to StringData when calling IDL setters

    • Type: Icon: Task Task
    • Resolution: Fixed
    • Priority: Icon: Major - P3 Major - P3
    • 8.1.0-rc0
    • Affects Version/s: None
    • Component/s: None
    • Server Programmability
    • Fully Compatible
    • Programmability 2024-10-28, Programmability 2024-11-11

      A common pattern is to set an IDL string field using an explicit StringData, such as idlObject.setStringField(StringData(something.toString())). This isn't usually needed, though it doesn't cause any major problems right now. However, with SERVER-90167, we'll support setting IDL string fields by move, so passing a StringData instead of an rvalue string will inhibit a move.

      I've identified 28 places in non-test code that are likely instances of this pattern. These may not all be instances of the pattern, and most of them won't inhibit a move - some definitely will though (e.g., 1 2 3). Still, we should probably get rid of the StringData conversions here, at least where the thing being converted is a std::string.

      src/mongo/client/sasl_aws_client_protocol.cpp:        second.setXAmzSecurityToken(boost::optional<StringData>(credentials.sessionToken.value()));
      src/mongo/client/sasl_oidc_client_conversation.cpp:    firstClientRequest.setPrincipalName(StringData(_principalName));
      src/mongo/db/auth/privilege.cpp:            rsrc.setDb(StringData{_resource.dbNameToMatch().serializeWithoutTenantPrefix_UNSAFE()});
      src/mongo/db/catalog/clustered_collection_util.cpp:            indexSpec.setName(StringData(clusterKey + "_1"));
      src/mongo/db/commands/create_command.cpp:                reply.setNote(StringData(DEPR_23800));
      src/mongo/db/index/columns_access_method.cpp:    stateInfo.setFileName(StringData(state.fileName));
      src/mongo/db/index/index_access_method.cpp:    stateInfo.setFileName(StringData(state.fileName));
      src/mongo/db/modules/enterprise/src/streams/exec/checkpoint/local_disk_checkpoint_storage.cpp:        metadata.setHostName(StringData{_opts.hostName});
      src/mongo/db/modules/enterprise/src/streams/exec/kafka_consumer_operator.cpp:        streamMetaSource.setTopic(StringData{_options.topicName});
      src/mongo/db/modules/enterprise/src/streams/exec/kafka_consumer_operator.cpp:    state.setConsumerGroupId(StringData(_options.consumerGroupId));
      src/mongo/db/modules/enterprise/src/streams/exec/kafka_consumer_operator.cpp:    streamMetaSource.setTopic(StringData{_options.topicName});
      src/mongo/db/modules/enterprise/src/streams/exec/sample_data_source_operator.cpp:        sampleDataSpec.setEvent_details(StringData{"Network error"});
      src/mongo/db/modules/enterprise/src/streams/management/stream_manager.cpp:                stopCommand.setProcessorId(StringData(sp->context->streamProcessorId));
      src/mongo/db/modules/enterprise/src/streams/management/stream_manager.cpp:            sampleRequest.setName(StringData(name));
      src/mongo/db/modules/enterprise/src/streams/management/stream_manager.cpp:    statsRequest.setName(StringData(name));
      src/mongo/db/pipeline/document_source_internal_convert_bucket_index_stats.cpp:        timeseriesOptions.setMetaField(StringData(*bucketSpec.metaField));
      src/mongo/db/repl/tenant_migration_donor_service.cpp:            commonData.setTenantId(boost::optional<StringData>(_tenantId));
      src/mongo/db/repl/tenant_migration_donor_service.cpp:        commonData.setTenantId(boost::optional<StringData>(_tenantId));
      src/mongo/db/s/analyze_shard_key_cmd_util.cpp:        metrics.setNote(StringData(kOrphanDocsWarningMessage));
      src/mongo/db/s/config/configsvr_set_cluster_parameter_command.cpp:                cid.setSubId(StringData(tenantId ? tenantId->toString() : ""));
      src/mongo/db/session/logical_session_id_helpers.cpp:            lsr.setUser(StringData(user.value()->getName().getDisplayName()));
      src/mongo/db/session/logical_session_id_helpers.cpp:        lsr.setUser(StringData(user.value()->getName().getDisplayName()));
      src/mongo/db/ttl.cpp:                        collModIndex.setName(StringData{indexName});
      src/mongo/rpc/write_concern_error_detail.cpp:    wce.setCodeName(boost::optional<StringData>(_status.codeString()));
      src/mongo/s/commands/cluster_query_without_shard_key_cmd.cpp:                    res.setShardId(boost::optional<mongo::StringData>(response.shardId));
      src/mongo/s/commands/cluster_query_without_shard_key_cmd.cpp:                res.setShardId(boost::optional<mongo::StringData>(nextResponse.getShardId()));
      src/mongo/s/commands/cluster_validate_db_metadata_cmd.cpp:                    apiVersionError.setShard(StringData(shardRes.shardId.toString()));
      src/mongo/util/net/ssl_parameters.cpp:        currentValue.setAttributes(StringData{sslGlobalParams.clusterAuthX509OverrideAttributes});
      

            Assignee:
            adithi.raghavan@mongodb.com Adithi Raghavan
            Reporter:
            ryan.berryhill@mongodb.com Ryan Berryhill
            Votes:
            0 Vote for this issue
            Watchers:
            5 Start watching this issue

              Created:
              Updated:
              Resolved: