Skip to content

Commit

Permalink
Merge branch 'main' into fix-cluster-id
Browse files Browse the repository at this point in the history
  • Loading branch information
aaron-congo committed Oct 2, 2024
2 parents 07d0fd3 + bc104c2 commit 3e5bddf
Show file tree
Hide file tree
Showing 16 changed files with 47 additions and 30 deletions.
2 changes: 1 addition & 1 deletion aws-advanced-jdbc-wrapper-bundle/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ repositories {

dependencies {
implementation("org.apache.httpcomponents:httpclient:4.5.14")
implementation("software.amazon.awssdk:rds:2.25.70")
implementation("software.amazon.awssdk:rds:2.28.12")
implementation("software.amazon.awssdk:sts:2.27.22")
implementation(project(":aws-advanced-jdbc-wrapper"))
}
Expand Down
6 changes: 3 additions & 3 deletions examples/AWSDriverExample/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -18,13 +18,13 @@ dependencies {
implementation("org.springframework.boot:spring-boot-starter-jdbc:2.7.13") // 2.7.13 is the last version compatible with Java 8
implementation("org.postgresql:postgresql:42.7.4")
implementation("mysql:mysql-connector-java:8.0.33")
implementation("software.amazon.awssdk:rds:2.25.70")
implementation("software.amazon.awssdk:secretsmanager:2.27.8")
implementation("software.amazon.awssdk:rds:2.28.12")
implementation("software.amazon.awssdk:secretsmanager:2.28.11")
implementation("software.amazon.awssdk:sts:2.27.22")
implementation("com.fasterxml.jackson.core:jackson-databind:2.17.1")
implementation(project(":aws-advanced-jdbc-wrapper"))
implementation("io.opentelemetry:opentelemetry-api:1.42.1")
implementation("io.opentelemetry:opentelemetry-sdk:1.40.0")
implementation("io.opentelemetry:opentelemetry-sdk:1.42.1")
implementation("io.opentelemetry:opentelemetry-exporter-otlp:1.40.0")
implementation("com.amazonaws:aws-xray-recorder-sdk-core:2.18.1")
implementation("org.jsoup:jsoup:1.18.1")
Expand Down
2 changes: 1 addition & 1 deletion examples/DBCPExample/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -19,5 +19,5 @@ dependencies {
implementation("mysql:mysql-connector-java:8.0.33")
implementation(project(":aws-advanced-jdbc-wrapper"))
implementation("org.apache.commons:commons-dbcp2:2.12.0")
implementation("software.amazon.awssdk:rds:2.25.70")
implementation("software.amazon.awssdk:rds:2.28.12")
}
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,6 @@ dependencies {
implementation("org.springframework.boot:spring-boot-starter-data-jpa")
implementation("org.springframework.retry:spring-retry")
implementation("org.postgresql:postgresql:42.7.4")
implementation("software.amazon.awssdk:rds:2.25.70")
implementation("software.amazon.awssdk:rds:2.28.12")
implementation(project(":aws-advanced-jdbc-wrapper"))
}
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,6 @@ dependencies {
implementation("org.springframework.boot:spring-boot-starter-data-jpa")
implementation("org.springframework.retry:spring-retry")
implementation("org.postgresql:postgresql:42.7.4")
implementation("software.amazon.awssdk:rds:2.25.70")
implementation("software.amazon.awssdk:rds:2.28.12")
implementation(project(":aws-advanced-jdbc-wrapper"))
}
2 changes: 1 addition & 1 deletion examples/SpringHibernateExample/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,6 @@ dependencies {
implementation("org.springframework.boot:spring-boot-starter-data-jpa")
implementation("org.springframework.boot:spring-boot-starter-web")
implementation("org.postgresql:postgresql:42.7.4")
implementation("software.amazon.awssdk:rds:2.25.70")
implementation("software.amazon.awssdk:rds:2.28.12")
implementation(project(":aws-advanced-jdbc-wrapper"))
}
2 changes: 1 addition & 1 deletion examples/SpringWildflyExample/spring/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,6 @@ dependencies {
implementation("org.springframework.boot:spring-boot-starter-web")
runtimeOnly("org.springframework.boot:spring-boot-devtools")
implementation("org.postgresql:postgresql:42.7.4")
implementation("software.amazon.awssdk:rds:2.25.70")
implementation("software.amazon.awssdk:rds:2.28.12")
implementation(project(":aws-advanced-jdbc-wrapper"))
}
16 changes: 8 additions & 8 deletions wrapper/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -29,12 +29,12 @@ plugins {
dependencies {
implementation("org.checkerframework:checker-qual:3.47.0")
compileOnly("org.apache.httpcomponents:httpclient:4.5.14")
compileOnly("software.amazon.awssdk:rds:2.25.70")
compileOnly("software.amazon.awssdk:rds:2.28.12")
compileOnly("software.amazon.awssdk:auth:2.28.2") // Required for IAM (light implementation)
compileOnly("software.amazon.awssdk:http-client-spi:2.27.8") // Required for IAM (light implementation)
compileOnly("software.amazon.awssdk:sts:2.27.22")
compileOnly("com.zaxxer:HikariCP:4.0.3") // Version 4.+ is compatible with Java 8
compileOnly("software.amazon.awssdk:secretsmanager:2.27.8")
compileOnly("software.amazon.awssdk:secretsmanager:2.28.11")
compileOnly("com.fasterxml.jackson.core:jackson-databind:2.17.1")
compileOnly("mysql:mysql-connector-java:8.0.33")
compileOnly("org.postgresql:postgresql:42.7.4")
Expand All @@ -43,8 +43,8 @@ dependencies {
compileOnly("org.osgi:org.osgi.core:6.0.0")
compileOnly("com.amazonaws:aws-xray-recorder-sdk-core:2.18.1")
compileOnly("io.opentelemetry:opentelemetry-api:1.42.1")
compileOnly("io.opentelemetry:opentelemetry-sdk:1.40.0")
compileOnly("io.opentelemetry:opentelemetry-sdk-metrics:1.40.0")
compileOnly("io.opentelemetry:opentelemetry-sdk:1.42.1")
compileOnly("io.opentelemetry:opentelemetry-sdk-metrics:1.42.1")
compileOnly("org.jsoup:jsoup:1.18.1")
compileOnly("org.jetbrains.kotlin:kotlin-stdlib:1.9.24")

Expand All @@ -63,11 +63,11 @@ dependencies {
testImplementation("com.zaxxer:HikariCP:4.0.3") // Version 4.+ is compatible with Java 8
testImplementation("org.springframework.boot:spring-boot-starter-jdbc:2.7.13") // 2.7.13 is the last version compatible with Java 8
testImplementation("org.mockito:mockito-inline:4.11.0") // 4.11.0 is the last version compatible with Java 8
testImplementation("software.amazon.awssdk:rds:2.25.70")
testImplementation("software.amazon.awssdk:rds:2.28.12")
testImplementation("software.amazon.awssdk:auth:2.28.2") // Required for IAM (light implementation)
testImplementation("software.amazon.awssdk:http-client-spi:2.27.8") // Required for IAM (light implementation)
testImplementation("software.amazon.awssdk:ec2:2.28.2")
testImplementation("software.amazon.awssdk:secretsmanager:2.27.8")
testImplementation("software.amazon.awssdk:secretsmanager:2.28.11")
testImplementation("software.amazon.awssdk:sts:2.27.22")
testImplementation("org.testcontainers:testcontainers:1.20.1")
testImplementation("org.testcontainers:mysql:1.20.1")
Expand All @@ -81,8 +81,8 @@ dependencies {
testImplementation("com.fasterxml.jackson.core:jackson-databind:2.17.1")
testImplementation("com.amazonaws:aws-xray-recorder-sdk-core:2.18.1")
testImplementation("io.opentelemetry:opentelemetry-api:1.42.1")
testImplementation("io.opentelemetry:opentelemetry-sdk:1.40.0")
testImplementation("io.opentelemetry:opentelemetry-sdk-metrics:1.40.0")
testImplementation("io.opentelemetry:opentelemetry-sdk:1.42.1")
testImplementation("io.opentelemetry:opentelemetry-sdk-metrics:1.42.1")
testImplementation("io.opentelemetry:opentelemetry-exporter-otlp:1.40.0")
testImplementation("org.jsoup:jsoup:1.18.1")
}
Expand Down
2 changes: 2 additions & 0 deletions wrapper/src/main/java/software/amazon/jdbc/PluginService.java
Original file line number Diff line number Diff line change
Expand Up @@ -217,4 +217,6 @@ HostSpec getHostSpecByStrategy(List<HostSpec> hosts, HostRole role, String strat
String getTargetName();

@NonNull SessionStateService getSessionStateService();

<T> T getPlugin(final Class<T> pluginClazz);
}
Original file line number Diff line number Diff line change
Expand Up @@ -689,4 +689,13 @@ public String getTargetName() {
public @NonNull SessionStateService getSessionStateService() {
return this.sessionStateService;
}

public <T> T getPlugin(final Class<T> pluginClazz) {
for (ConnectionPlugin p : this.pluginManager.plugins) {
if (pluginClazz.isAssignableFrom(p.getClass())) {
return pluginClazz.cast(p);
}
}
return null;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -22,9 +22,9 @@
import java.sql.Statement;
import java.util.Collections;
import java.util.List;
import software.amazon.jdbc.ConnectionPluginChainBuilder;
import software.amazon.jdbc.hostlistprovider.AuroraHostListProvider;
import software.amazon.jdbc.hostlistprovider.monitoring.MonitoringRdsHostListProvider;
import software.amazon.jdbc.plugin.failover2.FailoverConnectionPlugin;

public class AuroraMysqlDialect extends MysqlDialect {

Expand Down Expand Up @@ -83,9 +83,9 @@ public boolean isDialect(final Connection connection) {
public HostListProviderSupplier getHostListProvider() {
return (properties, initialUrl, hostListProviderService, pluginService) -> {

final List<String> plugins = ConnectionPluginChainBuilder.getPluginCodes(properties);
final FailoverConnectionPlugin failover2Plugin = pluginService.getPlugin(FailoverConnectionPlugin.class);

if (plugins.contains("failover2")) {
if (failover2Plugin != null) {
return new MonitoringRdsHostListProvider(
properties,
initialUrl,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,11 +20,10 @@
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.List;
import java.util.logging.Logger;
import software.amazon.jdbc.ConnectionPluginChainBuilder;
import software.amazon.jdbc.hostlistprovider.AuroraHostListProvider;
import software.amazon.jdbc.hostlistprovider.monitoring.MonitoringRdsHostListProvider;
import software.amazon.jdbc.plugin.failover2.FailoverConnectionPlugin;

/**
* Suitable for the following AWS PG configurations.
Expand Down Expand Up @@ -128,9 +127,9 @@ public boolean isDialect(final Connection connection) {
public HostListProviderSupplier getHostListProvider() {
return (properties, initialUrl, hostListProviderService, pluginService) -> {

final List<String> plugins = ConnectionPluginChainBuilder.getPluginCodes(properties);
final FailoverConnectionPlugin failover2Plugin = pluginService.getPlugin(FailoverConnectionPlugin.class);

if (plugins.contains("failover2")) {
if (failover2Plugin != null) {
return new MonitoringRdsHostListProvider(
properties,
initialUrl,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,11 +24,11 @@
import java.util.List;
import java.util.Properties;
import org.checkerframework.checker.nullness.qual.NonNull;
import software.amazon.jdbc.ConnectionPluginChainBuilder;
import software.amazon.jdbc.HostSpec;
import software.amazon.jdbc.hostlistprovider.RdsMultiAzDbClusterListProvider;
import software.amazon.jdbc.hostlistprovider.monitoring.MonitoringRdsMultiAzHostListProvider;
import software.amazon.jdbc.plugin.failover.FailoverRestriction;
import software.amazon.jdbc.plugin.failover2.FailoverConnectionPlugin;
import software.amazon.jdbc.util.DriverInfo;

public class RdsMultiAzDbClusterMysqlDialect extends MysqlDialect {
Expand Down Expand Up @@ -98,9 +98,9 @@ public boolean isDialect(final Connection connection) {
public HostListProviderSupplier getHostListProvider() {
return (properties, initialUrl, hostListProviderService, pluginService) -> {

final List<String> plugins = ConnectionPluginChainBuilder.getPluginCodes(properties);
final FailoverConnectionPlugin failover2Plugin = pluginService.getPlugin(FailoverConnectionPlugin.class);

if (plugins.contains("failover2")) {
if (failover2Plugin != null) {
return new MonitoringRdsMultiAzHostListProvider(
properties,
initialUrl,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,11 +22,11 @@
import java.sql.Statement;
import java.util.List;
import java.util.logging.Logger;
import software.amazon.jdbc.ConnectionPluginChainBuilder;
import software.amazon.jdbc.exceptions.ExceptionHandler;
import software.amazon.jdbc.exceptions.MultiAzDbClusterPgExceptionHandler;
import software.amazon.jdbc.hostlistprovider.RdsMultiAzDbClusterListProvider;
import software.amazon.jdbc.hostlistprovider.monitoring.MonitoringRdsMultiAzHostListProvider;
import software.amazon.jdbc.plugin.failover2.FailoverConnectionPlugin;
import software.amazon.jdbc.util.DriverInfo;

public class RdsMultiAzDbClusterPgDialect extends PgDialect {
Expand Down Expand Up @@ -113,9 +113,10 @@ public boolean isDialect(final Connection connection) {
@Override
public HostListProviderSupplier getHostListProvider() {
return (properties, initialUrl, hostListProviderService, pluginService) -> {
final List<String> plugins = ConnectionPluginChainBuilder.getPluginCodes(properties);

if (plugins.contains("failover2")) {
final FailoverConnectionPlugin failover2Plugin = pluginService.getPlugin(FailoverConnectionPlugin.class);

if (failover2Plugin != null) {
return new MonitoringRdsMultiAzHostListProvider(
properties,
initialUrl,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,7 @@ void setUp() throws SQLException {
when(this.mockConnection.createStatement()).thenReturn(this.mockStatement);
when(this.mockHost.getUrl()).thenReturn("url");
when(this.failResultSet.next()).thenReturn(false);
pluginManager.plugins = new ArrayList<>();
}

@AfterEach
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -571,6 +571,11 @@ public String getTargetName() {
return new TestSessionStateService();
}

@Override
public <T> T getPlugin(Class<T> pluginClazz) {
return null;
}

@Override
public boolean isNetworkException(Throwable throwable) {
return false;
Expand Down

0 comments on commit 3e5bddf

Please sign in to comment.