Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add Mongo Driver Information #433

Merged
merged 35 commits into from
Dec 14, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
35 commits
Select commit Hold shift + click to select a range
d76798f
Bump commons-text from 1.9 to 1.10.0
dependabot[bot] Oct 4, 2022
c32c445
Bump com.github.spotbugs from 5.0.10 to 5.0.13
dependabot[bot] Oct 19, 2022
8768698
Bump mockito-core from 4.8.0 to 4.8.1
dependabot[bot] Oct 21, 2022
b29d642
Merge branch 'develop' into dependabot/gradle/develop/org.apache.comm…
Oct 21, 2022
801f507
Commit Code Coverage Badge
birschick-bq Oct 21, 2022
d28ec4e
Bump sslcontext-kickstart from 7.4.7 to 7.4.8
dependabot[bot] Oct 25, 2022
b4b048d
Bump checkstyle from 10.3.4 to 10.4
dependabot[bot] Oct 31, 2022
d098c5d
Merge remote-tracking branch 'origin/dependabot/gradle/develop/com.gi…
affonsov Nov 2, 2022
cca5732
Merge remote-tracking branch 'origin/dependabot/gradle/develop/com.pu…
affonsov Nov 2, 2022
bfbb9ec
Merge remote-tracking branch 'origin/dependabot/gradle/develop/io.git…
affonsov Nov 2, 2022
7b1dc43
Merge remote-tracking branch 'origin/dependabot/gradle/develop/org.ap…
affonsov Nov 2, 2022
5c4c28c
Merge remote-tracking branch 'origin/dependabot/gradle/develop/org.mo…
affonsov Nov 2, 2022
79df4df
Merge remote-tracking branch 'origin/develop' into develop
affonsov Nov 3, 2022
f1b1a60
Revert "Bump checkstyle from 10.3.4 to 10.4"
affonsov Nov 4, 2022
6d14e9e
Adding mongo driver information
affonsov Nov 3, 2022
9d76739
fixing build.gradle
affonsov Nov 4, 2022
5a53d21
adding missing class
affonsov Nov 4, 2022
0077af7
Revert "adding missing class"
affonsov Nov 4, 2022
123e1a3
adding missing class
affonsov Nov 4, 2022
bfe2fb6
adding license
affonsov Nov 4, 2022
bb0797f
fixing check style
affonsov Nov 8, 2022
cb69991
adding final test fixture
affonsov Nov 8, 2022
711ac13
Commit Code Coverage Badge
Nov 8, 2022
a7de84d
Commit Code Coverage Badge
Dec 7, 2022
ada42ac
Merge branch 'develop' into affonsov/add-mongodriverinformation
Dec 13, 2022
332ba24
Commit Code Coverage Badge
birschick-bq Dec 13, 2022
c513d3c
[AD-1032] Driver / Application information for CloudWatch. Simplify a…
Dec 13, 2022
9fb9d02
Merge branch 'affonsov/add-mongodriverinformation' of https://github.…
Dec 13, 2022
6aaae8d
Commit Code Coverage Badge
birschick-bq Dec 13, 2022
9bad7e2
[AD-1032] Refactored creating the MongoClient for cleaner use.
Dec 13, 2022
a374042
Merge branch 'affonsov/add-mongodriverinformation' of https://github.…
Dec 13, 2022
a5a4ba2
[AD-1032] Fixed style issues.
Dec 13, 2022
ce07b37
[AD-1032] Fixed style issues #2.
Dec 13, 2022
a7d971f
[AD-1032] Fixed style issues #3.
Dec 13, 2022
7f66b26
Commit Code Coverage Badge
birschick-bq Dec 13, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/badges/jacoco.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -27,5 +27,5 @@ build/
/src/main/resources/LICENSE
/src/main/resources/NOTICE
# Generated
/common/src/main/resources/common.properties
/src/main/resources/project.properties
birschick-bq marked this conversation as resolved.
Show resolved Hide resolved

