diff --git a/driver-core/src/main/com/mongodb/MongoDriverInformation.java b/driver-core/src/main/com/mongodb/MongoDriverInformation.java index a3b28b62fad..d75cf9a1be5 100644 --- a/driver-core/src/main/com/mongodb/MongoDriverInformation.java +++ b/driver-core/src/main/com/mongodb/MongoDriverInformation.java @@ -16,10 +16,10 @@ package com.mongodb; -import com.mongodb.annotations.Internal; import com.mongodb.annotations.NotThreadSafe; +import com.mongodb.annotations.Sealed; import com.mongodb.internal.client.DriverInformation; -import com.mongodb.internal.client.DriverInformationHelper; +import com.mongodb.internal.connection.ConcreteMongoDriverInformation; import java.util.ArrayList; import java.util.Collections; @@ -47,8 +47,9 @@ * @since 3.4 * @mongodb.server.release 3.4 */ -public final class MongoDriverInformation { - private final List driverInformationList; +@Sealed +public abstract class MongoDriverInformation { + /** * Convenience method to create a Builder. @@ -66,7 +67,7 @@ public static Builder builder() { * @return a builder */ public static Builder builder(final MongoDriverInformation mongoDriverInformation) { - return new Builder(mongoDriverInformation); + return new Builder((ConcreteMongoDriverInformation) mongoDriverInformation); } /** @@ -74,42 +75,28 @@ public static Builder builder(final MongoDriverInformation mongoDriverInformatio * * @return the driverNames */ - public List getDriverNames() { - return DriverInformationHelper.getNames(driverInformationList); - } + public abstract List getDriverNames(); /** * Returns the driverVersions * * @return the driverVersions */ - public List getDriverVersions() { - return DriverInformationHelper.getVersions(driverInformationList); - } + public abstract List getDriverVersions(); /** * Returns the driverPlatforms * * @return the driverPlatforms */ - public List getDriverPlatforms() { - return DriverInformationHelper.getPlatforms(driverInformationList); - } - - /** - * For internal use only - */ - @Internal - public List getDriverInformationList() { - return driverInformationList; - } + public abstract List getDriverPlatforms(); /** * */ @NotThreadSafe public static final class Builder { - private final MongoDriverInformation mongoDriverInformation; + private final ConcreteMongoDriverInformation mongoDriverInformation; private String driverName; private String driverVersion; private String driverPlatform; @@ -156,25 +143,21 @@ public Builder driverPlatform(final String driverPlatform) { */ public MongoDriverInformation build() { DriverInformation driverInformation = new DriverInformation(driverName, driverVersion, driverPlatform); - if (mongoDriverInformation.driverInformationList.contains(driverInformation)) { + if (mongoDriverInformation.getDriverInformationList().contains(driverInformation)) { return mongoDriverInformation; } - List driverInformationList = new ArrayList<>(mongoDriverInformation.driverInformationList); + List driverInformationList = new ArrayList<>(mongoDriverInformation.getDriverInformationList()); driverInformationList.add(driverInformation); - return new MongoDriverInformation(Collections.unmodifiableList(driverInformationList)); + return new ConcreteMongoDriverInformation(Collections.unmodifiableList(driverInformationList)); } private Builder() { - mongoDriverInformation = new MongoDriverInformation(Collections.emptyList()); + mongoDriverInformation = new ConcreteMongoDriverInformation(Collections.emptyList()); } - private Builder(final MongoDriverInformation driverInformation) { + private Builder(final ConcreteMongoDriverInformation driverInformation) { this.mongoDriverInformation = notNull("driverInformation", driverInformation); } } - - private MongoDriverInformation(final List driverInformation) { - this.driverInformationList = notNull("driverInformation", driverInformation); - } } diff --git a/driver-core/src/main/com/mongodb/MongoNamespace.java b/driver-core/src/main/com/mongodb/MongoNamespace.java index 9c3d4c9cbc6..3cb001cce01 100644 --- a/driver-core/src/main/com/mongodb/MongoNamespace.java +++ b/driver-core/src/main/com/mongodb/MongoNamespace.java @@ -17,7 +17,6 @@ package com.mongodb; import com.mongodb.annotations.Immutable; -import com.mongodb.annotations.Internal; import org.bson.codecs.pojo.annotations.BsonCreator; import org.bson.codecs.pojo.annotations.BsonIgnore; import org.bson.codecs.pojo.annotations.BsonProperty; @@ -44,12 +43,14 @@ public final class MongoNamespace { private static final Set PROHIBITED_CHARACTERS_IN_DATABASE_NAME = new HashSet<>(asList('\0', '/', '\\', ' ', '"', '.')); - @Internal + /** + * The collection name in which to execute a command. + * @deprecated there is no replacement for this constant, as it is only needed for the OP_QUERY wire protocol message, which has + * been replaced by OP_MSG + */ + @Deprecated public static final String COMMAND_COLLECTION_NAME = "$cmd"; - @Internal - public static final MongoNamespace ADMIN_DB_COMMAND_NAMESPACE = new MongoNamespace("admin", COMMAND_COLLECTION_NAME); - private final String databaseName; private final String collectionName; @BsonIgnore diff --git a/driver-core/src/main/com/mongodb/internal/MongoNamespaceHelper.java b/driver-core/src/main/com/mongodb/internal/MongoNamespaceHelper.java new file mode 100644 index 00000000000..ec2d567fa2a --- /dev/null +++ b/driver-core/src/main/com/mongodb/internal/MongoNamespaceHelper.java @@ -0,0 +1,27 @@ +/* + * Copyright 2008-present MongoDB, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.mongodb.internal; + +import com.mongodb.MongoNamespace; + +public final class MongoNamespaceHelper { + + public static final String COMMAND_COLLECTION_NAME = "$cmd"; + public static final MongoNamespace ADMIN_DB_COMMAND_NAMESPACE = new MongoNamespace("admin", COMMAND_COLLECTION_NAME); + + private MongoNamespaceHelper() { + } +} diff --git a/driver-core/src/main/com/mongodb/internal/connection/ClientMetadata.java b/driver-core/src/main/com/mongodb/internal/connection/ClientMetadata.java index 6c98a87a9bd..b813e13b532 100644 --- a/driver-core/src/main/com/mongodb/internal/connection/ClientMetadata.java +++ b/driver-core/src/main/com/mongodb/internal/connection/ClientMetadata.java @@ -20,7 +20,6 @@ import com.mongodb.annotations.ThreadSafe; import com.mongodb.internal.VisibleForTesting; import com.mongodb.internal.client.DriverInformation; -import com.mongodb.internal.client.DriverInformationHelper; import com.mongodb.lang.Nullable; import org.bson.BsonBinaryWriter; import org.bson.BsonDocument; @@ -41,7 +40,7 @@ import static com.mongodb.assertions.Assertions.isTrueArgument; import static com.mongodb.internal.Locks.withLock; -import static com.mongodb.internal.client.DriverInformationHelper.INITIAL_DRIVER_INFORMATION; +import static com.mongodb.internal.connection.ConcreteMongoDriverInformation.INITIAL_DRIVER_INFORMATION; import static com.mongodb.internal.connection.FaasEnvironment.getFaasEnvironment; import static java.lang.System.getProperty; import static java.nio.file.Paths.get; @@ -67,7 +66,7 @@ public ClientMetadata(@Nullable final String applicationName, final MongoDriverI this.driverInformationList = new ArrayList<>(); withLock(readWriteLock.writeLock(), () -> { driverInformationList.add(INITIAL_DRIVER_INFORMATION); - driverInformationList.addAll(mongoDriverInformation.getDriverInformationList()); + driverInformationList.addAll(((ConcreteMongoDriverInformation) mongoDriverInformation).getDriverInformationList()); this.clientMetadataBsonDocument = createClientMetadataDocument(applicationName, driverInformationList); }); } @@ -82,7 +81,8 @@ public BsonDocument getBsonDocument() { public void append(final MongoDriverInformation mongoDriverInformationToAppend) { withLock(readWriteLock.writeLock(), () -> { boolean hasAddedNewData = false; - for (DriverInformation driverInformation : mongoDriverInformationToAppend.getDriverInformationList()) { + for (DriverInformation driverInformation + : ((ConcreteMongoDriverInformation) mongoDriverInformationToAppend).getDriverInformationList()) { if (!driverInformationList.contains(driverInformation)) { hasAddedNewData = true; driverInformationList.add(driverInformation); @@ -112,9 +112,10 @@ private static BsonDocument createClientMetadataDocument(@Nullable final String }); tryWithLimit(clientMetadata, d -> putAtPath(d, "os.type", getOperatingSystemType(getOperatingSystemName()))); // full driver information: + ConcreteMongoDriverInformation mongoDriverInformation = new ConcreteMongoDriverInformation(driverInformationList); tryWithLimit(clientMetadata, d -> { - putAtPath(d, "driver.name", listToString(DriverInformationHelper.getNames(driverInformationList))); - putAtPath(d, "driver.version", listToString(DriverInformationHelper.getVersions(driverInformationList))); + putAtPath(d, "driver.name", listToString(mongoDriverInformation.getDriverNames())); + putAtPath(d, "driver.version", listToString(mongoDriverInformation.getDriverVersions())); }); // optional fields: @@ -123,7 +124,7 @@ private static BsonDocument createClientMetadataDocument(@Nullable final String ClientMetadata.Orchestrator orchestrator = ClientMetadata.Orchestrator.determineExecutionOrchestrator(); tryWithLimit(clientMetadata, d -> putAtPath(d, "platform", INITIAL_DRIVER_INFORMATION.getDriverPlatform())); - tryWithLimit(clientMetadata, d -> putAtPath(d, "platform", listToString(DriverInformationHelper.getPlatforms(driverInformationList)))); + tryWithLimit(clientMetadata, d -> putAtPath(d, "platform", listToString(mongoDriverInformation.getDriverPlatforms()))); tryWithLimit(clientMetadata, d -> putAtPath(d, "os.name", getOperatingSystemName())); tryWithLimit(clientMetadata, d -> putAtPath(d, "os.architecture", getProperty("os.arch", "unknown"))); tryWithLimit(clientMetadata, d -> putAtPath(d, "os.version", getProperty("os.version", "unknown"))); diff --git a/driver-core/src/main/com/mongodb/internal/connection/CommandMessage.java b/driver-core/src/main/com/mongodb/internal/connection/CommandMessage.java index 6439cf88a0d..348349fd18c 100644 --- a/driver-core/src/main/com/mongodb/internal/connection/CommandMessage.java +++ b/driver-core/src/main/com/mongodb/internal/connection/CommandMessage.java @@ -22,6 +22,7 @@ import com.mongodb.ReadPreference; import com.mongodb.ServerApi; import com.mongodb.connection.ClusterConnectionMode; +import com.mongodb.internal.MongoNamespaceHelper; import com.mongodb.internal.TimeoutContext; import com.mongodb.internal.connection.MessageSequences.EmptyMessageSequences; import com.mongodb.internal.session.SessionContext; @@ -283,7 +284,7 @@ private int writeOpMsg(final ByteBufferBsonOutput bsonOutput, final OperationCon private int writeOpQuery(final ByteBufferBsonOutput bsonOutput) { bsonOutput.writeInt32(0); - bsonOutput.writeCString(new MongoNamespace(getDatabase(), "$cmd").getFullName()); + bsonOutput.writeCString(new MongoNamespace(getDatabase(), MongoNamespaceHelper.COMMAND_COLLECTION_NAME).getFullName()); bsonOutput.writeInt32(0); bsonOutput.writeInt32(-1); diff --git a/driver-core/src/main/com/mongodb/internal/client/DriverInformationHelper.java b/driver-core/src/main/com/mongodb/internal/connection/ConcreteMongoDriverInformation.java similarity index 55% rename from driver-core/src/main/com/mongodb/internal/client/DriverInformationHelper.java rename to driver-core/src/main/com/mongodb/internal/connection/ConcreteMongoDriverInformation.java index 76149f1a83b..2a8f37a9c0e 100644 --- a/driver-core/src/main/com/mongodb/internal/client/DriverInformationHelper.java +++ b/driver-core/src/main/com/mongodb/internal/connection/ConcreteMongoDriverInformation.java @@ -13,9 +13,12 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.mongodb.internal.client; +package com.mongodb.internal.connection; + +import com.mongodb.MongoDriverInformation; import com.mongodb.internal.build.MongoDriverVersion; +import com.mongodb.internal.client.DriverInformation; import java.util.Collections; import java.util.List; @@ -23,36 +26,45 @@ import java.util.function.Function; import java.util.stream.Collectors; +import static com.mongodb.assertions.Assertions.notNull; import static java.lang.String.format; import static java.lang.System.getProperty; -public final class DriverInformationHelper { - +public final class ConcreteMongoDriverInformation extends MongoDriverInformation { public static final DriverInformation INITIAL_DRIVER_INFORMATION = new DriverInformation(MongoDriverVersion.NAME, MongoDriverVersion.VERSION, format("Java/%s/%s", getProperty("java.vendor", "unknown-vendor"), - getProperty("java.runtime.version", "unknown-version"))); + getProperty("java.runtime.version", "unknown-version"))); + + private final List driverInformationList; + + public ConcreteMongoDriverInformation(final List driverInformation) { + this.driverInformationList = notNull("driverInformation", driverInformation); + } - public static List getNames(final List driverInformation) { - return getDriverField(DriverInformation::getDriverName, driverInformation); + @Override + public List getDriverNames() { + return getDriverField(DriverInformation::getDriverName); } - public static List getVersions(final List driverInformation) { - return getDriverField(DriverInformation::getDriverVersion, driverInformation); + @Override + public List getDriverVersions() { + return getDriverField(DriverInformation::getDriverVersion); } - public static List getPlatforms(final List driverInformation) { - return getDriverField(DriverInformation::getDriverPlatform, driverInformation); + @Override + public List getDriverPlatforms() { + return getDriverField(DriverInformation::getDriverPlatform); } - private static List getDriverField(final Function fieldSupplier, - final List driverInformation) { - return Collections.unmodifiableList(driverInformation.stream() + public List getDriverInformationList() { + return driverInformationList; + } + + private List getDriverField(final Function fieldSupplier) { + return Collections.unmodifiableList(driverInformationList.stream() .map(fieldSupplier) .filter(Objects::nonNull) .collect(Collectors.toList())); } - - private DriverInformationHelper() { - } } diff --git a/driver-core/src/main/com/mongodb/internal/connection/InternalStreamConnection.java b/driver-core/src/main/com/mongodb/internal/connection/InternalStreamConnection.java index f5ddcecfcfe..8f9753644e0 100644 --- a/driver-core/src/main/com/mongodb/internal/connection/InternalStreamConnection.java +++ b/driver-core/src/main/com/mongodb/internal/connection/InternalStreamConnection.java @@ -49,9 +49,9 @@ import com.mongodb.internal.diagnostics.logging.Logger; import com.mongodb.internal.diagnostics.logging.Loggers; import com.mongodb.internal.logging.StructuredLogger; +import com.mongodb.internal.observability.micrometer.Span; import com.mongodb.internal.session.SessionContext; import com.mongodb.internal.time.Timeout; -import com.mongodb.internal.tracing.Span; import com.mongodb.lang.Nullable; import org.bson.BsonBinaryReader; import org.bson.BsonDocument; @@ -94,9 +94,9 @@ import static com.mongodb.internal.connection.ProtocolHelper.getSnapshotTimestamp; import static com.mongodb.internal.connection.ProtocolHelper.isCommandOk; import static com.mongodb.internal.logging.LogMessage.Level.DEBUG; +import static com.mongodb.internal.observability.micrometer.MongodbObservation.HighCardinalityKeyNames.QUERY_TEXT; +import static com.mongodb.internal.observability.micrometer.MongodbObservation.LowCardinalityKeyNames.RESPONSE_STATUS_CODE; import static com.mongodb.internal.thread.InterruptionUtil.translateInterruptedException; -import static com.mongodb.internal.tracing.MongodbObservation.HighCardinalityKeyNames.QUERY_TEXT; -import static com.mongodb.internal.tracing.MongodbObservation.LowCardinalityKeyNames.RESPONSE_STATUS_CODE; import static java.util.Arrays.asList; /** diff --git a/driver-core/src/main/com/mongodb/internal/connection/OperationContext.java b/driver-core/src/main/com/mongodb/internal/connection/OperationContext.java index bc4a785d545..68213992d4f 100644 --- a/driver-core/src/main/com/mongodb/internal/connection/OperationContext.java +++ b/driver-core/src/main/com/mongodb/internal/connection/OperationContext.java @@ -26,9 +26,9 @@ import com.mongodb.internal.TimeoutContext; import com.mongodb.internal.TimeoutSettings; import com.mongodb.internal.VisibleForTesting; +import com.mongodb.internal.observability.micrometer.Span; +import com.mongodb.internal.observability.micrometer.TracingManager; import com.mongodb.internal.session.SessionContext; -import com.mongodb.internal.tracing.Span; -import com.mongodb.internal.tracing.TracingManager; import com.mongodb.lang.Nullable; import com.mongodb.selector.ServerSelector; diff --git a/driver-core/src/main/com/mongodb/internal/tracing/MicrometerTracer.java b/driver-core/src/main/com/mongodb/internal/observability/micrometer/MicrometerTracer.java similarity index 92% rename from driver-core/src/main/com/mongodb/internal/tracing/MicrometerTracer.java rename to driver-core/src/main/com/mongodb/internal/observability/micrometer/MicrometerTracer.java index 99d7024336a..a7204a01a71 100644 --- a/driver-core/src/main/com/mongodb/internal/tracing/MicrometerTracer.java +++ b/driver-core/src/main/com/mongodb/internal/observability/micrometer/MicrometerTracer.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.mongodb.internal.tracing; +package com.mongodb.internal.observability.micrometer; import com.mongodb.MongoNamespace; import com.mongodb.lang.Nullable; @@ -33,11 +33,11 @@ import java.io.PrintWriter; import java.io.StringWriter; -import static com.mongodb.internal.tracing.MongodbObservation.LowCardinalityKeyNames.EXCEPTION_MESSAGE; -import static com.mongodb.internal.tracing.MongodbObservation.LowCardinalityKeyNames.EXCEPTION_STACKTRACE; -import static com.mongodb.internal.tracing.MongodbObservation.LowCardinalityKeyNames.EXCEPTION_TYPE; -import static com.mongodb.internal.tracing.MongodbObservation.MONGODB_OBSERVATION; -import static com.mongodb.observability.MicrometerObservabilitySettings.ENV_OBSERVABILITY_QUERY_TEXT_MAX_LENGTH; +import static com.mongodb.internal.observability.micrometer.MongodbObservation.LowCardinalityKeyNames.EXCEPTION_MESSAGE; +import static com.mongodb.internal.observability.micrometer.MongodbObservation.LowCardinalityKeyNames.EXCEPTION_STACKTRACE; +import static com.mongodb.internal.observability.micrometer.MongodbObservation.LowCardinalityKeyNames.EXCEPTION_TYPE; +import static com.mongodb.internal.observability.micrometer.MongodbObservation.MONGODB_OBSERVATION; +import static com.mongodb.internal.observability.micrometer.TracingManager.ENV_OBSERVABILITY_QUERY_TEXT_MAX_LENGTH; import static java.lang.System.getenv; import static java.util.Optional.ofNullable; diff --git a/driver-core/src/main/com/mongodb/internal/tracing/MongodbObservation.java b/driver-core/src/main/com/mongodb/internal/observability/micrometer/MongodbObservation.java similarity index 98% rename from driver-core/src/main/com/mongodb/internal/tracing/MongodbObservation.java rename to driver-core/src/main/com/mongodb/internal/observability/micrometer/MongodbObservation.java index 4a25487841b..0fbfe165f50 100644 --- a/driver-core/src/main/com/mongodb/internal/tracing/MongodbObservation.java +++ b/driver-core/src/main/com/mongodb/internal/observability/micrometer/MongodbObservation.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.mongodb.internal.tracing; +package com.mongodb.internal.observability.micrometer; import io.micrometer.common.docs.KeyName; import io.micrometer.observation.Observation; diff --git a/driver-core/src/main/com/mongodb/internal/tracing/Span.java b/driver-core/src/main/com/mongodb/internal/observability/micrometer/Span.java similarity index 98% rename from driver-core/src/main/com/mongodb/internal/tracing/Span.java rename to driver-core/src/main/com/mongodb/internal/observability/micrometer/Span.java index dd1d42a3be0..84bdbb41672 100644 --- a/driver-core/src/main/com/mongodb/internal/tracing/Span.java +++ b/driver-core/src/main/com/mongodb/internal/observability/micrometer/Span.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.mongodb.internal.tracing; +package com.mongodb.internal.observability.micrometer; import com.mongodb.MongoNamespace; import com.mongodb.lang.Nullable; diff --git a/driver-core/src/main/com/mongodb/internal/tracing/TraceContext.java b/driver-core/src/main/com/mongodb/internal/observability/micrometer/TraceContext.java similarity index 92% rename from driver-core/src/main/com/mongodb/internal/tracing/TraceContext.java rename to driver-core/src/main/com/mongodb/internal/observability/micrometer/TraceContext.java index cb2f6ef1020..5ca248db59d 100644 --- a/driver-core/src/main/com/mongodb/internal/tracing/TraceContext.java +++ b/driver-core/src/main/com/mongodb/internal/observability/micrometer/TraceContext.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.mongodb.internal.tracing; +package com.mongodb.internal.observability.micrometer; @SuppressWarnings("InterfaceIsType") public interface TraceContext { diff --git a/driver-core/src/main/com/mongodb/internal/tracing/Tracer.java b/driver-core/src/main/com/mongodb/internal/observability/micrometer/Tracer.java similarity index 97% rename from driver-core/src/main/com/mongodb/internal/tracing/Tracer.java rename to driver-core/src/main/com/mongodb/internal/observability/micrometer/Tracer.java index 1ddfc8f2087..632580ab40e 100644 --- a/driver-core/src/main/com/mongodb/internal/tracing/Tracer.java +++ b/driver-core/src/main/com/mongodb/internal/observability/micrometer/Tracer.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.mongodb.internal.tracing; +package com.mongodb.internal.observability.micrometer; import com.mongodb.MongoNamespace; import com.mongodb.lang.Nullable; diff --git a/driver-core/src/main/com/mongodb/internal/tracing/TracingManager.java b/driver-core/src/main/com/mongodb/internal/observability/micrometer/TracingManager.java similarity index 80% rename from driver-core/src/main/com/mongodb/internal/tracing/TracingManager.java rename to driver-core/src/main/com/mongodb/internal/observability/micrometer/TracingManager.java index b4a71039c6a..2dadd11efec 100644 --- a/driver-core/src/main/com/mongodb/internal/tracing/TracingManager.java +++ b/driver-core/src/main/com/mongodb/internal/observability/micrometer/TracingManager.java @@ -14,18 +14,19 @@ * limitations under the License. */ -package com.mongodb.internal.tracing; +package com.mongodb.internal.observability.micrometer; import com.mongodb.MongoNamespace; import com.mongodb.ServerAddress; import com.mongodb.UnixServerAddress; import com.mongodb.connection.ConnectionId; +import com.mongodb.internal.MongoNamespaceHelper; import com.mongodb.internal.connection.CommandMessage; import com.mongodb.internal.connection.OperationContext; import com.mongodb.internal.session.SessionContext; import com.mongodb.lang.Nullable; -import com.mongodb.observability.MicrometerObservabilitySettings; import com.mongodb.observability.ObservabilitySettings; +import com.mongodb.observability.micrometer.MicrometerObservabilitySettings; import io.micrometer.common.KeyValues; import io.micrometer.observation.ObservationRegistry; import org.bson.BsonDocument; @@ -33,20 +34,19 @@ import java.util.function.Predicate; import java.util.function.Supplier; -import static com.mongodb.internal.tracing.MongodbObservation.LowCardinalityKeyNames.CLIENT_CONNECTION_ID; -import static com.mongodb.internal.tracing.MongodbObservation.LowCardinalityKeyNames.COLLECTION; -import static com.mongodb.internal.tracing.MongodbObservation.LowCardinalityKeyNames.COMMAND_NAME; -import static com.mongodb.internal.tracing.MongodbObservation.LowCardinalityKeyNames.CURSOR_ID; -import static com.mongodb.internal.tracing.MongodbObservation.LowCardinalityKeyNames.NAMESPACE; -import static com.mongodb.internal.tracing.MongodbObservation.LowCardinalityKeyNames.NETWORK_TRANSPORT; -import static com.mongodb.internal.tracing.MongodbObservation.LowCardinalityKeyNames.QUERY_SUMMARY; -import static com.mongodb.internal.tracing.MongodbObservation.LowCardinalityKeyNames.SERVER_ADDRESS; -import static com.mongodb.internal.tracing.MongodbObservation.LowCardinalityKeyNames.SERVER_CONNECTION_ID; -import static com.mongodb.internal.tracing.MongodbObservation.LowCardinalityKeyNames.SERVER_PORT; -import static com.mongodb.internal.tracing.MongodbObservation.LowCardinalityKeyNames.SESSION_ID; -import static com.mongodb.internal.tracing.MongodbObservation.LowCardinalityKeyNames.SYSTEM; -import static com.mongodb.internal.tracing.MongodbObservation.LowCardinalityKeyNames.TRANSACTION_NUMBER; -import static com.mongodb.observability.MicrometerObservabilitySettings.ENV_OBSERVABILITY_ENABLED; +import static com.mongodb.internal.observability.micrometer.MongodbObservation.LowCardinalityKeyNames.CLIENT_CONNECTION_ID; +import static com.mongodb.internal.observability.micrometer.MongodbObservation.LowCardinalityKeyNames.COLLECTION; +import static com.mongodb.internal.observability.micrometer.MongodbObservation.LowCardinalityKeyNames.COMMAND_NAME; +import static com.mongodb.internal.observability.micrometer.MongodbObservation.LowCardinalityKeyNames.NAMESPACE; +import static com.mongodb.internal.observability.micrometer.MongodbObservation.LowCardinalityKeyNames.NETWORK_TRANSPORT; +import static com.mongodb.internal.observability.micrometer.MongodbObservation.LowCardinalityKeyNames.QUERY_SUMMARY; +import static com.mongodb.internal.observability.micrometer.MongodbObservation.LowCardinalityKeyNames.SERVER_ADDRESS; +import static com.mongodb.internal.observability.micrometer.MongodbObservation.LowCardinalityKeyNames.SERVER_CONNECTION_ID; +import static com.mongodb.internal.observability.micrometer.MongodbObservation.LowCardinalityKeyNames.SERVER_PORT; +import static com.mongodb.internal.observability.micrometer.MongodbObservation.LowCardinalityKeyNames.SESSION_ID; +import static com.mongodb.internal.observability.micrometer.MongodbObservation.LowCardinalityKeyNames.SYSTEM; +import static com.mongodb.internal.observability.micrometer.MongodbObservation.LowCardinalityKeyNames.TRANSACTION_NUMBER; +import static com.mongodb.internal.observability.micrometer.MongodbObservation.LowCardinalityKeyNames.CURSOR_ID; import static java.lang.System.getenv; /** @@ -64,9 +64,19 @@ public class TracingManager { private final Tracer tracer; private final boolean enableCommandPayload; + /** + * If set, this will enable/disable tracing even when an observationRegistry has been passed + */ + public static final String ENV_OBSERVABILITY_ENABLED = "OBSERVABILITY_MONGODB_ENABLED"; + + /** + * If set, this will truncate the command payload captured in the tracing span to the specified length. + */ + public static final String ENV_OBSERVABILITY_QUERY_TEXT_MAX_LENGTH = "OBSERVABILITY_MONGODB_QUERY_TEXT_MAX_LENGTH"; + /** * Constructs a new TracingManager with the specified observation registry. - * @param observationRegistry The observation registry to use for tracing operations, may be null. + * @param observabilitySettings The observation registry to use for tracing operations, may be null. */ public TracingManager(@Nullable final ObservabilitySettings observabilitySettings) { if (observabilitySettings == null) { @@ -211,7 +221,7 @@ public Span createTracingSpan(final CommandMessage message, if (parentNamespace != null) { namespace = parentNamespace.getDatabaseName(); collection = - MongoNamespace.COMMAND_COLLECTION_NAME.equalsIgnoreCase(parentNamespace.getCollectionName()) ? "" + MongoNamespaceHelper.COMMAND_COLLECTION_NAME.equalsIgnoreCase(parentNamespace.getCollectionName()) ? "" : parentNamespace.getCollectionName(); } else { namespace = message.getDatabase(); diff --git a/driver-core/src/main/com/mongodb/internal/tracing/TransactionSpan.java b/driver-core/src/main/com/mongodb/internal/observability/micrometer/TransactionSpan.java similarity index 98% rename from driver-core/src/main/com/mongodb/internal/tracing/TransactionSpan.java rename to driver-core/src/main/com/mongodb/internal/observability/micrometer/TransactionSpan.java index 789f259e82c..3d16d18a976 100644 --- a/driver-core/src/main/com/mongodb/internal/tracing/TransactionSpan.java +++ b/driver-core/src/main/com/mongodb/internal/observability/micrometer/TransactionSpan.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.mongodb.internal.tracing; +package com.mongodb.internal.observability.micrometer; import com.mongodb.lang.Nullable; diff --git a/driver-core/src/main/com/mongodb/internal/observability/micrometer/package-info.java b/driver-core/src/main/com/mongodb/internal/observability/micrometer/package-info.java new file mode 100644 index 00000000000..b6172b0ab9d --- /dev/null +++ b/driver-core/src/main/com/mongodb/internal/observability/micrometer/package-info.java @@ -0,0 +1,25 @@ +/* + * Copyright 2008-present MongoDB, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * Contains classes related to micrometer observability + */ +@Internal +@NonNullApi +package com.mongodb.internal.observability.micrometer; + +import com.mongodb.annotations.Internal; +import com.mongodb.lang.NonNullApi; diff --git a/driver-core/src/main/com/mongodb/internal/tracing/package-info.java b/driver-core/src/main/com/mongodb/internal/observability/package-info.java similarity index 82% rename from driver-core/src/main/com/mongodb/internal/tracing/package-info.java rename to driver-core/src/main/com/mongodb/internal/observability/package-info.java index e7dd3311143..521c692ccc4 100644 --- a/driver-core/src/main/com/mongodb/internal/tracing/package-info.java +++ b/driver-core/src/main/com/mongodb/internal/observability/package-info.java @@ -15,9 +15,11 @@ */ /** - * Contains classes related to tracing + * Contains classes related to observability */ +@Internal @NonNullApi -package com.mongodb.internal.tracing; +package com.mongodb.internal.observability; +import com.mongodb.annotations.Internal; import com.mongodb.lang.NonNullApi; diff --git a/driver-core/src/main/com/mongodb/internal/operation/AbortTransactionOperation.java b/driver-core/src/main/com/mongodb/internal/operation/AbortTransactionOperation.java index f3acc9fd779..535e9e94a95 100644 --- a/driver-core/src/main/com/mongodb/internal/operation/AbortTransactionOperation.java +++ b/driver-core/src/main/com/mongodb/internal/operation/AbortTransactionOperation.java @@ -19,6 +19,7 @@ import com.mongodb.Function; import com.mongodb.MongoNamespace; import com.mongodb.WriteConcern; +import com.mongodb.internal.MongoNamespaceHelper; import com.mongodb.internal.TimeoutContext; import com.mongodb.lang.Nullable; import org.bson.BsonDocument; @@ -51,7 +52,7 @@ public String getCommandName() { @Override public MongoNamespace getNamespace() { - return MongoNamespace.ADMIN_DB_COMMAND_NAMESPACE; + return MongoNamespaceHelper.ADMIN_DB_COMMAND_NAMESPACE; } @Override diff --git a/driver-core/src/main/com/mongodb/internal/operation/ClientBulkWriteOperation.java b/driver-core/src/main/com/mongodb/internal/operation/ClientBulkWriteOperation.java index c94fcc04783..f33b0f40615 100644 --- a/driver-core/src/main/com/mongodb/internal/operation/ClientBulkWriteOperation.java +++ b/driver-core/src/main/com/mongodb/internal/operation/ClientBulkWriteOperation.java @@ -115,7 +115,7 @@ import java.util.function.Supplier; import java.util.stream.Stream; -import static com.mongodb.MongoNamespace.COMMAND_COLLECTION_NAME; +import static com.mongodb.internal.MongoNamespaceHelper.COMMAND_COLLECTION_NAME; import static com.mongodb.assertions.Assertions.assertFalse; import static com.mongodb.assertions.Assertions.assertNotNull; import static com.mongodb.assertions.Assertions.assertTrue; diff --git a/driver-core/src/main/com/mongodb/internal/operation/CommandReadOperation.java b/driver-core/src/main/com/mongodb/internal/operation/CommandReadOperation.java index 0fbc6eb06e9..d31fca24ba9 100644 --- a/driver-core/src/main/com/mongodb/internal/operation/CommandReadOperation.java +++ b/driver-core/src/main/com/mongodb/internal/operation/CommandReadOperation.java @@ -23,7 +23,7 @@ import org.bson.BsonDocument; import org.bson.codecs.Decoder; -import static com.mongodb.MongoNamespace.COMMAND_COLLECTION_NAME; +import static com.mongodb.internal.MongoNamespaceHelper.COMMAND_COLLECTION_NAME; import static com.mongodb.assertions.Assertions.notNull; import static com.mongodb.internal.operation.AsyncOperationHelper.executeRetryableReadAsync; import static com.mongodb.internal.operation.CommandOperationHelper.CommandCreator; diff --git a/driver-core/src/main/com/mongodb/internal/operation/CommitTransactionOperation.java b/driver-core/src/main/com/mongodb/internal/operation/CommitTransactionOperation.java index 30ff3bf19de..ba1bb30befc 100644 --- a/driver-core/src/main/com/mongodb/internal/operation/CommitTransactionOperation.java +++ b/driver-core/src/main/com/mongodb/internal/operation/CommitTransactionOperation.java @@ -26,6 +26,7 @@ import com.mongodb.MongoTimeoutException; import com.mongodb.MongoWriteConcernException; import com.mongodb.WriteConcern; +import com.mongodb.internal.MongoNamespaceHelper; import com.mongodb.internal.TimeoutContext; import com.mongodb.internal.async.SingleResultCallback; import com.mongodb.internal.binding.AsyncWriteBinding; @@ -119,7 +120,7 @@ public String getCommandName() { @Override public MongoNamespace getNamespace() { - return MongoNamespace.ADMIN_DB_COMMAND_NAMESPACE; + return MongoNamespaceHelper.ADMIN_DB_COMMAND_NAMESPACE; } @Override diff --git a/driver-core/src/main/com/mongodb/internal/operation/DropDatabaseOperation.java b/driver-core/src/main/com/mongodb/internal/operation/DropDatabaseOperation.java index 2ee963923fe..63506b85718 100644 --- a/driver-core/src/main/com/mongodb/internal/operation/DropDatabaseOperation.java +++ b/driver-core/src/main/com/mongodb/internal/operation/DropDatabaseOperation.java @@ -18,6 +18,7 @@ import com.mongodb.MongoNamespace; import com.mongodb.WriteConcern; +import com.mongodb.internal.MongoNamespaceHelper; import com.mongodb.internal.async.SingleResultCallback; import com.mongodb.internal.binding.AsyncWriteBinding; import com.mongodb.internal.binding.WriteBinding; @@ -63,7 +64,7 @@ public String getCommandName() { @Override public MongoNamespace getNamespace() { - return new MongoNamespace(databaseName, MongoNamespace.COMMAND_COLLECTION_NAME); + return new MongoNamespace(databaseName, MongoNamespaceHelper.COMMAND_COLLECTION_NAME); } @Override diff --git a/driver-core/src/main/com/mongodb/internal/operation/ListCollectionsOperation.java b/driver-core/src/main/com/mongodb/internal/operation/ListCollectionsOperation.java index da3966b26de..0eaefb2da23 100644 --- a/driver-core/src/main/com/mongodb/internal/operation/ListCollectionsOperation.java +++ b/driver-core/src/main/com/mongodb/internal/operation/ListCollectionsOperation.java @@ -35,7 +35,7 @@ import java.util.function.Supplier; -import static com.mongodb.MongoNamespace.COMMAND_COLLECTION_NAME; +import static com.mongodb.internal.MongoNamespaceHelper.COMMAND_COLLECTION_NAME; import static com.mongodb.assertions.Assertions.notNull; import static com.mongodb.internal.VisibleForTesting.AccessModifier.PRIVATE; import static com.mongodb.internal.async.ErrorHandlingResultCallback.errorHandlingCallback; diff --git a/driver-core/src/main/com/mongodb/internal/operation/ListDatabasesOperation.java b/driver-core/src/main/com/mongodb/internal/operation/ListDatabasesOperation.java index d51194406b6..de75d28c128 100644 --- a/driver-core/src/main/com/mongodb/internal/operation/ListDatabasesOperation.java +++ b/driver-core/src/main/com/mongodb/internal/operation/ListDatabasesOperation.java @@ -27,7 +27,7 @@ import org.bson.BsonValue; import org.bson.codecs.Decoder; -import static com.mongodb.MongoNamespace.COMMAND_COLLECTION_NAME; +import static com.mongodb.internal.MongoNamespaceHelper.COMMAND_COLLECTION_NAME; import static com.mongodb.assertions.Assertions.notNull; import static com.mongodb.internal.async.ErrorHandlingResultCallback.errorHandlingCallback; import static com.mongodb.internal.operation.AsyncOperationHelper.asyncSingleBatchCursorTransformer; diff --git a/driver-core/src/main/com/mongodb/observability/ObservabilitySettings.java b/driver-core/src/main/com/mongodb/observability/ObservabilitySettings.java index 42109174568..7cc3374cbf1 100644 --- a/driver-core/src/main/com/mongodb/observability/ObservabilitySettings.java +++ b/driver-core/src/main/com/mongodb/observability/ObservabilitySettings.java @@ -20,6 +20,7 @@ import com.mongodb.annotations.Immutable; import com.mongodb.annotations.Reason; import com.mongodb.annotations.Sealed; +import com.mongodb.observability.micrometer.MicrometerObservabilitySettings; /** * Observability settings for the driver. diff --git a/driver-core/src/main/com/mongodb/observability/MicrometerObservabilitySettings.java b/driver-core/src/main/com/mongodb/observability/micrometer/MicrometerObservabilitySettings.java similarity index 75% rename from driver-core/src/main/com/mongodb/observability/MicrometerObservabilitySettings.java rename to driver-core/src/main/com/mongodb/observability/micrometer/MicrometerObservabilitySettings.java index 2278ced5bbc..426e4671185 100644 --- a/driver-core/src/main/com/mongodb/observability/MicrometerObservabilitySettings.java +++ b/driver-core/src/main/com/mongodb/observability/micrometer/MicrometerObservabilitySettings.java @@ -14,14 +14,15 @@ * limitations under the License. */ -package com.mongodb.observability; +package com.mongodb.observability.micrometer; +import com.mongodb.MongoConfigurationException; import com.mongodb.annotations.Alpha; import com.mongodb.annotations.Immutable; -import com.mongodb.annotations.Internal; import com.mongodb.annotations.NotThreadSafe; import com.mongodb.annotations.Reason; import com.mongodb.lang.Nullable; +import com.mongodb.observability.ObservabilitySettings; import io.micrometer.observation.ObservationRegistry; import java.util.Objects; @@ -32,11 +33,14 @@ * The Micrometer Observation settings for tracing operations, commands and transactions. * *

If tracing is configured by supplying an {@code observationRegistry} then setting the environment variable - * {@value ENV_OBSERVABILITY_ENABLED} is used to enable or disable the creation of tracing spans. + * {@value com.mongodb.internal.observability.micrometer.TracingManager#ENV_OBSERVABILITY_ENABLED} is used to enable or disable the + * creation of tracing spans. * - *

If set the environment variable {@value ENV_OBSERVABILITY_QUERY_TEXT_MAX_LENGTH} will be used to determine the maximum length - * of command payloads captured in tracing spans. If the environment variable is not set, the entire command payloads is - * captured (unless a {@code maxQueryTextLength} is specified via the Builder). + *

If set the environment variable + * {@value com.mongodb.internal.observability.micrometer.TracingManager#ENV_OBSERVABILITY_QUERY_TEXT_MAX_LENGTH} + * will be used to determine the maximum length of command payloads captured in tracing spans. + * If the environment variable is not set, the entire command payloads are captured (unless a {@code maxQueryTextLength} is specified via + * the Builder). * * @since 5.7 */ @@ -44,21 +48,18 @@ @Immutable public final class MicrometerObservabilitySettings extends ObservabilitySettings { - /** - * If set, this will enable/disable tracing even when an observationRegistry has been passed - *

- * For internal use only - */ - @Internal - public static final String ENV_OBSERVABILITY_ENABLED = "OBSERVABILITY_MONGODB_ENABLED"; + private static final boolean OBSERVATION_REGISTRY_AVAILABLE; + static { + boolean isAvailable = false; + try { + Class.forName("io.micrometer.observation.ObservationRegistry"); + isAvailable = true; + } catch (ClassNotFoundException e) { + // No Micrometer support + } + OBSERVATION_REGISTRY_AVAILABLE = isAvailable; + } - /** - * If set, this will truncate the command payload captured in the tracing span to the specified length. - *

- * For internal use only - */ - @Internal - public static final String ENV_OBSERVABILITY_QUERY_TEXT_MAX_LENGTH = "OBSERVABILITY_MONGODB_QUERY_TEXT_MAX_LENGTH"; @Nullable private final ObservationRegistry observationRegistry; private final int maxQueryTextLength; @@ -74,7 +75,7 @@ public static Builder builder() { } /** - * Convenience method to create a from an existing {@code TracingSettings}. + * Convenience method to create a builder from an existing {@code MicrometerObservabilitySettings}. * * @param settings create a builder from existing settings * @return a builder @@ -106,7 +107,7 @@ public int getMaxQueryTextLength() { } /** - * A builder for {@code TracingSettings} + * A builder for {@code MicrometerObservabilitySettings} */ @NotThreadSafe public static final class Builder { @@ -115,7 +116,12 @@ public static final class Builder { private boolean enableCommandPayloadTracing; private int maxQueryTextLength = Integer.MAX_VALUE; - private Builder() {} + private Builder() { + if (!OBSERVATION_REGISTRY_AVAILABLE) { + throw new MongoConfigurationException("The 'io.micrometer.observation' dependency is required for " + + "MicrometerObservabilitySettings."); + } + } private Builder(final MicrometerObservabilitySettings settings) { this.observationRegistry = settings.observationRegistry; this.enableCommandPayloadTracing = settings.enableCommandPayloadTracing; @@ -123,18 +129,18 @@ private Builder(final MicrometerObservabilitySettings settings) { } /** - * Applies the tracingSettings to the builder + * Applies the MicrometerObservabilitySettings to the builder * *

Note: Overwrites all existing settings

* - * @param tracingSettings the tracingSettings + * @param settings the MicrometerObservabilitySettings * @return this */ - public MicrometerObservabilitySettings.Builder applySettings(final MicrometerObservabilitySettings tracingSettings) { - notNull("tracingSettings", tracingSettings); - observationRegistry = tracingSettings.observationRegistry; - enableCommandPayloadTracing = tracingSettings.enableCommandPayloadTracing; - maxQueryTextLength = tracingSettings.maxQueryTextLength; + public MicrometerObservabilitySettings.Builder applySettings(final MicrometerObservabilitySettings settings) { + notNull("settings", settings); + observationRegistry = settings.observationRegistry; + enableCommandPayloadTracing = settings.enableCommandPayloadTracing; + maxQueryTextLength = settings.maxQueryTextLength; return this; } diff --git a/driver-core/src/main/com/mongodb/observability/micrometer/package-info.java b/driver-core/src/main/com/mongodb/observability/micrometer/package-info.java new file mode 100644 index 00000000000..64b044170bc --- /dev/null +++ b/driver-core/src/main/com/mongodb/observability/micrometer/package-info.java @@ -0,0 +1,28 @@ +/* + * Copyright 2008-present MongoDB, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * Contains classes related to MongoDB micrometer observability, including tracing. + * + * @since 5.7 + */ +@Alpha(Reason.CLIENT) +@NonNullApi +package com.mongodb.observability.micrometer; + +import com.mongodb.annotations.Alpha; +import com.mongodb.annotations.Reason; +import com.mongodb.lang.NonNullApi; diff --git a/driver-core/src/main/com/mongodb/observability/package-info.java b/driver-core/src/main/com/mongodb/observability/package-info.java index b546e7dff60..0e5b4c31c52 100644 --- a/driver-core/src/main/com/mongodb/observability/package-info.java +++ b/driver-core/src/main/com/mongodb/observability/package-info.java @@ -19,8 +19,6 @@ * * @since 5.7 */ - - @Alpha(Reason.CLIENT) @NonNullApi package com.mongodb.observability; diff --git a/driver-core/src/test/functional/com/mongodb/internal/operation/AsyncCommandBatchCursorTest.java b/driver-core/src/test/functional/com/mongodb/internal/operation/AsyncCommandBatchCursorTest.java index 3708081fc26..61723a3b1d3 100644 --- a/driver-core/src/test/functional/com/mongodb/internal/operation/AsyncCommandBatchCursorTest.java +++ b/driver-core/src/test/functional/com/mongodb/internal/operation/AsyncCommandBatchCursorTest.java @@ -32,7 +32,7 @@ import com.mongodb.internal.binding.AsyncConnectionSource; import com.mongodb.internal.connection.AsyncConnection; import com.mongodb.internal.connection.OperationContext; -import com.mongodb.internal.tracing.TracingManager; +import com.mongodb.internal.observability.micrometer.TracingManager; import org.bson.BsonArray; import org.bson.BsonDocument; import org.bson.BsonInt32; diff --git a/driver-core/src/test/unit/com/mongodb/internal/operation/AsyncChangeStreamBatchCursorSpecification.groovy b/driver-core/src/test/unit/com/mongodb/internal/operation/AsyncChangeStreamBatchCursorSpecification.groovy index b7f8f0e9408..5ce98c0917b 100644 --- a/driver-core/src/test/unit/com/mongodb/internal/operation/AsyncChangeStreamBatchCursorSpecification.groovy +++ b/driver-core/src/test/unit/com/mongodb/internal/operation/AsyncChangeStreamBatchCursorSpecification.groovy @@ -22,7 +22,7 @@ import com.mongodb.internal.TimeoutContext import com.mongodb.internal.async.SingleResultCallback import com.mongodb.internal.binding.AsyncReadBinding import com.mongodb.internal.connection.OperationContext -import com.mongodb.internal.tracing.TracingManager +import com.mongodb.internal.observability.micrometer.TracingManager import org.bson.Document import spock.lang.Specification diff --git a/driver-core/src/test/unit/com/mongodb/internal/operation/AsyncCommandBatchCursorSpecification.groovy b/driver-core/src/test/unit/com/mongodb/internal/operation/AsyncCommandBatchCursorSpecification.groovy index e3f2e525146..4dcaf33d0cb 100644 --- a/driver-core/src/test/unit/com/mongodb/internal/operation/AsyncCommandBatchCursorSpecification.groovy +++ b/driver-core/src/test/unit/com/mongodb/internal/operation/AsyncCommandBatchCursorSpecification.groovy @@ -35,7 +35,7 @@ import com.mongodb.internal.async.SingleResultCallback import com.mongodb.internal.binding.AsyncConnectionSource import com.mongodb.internal.connection.AsyncConnection import com.mongodb.internal.connection.OperationContext -import com.mongodb.internal.tracing.TracingManager +import com.mongodb.internal.observability.micrometer.TracingManager import org.bson.BsonArray import org.bson.BsonDocument import org.bson.BsonInt32 diff --git a/driver-core/src/test/unit/com/mongodb/internal/operation/ChangeStreamBatchCursorTest.java b/driver-core/src/test/unit/com/mongodb/internal/operation/ChangeStreamBatchCursorTest.java index 552afaea95b..f399fc3859f 100644 --- a/driver-core/src/test/unit/com/mongodb/internal/operation/ChangeStreamBatchCursorTest.java +++ b/driver-core/src/test/unit/com/mongodb/internal/operation/ChangeStreamBatchCursorTest.java @@ -25,7 +25,7 @@ import com.mongodb.internal.binding.ReadBinding; import com.mongodb.internal.connection.Connection; import com.mongodb.internal.connection.OperationContext; -import com.mongodb.internal.tracing.TracingManager; +import com.mongodb.internal.observability.micrometer.TracingManager; import org.bson.BsonDocument; import org.bson.BsonInt32; import org.bson.Document; diff --git a/driver-core/src/test/unit/com/mongodb/internal/operation/CommandBatchCursorSpecification.groovy b/driver-core/src/test/unit/com/mongodb/internal/operation/CommandBatchCursorSpecification.groovy index 3190c1f6289..2a9d4e5026b 100644 --- a/driver-core/src/test/unit/com/mongodb/internal/operation/CommandBatchCursorSpecification.groovy +++ b/driver-core/src/test/unit/com/mongodb/internal/operation/CommandBatchCursorSpecification.groovy @@ -35,7 +35,7 @@ import com.mongodb.internal.TimeoutSettings import com.mongodb.internal.binding.ConnectionSource import com.mongodb.internal.connection.Connection import com.mongodb.internal.connection.OperationContext -import com.mongodb.internal.tracing.TracingManager +import com.mongodb.internal.observability.micrometer.TracingManager import org.bson.BsonArray import org.bson.BsonDocument import org.bson.BsonInt32 diff --git a/driver-core/src/test/unit/com/mongodb/internal/operation/CommandBatchCursorTest.java b/driver-core/src/test/unit/com/mongodb/internal/operation/CommandBatchCursorTest.java index b4b4101bd56..0ba83144d93 100644 --- a/driver-core/src/test/unit/com/mongodb/internal/operation/CommandBatchCursorTest.java +++ b/driver-core/src/test/unit/com/mongodb/internal/operation/CommandBatchCursorTest.java @@ -31,7 +31,7 @@ import com.mongodb.internal.binding.ConnectionSource; import com.mongodb.internal.connection.Connection; import com.mongodb.internal.connection.OperationContext; -import com.mongodb.internal.tracing.TracingManager; +import com.mongodb.internal.observability.micrometer.TracingManager; import org.bson.BsonArray; import org.bson.BsonDocument; import org.bson.BsonInt32; diff --git a/driver-kotlin-coroutine/src/integrationTest/kotlin/com/mongodb/kotlin/client/coroutine/syncadapter/SyncClientSession.kt b/driver-kotlin-coroutine/src/integrationTest/kotlin/com/mongodb/kotlin/client/coroutine/syncadapter/SyncClientSession.kt index 3c66babd5d8..1867a15468c 100644 --- a/driver-kotlin-coroutine/src/integrationTest/kotlin/com/mongodb/kotlin/client/coroutine/syncadapter/SyncClientSession.kt +++ b/driver-kotlin-coroutine/src/integrationTest/kotlin/com/mongodb/kotlin/client/coroutine/syncadapter/SyncClientSession.kt @@ -21,7 +21,7 @@ import com.mongodb.TransactionOptions import com.mongodb.client.ClientSession as JClientSession import com.mongodb.client.TransactionBody import com.mongodb.internal.TimeoutContext -import com.mongodb.internal.tracing.TransactionSpan +import com.mongodb.internal.observability.micrometer.TransactionSpan import com.mongodb.kotlin.client.coroutine.ClientSession import com.mongodb.session.ServerSession import kotlinx.coroutines.runBlocking diff --git a/driver-kotlin-sync/src/integrationTest/kotlin/com/mongodb/kotlin/client/syncadapter/SyncClientSession.kt b/driver-kotlin-sync/src/integrationTest/kotlin/com/mongodb/kotlin/client/syncadapter/SyncClientSession.kt index 001198dbcd0..f995d1a6125 100644 --- a/driver-kotlin-sync/src/integrationTest/kotlin/com/mongodb/kotlin/client/syncadapter/SyncClientSession.kt +++ b/driver-kotlin-sync/src/integrationTest/kotlin/com/mongodb/kotlin/client/syncadapter/SyncClientSession.kt @@ -21,7 +21,7 @@ import com.mongodb.TransactionOptions import com.mongodb.client.ClientSession as JClientSession import com.mongodb.client.TransactionBody import com.mongodb.internal.TimeoutContext -import com.mongodb.internal.tracing.TransactionSpan +import com.mongodb.internal.observability.micrometer.TransactionSpan import com.mongodb.kotlin.client.ClientSession import com.mongodb.session.ServerSession import org.bson.BsonDocument diff --git a/driver-kotlin-sync/src/main/kotlin/com/mongodb/kotlin/client/ClientSession.kt b/driver-kotlin-sync/src/main/kotlin/com/mongodb/kotlin/client/ClientSession.kt index 9786f5592e6..5656feb4523 100644 --- a/driver-kotlin-sync/src/main/kotlin/com/mongodb/kotlin/client/ClientSession.kt +++ b/driver-kotlin-sync/src/main/kotlin/com/mongodb/kotlin/client/ClientSession.kt @@ -18,7 +18,7 @@ package com.mongodb.kotlin.client import com.mongodb.ClientSessionOptions import com.mongodb.TransactionOptions import com.mongodb.client.ClientSession as JClientSession -import com.mongodb.internal.tracing.TransactionSpan +import com.mongodb.internal.observability.micrometer.TransactionSpan import java.io.Closeable import java.util.concurrent.TimeUnit diff --git a/driver-reactive-streams/src/main/com/mongodb/reactivestreams/client/internal/OperationExecutorImpl.java b/driver-reactive-streams/src/main/com/mongodb/reactivestreams/client/internal/OperationExecutorImpl.java index 06f64becf5c..6fcce061eb4 100644 --- a/driver-reactive-streams/src/main/com/mongodb/reactivestreams/client/internal/OperationExecutorImpl.java +++ b/driver-reactive-streams/src/main/com/mongodb/reactivestreams/client/internal/OperationExecutorImpl.java @@ -34,7 +34,7 @@ import com.mongodb.internal.operation.OperationHelper; import com.mongodb.internal.operation.ReadOperation; import com.mongodb.internal.operation.WriteOperation; -import com.mongodb.internal.tracing.TracingManager; +import com.mongodb.internal.observability.micrometer.TracingManager; import com.mongodb.lang.Nullable; import com.mongodb.reactivestreams.client.ClientSession; import com.mongodb.reactivestreams.client.ReactiveContextProvider; diff --git a/driver-reactive-streams/src/test/functional/com/mongodb/reactivestreams/client/syncadapter/SyncClientSession.java b/driver-reactive-streams/src/test/functional/com/mongodb/reactivestreams/client/syncadapter/SyncClientSession.java index ab234ad6f3e..e1d765150a7 100644 --- a/driver-reactive-streams/src/test/functional/com/mongodb/reactivestreams/client/syncadapter/SyncClientSession.java +++ b/driver-reactive-streams/src/test/functional/com/mongodb/reactivestreams/client/syncadapter/SyncClientSession.java @@ -22,7 +22,7 @@ import com.mongodb.client.ClientSession; import com.mongodb.client.TransactionBody; import com.mongodb.internal.TimeoutContext; -import com.mongodb.internal.tracing.TransactionSpan; +import com.mongodb.internal.observability.micrometer.TransactionSpan; import com.mongodb.lang.Nullable; import com.mongodb.session.ServerSession; import org.bson.BsonDocument; diff --git a/driver-scala/src/integrationTest/scala/org/mongodb/scala/syncadapter/SyncClientSession.scala b/driver-scala/src/integrationTest/scala/org/mongodb/scala/syncadapter/SyncClientSession.scala index 4c0cb19217d..711b80037f5 100644 --- a/driver-scala/src/integrationTest/scala/org/mongodb/scala/syncadapter/SyncClientSession.scala +++ b/driver-scala/src/integrationTest/scala/org/mongodb/scala/syncadapter/SyncClientSession.scala @@ -19,7 +19,7 @@ package org.mongodb.scala.syncadapter import com.mongodb.{ ClientSessionOptions, MongoInterruptedException, ServerAddress, TransactionOptions } import com.mongodb.client.{ ClientSession => JClientSession, TransactionBody } import com.mongodb.internal.TimeoutContext -import com.mongodb.internal.tracing.TransactionSpan +import com.mongodb.internal.observability.micrometer.TransactionSpan import com.mongodb.session.ServerSession import org.bson.{ BsonDocument, BsonTimestamp } import org.mongodb.scala._ diff --git a/driver-sync/src/main/com/mongodb/client/ClientSession.java b/driver-sync/src/main/com/mongodb/client/ClientSession.java index abf0ff33fbd..00ba5eba23c 100644 --- a/driver-sync/src/main/com/mongodb/client/ClientSession.java +++ b/driver-sync/src/main/com/mongodb/client/ClientSession.java @@ -18,7 +18,7 @@ import com.mongodb.ServerAddress; import com.mongodb.TransactionOptions; -import com.mongodb.internal.tracing.TransactionSpan; +import com.mongodb.internal.observability.micrometer.TransactionSpan; import com.mongodb.lang.Nullable; /** diff --git a/driver-sync/src/main/com/mongodb/client/internal/ClientSessionImpl.java b/driver-sync/src/main/com/mongodb/client/internal/ClientSessionImpl.java index c1937843a9d..aa1414dce5d 100644 --- a/driver-sync/src/main/com/mongodb/client/internal/ClientSessionImpl.java +++ b/driver-sync/src/main/com/mongodb/client/internal/ClientSessionImpl.java @@ -36,8 +36,8 @@ import com.mongodb.internal.operation.WriteOperation; import com.mongodb.internal.session.BaseClientSessionImpl; import com.mongodb.internal.session.ServerSessionPool; -import com.mongodb.internal.tracing.TracingManager; -import com.mongodb.internal.tracing.TransactionSpan; +import com.mongodb.internal.observability.micrometer.TracingManager; +import com.mongodb.internal.observability.micrometer.TransactionSpan; import com.mongodb.lang.Nullable; import static com.mongodb.MongoException.TRANSIENT_TRANSACTION_ERROR_LABEL; diff --git a/driver-sync/src/main/com/mongodb/client/internal/MongoClientImpl.java b/driver-sync/src/main/com/mongodb/client/internal/MongoClientImpl.java index 28f3587adc4..bbeb7419bc7 100644 --- a/driver-sync/src/main/com/mongodb/client/internal/MongoClientImpl.java +++ b/driver-sync/src/main/com/mongodb/client/internal/MongoClientImpl.java @@ -48,7 +48,7 @@ import com.mongodb.internal.diagnostics.logging.Logger; import com.mongodb.internal.diagnostics.logging.Loggers; import com.mongodb.internal.session.ServerSessionPool; -import com.mongodb.internal.tracing.TracingManager; +import com.mongodb.internal.observability.micrometer.TracingManager; import com.mongodb.lang.Nullable; import org.bson.BsonDocument; import org.bson.Document; diff --git a/driver-sync/src/main/com/mongodb/client/internal/MongoClusterImpl.java b/driver-sync/src/main/com/mongodb/client/internal/MongoClusterImpl.java index 423d8128f93..9ff868061f9 100644 --- a/driver-sync/src/main/com/mongodb/client/internal/MongoClusterImpl.java +++ b/driver-sync/src/main/com/mongodb/client/internal/MongoClusterImpl.java @@ -59,10 +59,10 @@ import com.mongodb.internal.operation.ReadOperation; import com.mongodb.internal.operation.WriteOperation; import com.mongodb.internal.session.ServerSessionPool; -import com.mongodb.internal.tracing.Span; -import com.mongodb.internal.tracing.TraceContext; -import com.mongodb.internal.tracing.TracingManager; -import com.mongodb.internal.tracing.TransactionSpan; +import com.mongodb.internal.observability.micrometer.Span; +import com.mongodb.internal.observability.micrometer.TraceContext; +import com.mongodb.internal.observability.micrometer.TracingManager; +import com.mongodb.internal.observability.micrometer.TransactionSpan; import com.mongodb.lang.Nullable; import io.micrometer.common.KeyValues; import org.bson.BsonDocument; @@ -78,17 +78,17 @@ import static com.mongodb.MongoException.TRANSIENT_TRANSACTION_ERROR_LABEL; import static com.mongodb.MongoException.UNKNOWN_TRANSACTION_COMMIT_RESULT_LABEL; -import static com.mongodb.MongoNamespace.COMMAND_COLLECTION_NAME; +import static com.mongodb.internal.MongoNamespaceHelper.COMMAND_COLLECTION_NAME; import static com.mongodb.ReadPreference.primary; import static com.mongodb.assertions.Assertions.isTrue; import static com.mongodb.assertions.Assertions.isTrueArgument; import static com.mongodb.assertions.Assertions.notNull; import static com.mongodb.internal.TimeoutContext.createTimeoutContext; -import static com.mongodb.internal.tracing.MongodbObservation.LowCardinalityKeyNames.COLLECTION; -import static com.mongodb.internal.tracing.MongodbObservation.LowCardinalityKeyNames.NAMESPACE; -import static com.mongodb.internal.tracing.MongodbObservation.LowCardinalityKeyNames.OPERATION_NAME; -import static com.mongodb.internal.tracing.MongodbObservation.LowCardinalityKeyNames.OPERATION_SUMMARY; -import static com.mongodb.internal.tracing.MongodbObservation.LowCardinalityKeyNames.SYSTEM; +import static com.mongodb.internal.observability.micrometer.MongodbObservation.LowCardinalityKeyNames.COLLECTION; +import static com.mongodb.internal.observability.micrometer.MongodbObservation.LowCardinalityKeyNames.NAMESPACE; +import static com.mongodb.internal.observability.micrometer.MongodbObservation.LowCardinalityKeyNames.OPERATION_NAME; +import static com.mongodb.internal.observability.micrometer.MongodbObservation.LowCardinalityKeyNames.OPERATION_SUMMARY; +import static com.mongodb.internal.observability.micrometer.MongodbObservation.LowCardinalityKeyNames.SYSTEM; final class MongoClusterImpl implements MongoCluster { @Nullable diff --git a/driver-sync/src/test/functional/com/mongodb/observability/MicrometerProseTest.java b/driver-sync/src/test/functional/com/mongodb/observability/MicrometerProseTest.java index 524aad1eee8..d4239aa44d7 100644 --- a/driver-sync/src/test/functional/com/mongodb/observability/MicrometerProseTest.java +++ b/driver-sync/src/test/functional/com/mongodb/observability/MicrometerProseTest.java @@ -22,6 +22,7 @@ import com.mongodb.client.MongoClients; import com.mongodb.client.MongoCollection; import com.mongodb.client.MongoDatabase; +import com.mongodb.observability.micrometer.MicrometerObservabilitySettings; import io.micrometer.observation.ObservationRegistry; import io.micrometer.tracing.test.reporter.inmemory.InMemoryOtelSetup; import org.bson.Document; @@ -35,9 +36,9 @@ import java.util.Map; import static com.mongodb.ClusterFixture.getDefaultDatabaseName; -import static com.mongodb.internal.tracing.MongodbObservation.HighCardinalityKeyNames.QUERY_TEXT; -import static com.mongodb.observability.MicrometerObservabilitySettings.ENV_OBSERVABILITY_ENABLED; -import static com.mongodb.observability.MicrometerObservabilitySettings.ENV_OBSERVABILITY_QUERY_TEXT_MAX_LENGTH; +import static com.mongodb.internal.observability.micrometer.TracingManager.ENV_OBSERVABILITY_ENABLED; +import static com.mongodb.internal.observability.micrometer.TracingManager.ENV_OBSERVABILITY_QUERY_TEXT_MAX_LENGTH; +import static com.mongodb.internal.observability.micrometer.MongodbObservation.HighCardinalityKeyNames.QUERY_TEXT; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertTrue; diff --git a/driver-sync/src/test/functional/com/mongodb/observability/SpanTree.java b/driver-sync/src/test/functional/com/mongodb/observability/SpanTree.java index 8c6bb7a2638..aa6697bf3ad 100644 --- a/driver-sync/src/test/functional/com/mongodb/observability/SpanTree.java +++ b/driver-sync/src/test/functional/com/mongodb/observability/SpanTree.java @@ -34,12 +34,12 @@ import java.util.UUID; import java.util.function.BiConsumer; -import static com.mongodb.internal.tracing.MongodbObservation.LowCardinalityKeyNames.CLIENT_CONNECTION_ID; -import static com.mongodb.internal.tracing.MongodbObservation.LowCardinalityKeyNames.CURSOR_ID; -import static com.mongodb.internal.tracing.MongodbObservation.LowCardinalityKeyNames.SERVER_CONNECTION_ID; -import static com.mongodb.internal.tracing.MongodbObservation.LowCardinalityKeyNames.SERVER_PORT; -import static com.mongodb.internal.tracing.MongodbObservation.LowCardinalityKeyNames.SESSION_ID; -import static com.mongodb.internal.tracing.MongodbObservation.LowCardinalityKeyNames.TRANSACTION_NUMBER; +import static com.mongodb.internal.observability.micrometer.MongodbObservation.LowCardinalityKeyNames.CLIENT_CONNECTION_ID; +import static com.mongodb.internal.observability.micrometer.MongodbObservation.LowCardinalityKeyNames.CURSOR_ID; +import static com.mongodb.internal.observability.micrometer.MongodbObservation.LowCardinalityKeyNames.SERVER_CONNECTION_ID; +import static com.mongodb.internal.observability.micrometer.MongodbObservation.LowCardinalityKeyNames.SERVER_PORT; +import static com.mongodb.internal.observability.micrometer.MongodbObservation.LowCardinalityKeyNames.SESSION_ID; +import static com.mongodb.internal.observability.micrometer.MongodbObservation.LowCardinalityKeyNames.TRANSACTION_NUMBER; import static org.bson.assertions.Assertions.notNull; import static org.junit.jupiter.api.Assertions.fail; diff --git a/driver-sync/src/test/unit/com/mongodb/client/internal/MongoClusterSpecification.groovy b/driver-sync/src/test/unit/com/mongodb/client/internal/MongoClusterSpecification.groovy index 975b0114ff4..c75a4255595 100644 --- a/driver-sync/src/test/unit/com/mongodb/client/internal/MongoClusterSpecification.groovy +++ b/driver-sync/src/test/unit/com/mongodb/client/internal/MongoClusterSpecification.groovy @@ -28,7 +28,7 @@ import com.mongodb.internal.TimeoutSettings import com.mongodb.internal.client.model.changestream.ChangeStreamLevel import com.mongodb.internal.connection.Cluster import com.mongodb.internal.session.ServerSessionPool -import com.mongodb.internal.tracing.TracingManager +import com.mongodb.internal.observability.micrometer.TracingManager import org.bson.BsonDocument import org.bson.Document import org.bson.codecs.UuidCodec