Skip to content

Commit

Permalink
Add Mongo Driver Information (#433)
Browse files Browse the repository at this point in the history
* Bump commons-text from 1.9 to 1.10.0

Bumps commons-text from 1.9 to 1.10.0.

---
updated-dependencies:
- dependency-name: org.apache.commons:commons-text
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* Bump com.github.spotbugs from 5.0.10 to 5.0.13

Bumps com.github.spotbugs from 5.0.10 to 5.0.13.

---
updated-dependencies:
- dependency-name: com.github.spotbugs
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* Bump mockito-core from 4.8.0 to 4.8.1

Bumps [mockito-core](https://github.com/mockito/mockito) from 4.8.0 to 4.8.1.
- [Release notes](https://github.com/mockito/mockito/releases)
- [Commits](mockito/mockito@v4.8.0...v4.8.1)

---
updated-dependencies:
- dependency-name: org.mockito:mockito-core
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* Commit Code Coverage Badge

* Bump sslcontext-kickstart from 7.4.7 to 7.4.8

Bumps [sslcontext-kickstart](https://github.com/Hakky54/sslcontext-kickstart) from 7.4.7 to 7.4.8.
- [Release notes](https://github.com/Hakky54/sslcontext-kickstart/releases)
- [Changelog](https://github.com/Hakky54/sslcontext-kickstart/blob/master/CHANGELOG.md)
- [Commits](Hakky54/sslcontext-kickstart@v7.4.7...v7.4.8)

---
updated-dependencies:
- dependency-name: io.github.hakky54:sslcontext-kickstart
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* Bump checkstyle from 10.3.4 to 10.4

Bumps [checkstyle](https://github.com/checkstyle/checkstyle) from 10.3.4 to 10.4.
- [Release notes](https://github.com/checkstyle/checkstyle/releases)
- [Commits](checkstyle/checkstyle@checkstyle-10.3.4...checkstyle-10.4)

---
updated-dependencies:
- dependency-name: com.puppycrawl.tools:checkstyle
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* Revert "Bump checkstyle from 10.3.4 to 10.4"

This reverts commit b4b048d.

* Adding mongo driver information

* fixing build.gradle

* adding missing class

* Revert "adding missing class"

This reverts commit 5a53d21.

* adding missing class

* adding license

* fixing check style

* adding final test fixture

* Commit Code Coverage Badge

* Commit Code Coverage Badge

* Commit Code Coverage Badge

* [AD-1032] Driver / Application information for CloudWatch. Simplify application and version handling.

* Commit Code Coverage Badge

* [AD-1032] Refactored creating the MongoClient for cleaner use.

* [AD-1032] Fixed style issues.

* [AD-1032] Fixed style issues #2.

* [AD-1032] Fixed style issues #3.

* Commit Code Coverage Badge

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Bruce Irschick <brucei@bitquilltech.com>
Co-authored-by: birschick-bq <birschick-bq@users.noreply.github.com>
Co-authored-by: affonsoBQ <affonsoBQ@users.noreply.github.com>
  • Loading branch information
5 people authored Dec 14, 2022
1 parent 68db459 commit 74fb1e1
Show file tree
Hide file tree
Showing 15 changed files with 60 additions and 54 deletions.
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

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) {
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;
}

/**
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() {
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() {
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);
} 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

0 comments on commit 74fb1e1

Please sign in to comment.