10 changes: 1 addition & 9 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -278,14 +278,7 @@ task writeProperties(type: WriteProperties) {
property("driver.major.version", MAJOR_VERSION)
property("driver.minor.version", MINOR_VERSION)
property("driver.full.version", project.version)
}

/**
* Write default application name to properties file under common.
*/
task writeCommonProperties(type: WriteProperties) {
birschick-bq marked this conversation as resolved.
Show resolved Hide resolved
outputFile("$projectDir/common/src/main/resources/common.properties")
property("default.application.name", "${APPLICATION_NAME} v${project.version}")
property("default.application.name", APPLICATION_NAME)
}

import io.franzbecker.gradle.lombok.task.DelombokTask
Expand All @@ -305,7 +298,6 @@ javadoc {

processResources {
from(writeProperties)
from(writeCommonProperties)
duplicatesStrategy(DuplicatesStrategy.INCLUDE)
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,11 +21,9 @@
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.JSchException;
import com.jcraft.jsch.Session;
import com.mongodb.MongoClientSettings;
import com.mongodb.MongoCommandException;
import com.mongodb.MongoSecurityException;
import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoClients;
import com.mongodb.client.MongoDatabase;
import lombok.AllArgsConstructor;
import lombok.Getter;
Expand Down Expand Up @@ -302,9 +300,7 @@ DocumentDbConnectionProperties getConnectionProperties() {
private void initializeClients(final DocumentDbConnectionProperties connectionProperties)
throws SQLException {
// Create the mongo client.
final MongoClientSettings settings = connectionProperties
.buildMongoClientSettings(getSshLocalPort());
mongoClient = MongoClients.create(settings);
mongoClient = connectionProperties.createMongoClient(getSshLocalPort());
mongoDatabase = mongoClient.getDatabase(connectionProperties.getDatabase());
pingDatabase();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,11 @@
import com.google.common.base.Strings;
import com.mongodb.MongoClientSettings;
import com.mongodb.MongoCredential;
import com.mongodb.MongoDriverInformation;
import com.mongodb.ReadPreference;
import com.mongodb.ServerAddress;
import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoClients;
import com.mongodb.connection.SslSettings;
import com.mongodb.event.ServerMonitorListener;
import lombok.SneakyThrows;
Expand Down Expand Up @@ -71,20 +74,10 @@ public class DocumentDbConnectionProperties extends Properties {
public static final String DOCUMENTDB_CUSTOM_OPTIONS = "DOCUMENTDB_CUSTOM_OPTIONS";
private static String classPathLocationName = null;
private static String[] documentDbSearchPaths = null;
private static final String DEFAULT_APPLICATION_NAME_KEY = "default.application.name";
private static final String PROPERTIES_FILE_PATH = "/documentdb-jdbc.properties";
static final String DEFAULT_APPLICATION_NAME;

static {
String defaultAppName = "";
try (InputStream is = DocumentDbConnectionProperties.class.getResourceAsStream(PROPERTIES_FILE_PATH)) {
final Properties p = new Properties();
p.load(is);
defaultAppName = p.getProperty(DEFAULT_APPLICATION_NAME_KEY);
} catch (Exception e) {
LOGGER.error("Error loading default application name: " + e.getMessage());
}
DEFAULT_APPLICATION_NAME = defaultAppName;
DEFAULT_APPLICATION_NAME = DocumentDbDriver.DEFAULT_APPLICATION_NAME;
birschick-bq marked this conversation as resolved.
Show resolved Hide resolved
}

/**
Expand Down Expand Up @@ -178,6 +171,20 @@ private static String getClassPathLocation() {
return classPathLocation;
}

/**
* Return MongoDriverInformation object. It will initialize the Object with application name
* and driver version.
*
* @return MongoDriverInformation
*/
private MongoDriverInformation getMongoDriverInformation() {
birschick-bq marked this conversation as resolved.
Show resolved Hide resolved
final MongoDriverInformation mongoDriverInformation = MongoDriverInformation.builder()
.driverName(getApplicationName())
.driverVersion(DocumentDbDriver.DRIVER_VERSION)
.build();
return mongoDriverInformation;
}

/**
* Gets the hostname.
*
Expand Down Expand Up @@ -258,7 +265,7 @@ public void setDatabase(final String database) {
public String getApplicationName() {
return getProperty(
DocumentDbConnectionProperty.APPLICATION_NAME.getName(),
DocumentDbConnectionProperty.APPLICATION_NAME.getDefaultValue() );
DocumentDbConnectionProperty.APPLICATION_NAME.getDefaultValue());
}

/**
Expand Down Expand Up @@ -680,6 +687,29 @@ public DocumentDbAllowDiskUseOption getAllowDiskUseOption() {
return getPropertyAsAllowDiskUseOption(DocumentDbConnectionProperty.ALLOW_DISK_USE.getName());
}

/**
* Creates a {@link MongoClient} instance from the connection properties.
*
* @return a new instance of a {@link MongoClient}.
*/
public MongoClient createMongoClient() {
birschick-bq marked this conversation as resolved.
Show resolved Hide resolved
return MongoClients.create(
buildMongoClientSettings(),
getMongoDriverInformation());
}

/**
* Creates a {@link MongoClient} instance from the connection properties using
* the SSH tunnel port on the local host.
*
* @return a new instance of a {@link MongoClient}.
*/
public MongoClient createMongoClient(final int sshLocalPort) {
return MongoClients.create(
buildMongoClientSettings(sshLocalPort),
getMongoDriverInformation());
}

/**
* Builds the MongoClientSettings from properties.
*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,29 +37,34 @@ public class DocumentDbDriver extends software.amazon.documentdb.jdbc.common.Dri
private static final String DRIVER_MAJOR_VERSION_KEY = "driver.major.version";
private static final String DRIVER_MINOR_VERSION_KEY = "driver.minor.version";
private static final String DRIVER_FULL_VERSION_KEY = "driver.full.version";
private static final String DEFAULT_APPLICATION_NAME_KEY = "default.application.name";
private static final String PROPERTIES_FILE_PATH = "/project.properties";
static final int DRIVER_MAJOR_VERSION;
static final int DRIVER_MINOR_VERSION;
static final String DRIVER_VERSION;
static final String DEFAULT_APPLICATION_NAME;

// Registers the JDBC driver.
static {
// Retrieve driver metadata from properties file.
int majorVersion = 0;
int minorVersion = 0;
String fullVersion = "";
String defaultApplicationName = "";
try (InputStream is = DocumentDbDatabaseMetaData.class.getResourceAsStream(PROPERTIES_FILE_PATH)) {
final Properties p = new Properties();
p.load(is);
majorVersion = Integer.parseInt(p.getProperty(DRIVER_MAJOR_VERSION_KEY));
minorVersion = Integer.parseInt(p.getProperty(DRIVER_MINOR_VERSION_KEY));
fullVersion = p.getProperty(DRIVER_FULL_VERSION_KEY);
defaultApplicationName = p.getProperty(DEFAULT_APPLICATION_NAME_KEY);
birschick-bq marked this conversation as resolved.
Show resolved Hide resolved
} catch (Exception e) {
LOGGER.error("Error loading driver version: " + e.getMessage());
}
DRIVER_MAJOR_VERSION = majorVersion;
DRIVER_MINOR_VERSION = minorVersion;
DRIVER_VERSION = fullVersion;
DEFAULT_APPLICATION_NAME = defaultApplicationName;

new DocumentDbDriver().register();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,6 @@
import com.google.common.collect.ImmutableList;
import com.mongodb.DuplicateKeyException;
import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoClients;
import lombok.Getter;
import lombok.NonNull;
import org.apache.commons.cli.CommandLine;
Expand Down Expand Up @@ -393,7 +392,7 @@ private static void performCommand(

private static MongoClient getMongoClient(final DocumentDbConnectionProperties properties) {
if (client == null) {
client = MongoClients.create(properties.buildMongoClientSettings());
client = properties.createMongoClient();
}
return client;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,11 +18,9 @@

import com.google.common.annotations.VisibleForTesting;
import com.google.common.collect.ImmutableList;
import com.mongodb.MongoClientSettings;
import com.mongodb.MongoException;
import com.mongodb.client.AggregateIterable;
import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoClients;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoCursor;
import com.mongodb.client.MongoDatabase;
Expand Down Expand Up @@ -221,8 +219,7 @@ private void resetQueryState() {
}

private void performCancel() throws SQLException {
final MongoClientSettings settings = connectionProperties.buildMongoClientSettings();
try (MongoClient client = MongoClients.create(settings)) {
try (MongoClient client = connectionProperties.createMongoClient()) {
final MongoDatabase database = client.getDatabase("admin");

// Find the opId to kill using the queryId.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,7 @@

package software.amazon.documentdb.jdbc.metadata;

import com.mongodb.MongoClientSettings;
import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoClients;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.model.EstimatedDocumentCountOptions;
Expand Down Expand Up @@ -387,10 +385,9 @@ private static DocumentDbSchema getCollectionMetadataDirect(
final Map<String, DocumentDbSchemaTable> tableMap,
final MongoClient client) throws SQLException {

final MongoClientSettings settings = properties.buildMongoClientSettings();
final MongoClient mongoClient = client != null
? client
: MongoClients.create(settings);
: properties.createMongoClient();
try {
final MongoDatabase database = mongoClient.getDatabase(databaseName);
for (String collectionName : getFilteredCollectionNames(database)) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@

import com.mongodb.MongoException;
import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoClients;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import lombok.NonNull;
Expand Down Expand Up @@ -87,7 +86,7 @@ public DocumentDbSchemaReader(final @NonNull DocumentDbConnectionProperties prop
this.properties = properties;
this.client = client != null
? client
: MongoClients.create(properties.buildMongoClientSettings());
: properties.createMongoClient();
this.closeClient = client == null;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,6 @@
import com.mongodb.MongoException;
import com.mongodb.client.ClientSession;
import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoClients;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.model.UpdateOptions;
Expand Down Expand Up @@ -87,7 +86,7 @@ public DocumentDbSchemaWriter(final @NonNull DocumentDbConnectionProperties prop
this.properties = properties;
this.client = client != null
? client
: MongoClients.create(properties.buildMongoClientSettings());
: properties.createMongoClient();
this.closeClient = client == null;
}

Expand Down
1 change: 0 additions & 1 deletion src/main/resources/documentdb-jdbc.properties

This file was deleted.

3 changes: 0 additions & 3 deletions src/main/resources/project.properties

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -18,10 +18,8 @@

import com.google.common.collect.ImmutableList;
import com.google.common.util.concurrent.ThreadFactoryBuilder;
import com.mongodb.MongoClientSettings;
import com.mongodb.client.FindIterable;
import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoClients;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoCursor;
import com.mongodb.client.MongoDatabase;
Expand Down Expand Up @@ -321,8 +319,7 @@ private static class MockQueryExecutor extends DocumentDbQueryExecutor {

@Override
protected java.sql.ResultSet runQuery(final String sql) throws SQLException {
final MongoClientSettings settings = VALID_CONNECTION_PROPERTIES.buildMongoClientSettings();
try (MongoClient client = MongoClients.create(settings)) {
try (MongoClient client = VALID_CONNECTION_PROPERTIES.createMongoClient()) {
final MongoDatabase database =
client.getDatabase(VALID_CONNECTION_PROPERTIES.getDatabase());
final MongoCollection<Document> collection = database.getCollection(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@

import com.mongodb.MongoException;
import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoClients;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.result.InsertOneResult;
Expand Down Expand Up @@ -214,9 +213,9 @@ public String newCollectionName(final boolean isTemporary) {

@Override
public MongoClient createMongoClient() throws SQLException {
return MongoClients.create(DocumentDbConnectionProperties
.getPropertiesFromConnectionString(getJdbcConnectionString())
.buildMongoClientSettings());
final DocumentDbConnectionProperties properties = DocumentDbConnectionProperties
.getPropertiesFromConnectionString(getJdbcConnectionString());
return properties.createMongoClient();
}

@Override
Expand Down