Skip to content

Latest commit

 

History

History
426 lines (353 loc) · 43.8 KB

CHANGELOG.md

File metadata and controls

426 lines (353 loc) · 43.8 KB

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

2.5.3 - 2024-11-29

🪄 Added

  • Add WRITER custom endpoint type (PR #1202).

🐛 Fixed

  • Custom endpoint monitor obeys refresh rate (PR #1175).
  • Abort interrupts running queries (PR #1182).
  • Use the AwsCredentialsProviderHandler from the ConfigurationProfile when it is defined (PR #1183).
  • Use iamHost property in federated auth and okta plugins (PR #1191).
  • Initialize failover2 topology monitors after dialect is updated (PR #1198).
  • Avoid updating topology before setReadOnly() (PR #1190).
  • Various minor limitless fixes (PR #1180).
  • Use correct value for SlidingExpirationCache#put cache item expiration (PR #1203).
  • Failover mode is set to reader-or-writer for reader cluster URLs (PR #1204).

🦀 Changed

  • Use singleton for null telemetry objects in NullTelemetryFactory (PR #1188).

2.5.2 - 2024-11-4

🐛 Fixed

  • Limitless Connection Plugin to reduce extra connections made during new connection creation (PR #1174).

2.5.1 - 2024-10-24

🐛 Fixed

  • RdsHostListProvider#getClusterId returning null clusterId causing NPE in Limitless Connection Plugin (PR #1162).

2.5.0 - 2024-10-18

🪄 Added

🐛 Fixed

  • Use the cluster URL as the default cluster ID (PR #1131).
  • Fix logic in SlidingExpirationCache and SlidingExpirationCacheWithCleanupThread (PR #1142).
  • Limitless Connection Plugin to check dialect and attempt recovery in case an unsupported dialect is encountered (PR #1148).
  • Don't get Statement from closed ResultSet (PR #1130).
  • Add null checks to the limitless plugin (PR #1152).
  • Verify plugin presence based on actual plugin list (PR #1141)

🦀 Changed

  • Updated expected URL patterns for Limitless Databases (PR #1147).
  • Removed MaxPermSize JVM arg in gradle.properties (PR #1132).

2.4.0 - 2024-09-25

🪄 Added

🐛 Fixed

  • Unwrap nested exceptions when checking for login exceptions (Issue #1081).

2.3.9 - 2024-08-09

🐛 Fixed

  • Statement object cast error (Issue #1045).
  • Missing required dependency in the bundled jar for ADFS Authentication (PR #1083).

🦀 Changed

2.3.8 - 2024-07-31

🐛 Fixed

  • Avoid setting a blank catalog when closing a connection (PR #1047).
  • Ensure the enableGreenNodeReplacement parameter setting is used during connection (Issue #1059).
  • Ensure GovCloud DNS patterns are supported (PR #1054).

2.3.7 - 2024-06-05

🪄 Added

  • Documentation:
    • Warnings of transitive dependencies for IAM, Federated, and Okta Authentication plugins (PR #1007).
    • Section in Known Limitations regarding Virtual Threading and possible pinning due to use of synchronized in the codebase (Issue #1024).

🐛 Fixed

  • Driver incorrectly truncating nested connection options when parsing connection urls resulting in unexpected errors (PR #988).
  • ConfigurationProfilePresetCodes.isKnownPreset incorrectly returning false (Issue #1000).
  • Documentation:
    • Incorrect reference to Federated Authentication Plugin (PR #1008).
    • Broken links in code example documentation (Issue #1017).

2.3.6 - 2024-05-01

🪄 Added

🐛 Fixed

  • Connection identification and tracking in the host list provider (PR #943)[#943].
  • Green node endpoint replacement, allowing the AWS JDBC Driver to detect and connect to green nodes after Blue/Green switchover (PR# 948)(#948). Addresses issue #678.
  • MariaDB Pool Datasource support. Addresses issue #957.

🦀 Changed

  • Log level of Failover.startWriterFailover and Failover.establishedConnection from fine to info for better visibility of failover-related logs (Issue #890).
  • Telemetry's connection property documentation. See Telemetry.

2.3.5 - 2024-03-14

🪄 Added

  • Sample code configuring the AWS JDBC Driver with DBCP (PR #930).

🦀 Changed

  • Fix issue with deadlock while using prepared transactions and PostgreSQL Explicit Locking (PR #918).
  • Removed ConnectionStringHostListProvider#identifyConnection since it is not used (PR #920).

2.3.4 - 2024-03-01

🪄 Added

  • Documentation:
  • Spring Framework application code examples with load balanced access to database cluster reader instances (PR #852).
  • New configuration preset SF_ optimized for Spring Framework applications (PR #852).
  • Lightweight alternative for IAM token generator that requires fewer dependencies (PR #867).

🐛 Fixed

  • Fixes to session state transfer (PR #852).
  • Enhanced Host Monitoring Plugin (EFM) v2 plugin to use ConcurrentHashMap instead of HashMap to avoid ConcurrentModificationException (Issue #855).
  • Move lock location and skip executing Statement.getConnection when running Statement.cancel to fix Statement.cancel for MySQL (PR #851)
  • Remove Telemetry trace associated with a Monitor thread because traces for long-running tasks is an anti-pattern (PR #875).

🦀 Changed

  • HostSelector implementations to take into account HostAvailability (PR #856).
  • Reduced the number of Regular Expression checks with Matcher.find to improve performance (PR #854).
  • HostSpec class to not use a default lastUpdateTime and instead use null (PR 877).
  • Moved Reader Selection Strategies out of the UsingTheReadWriteSplittingPlugin doc and into its own page. See ReaderSelectionStrategies.

2.3.3 - 2024-01-23

🪄 Added

🐛 Fixed

  • SqlMethodAnalyzer to handle empty SQL query and not throw IndexOutOfBoundsException (PR #798).
  • Restructure try blocks in dialects for exception handling (PR #799).
  • Log message to communicate that an RDS Custom Cluster endpoint can't be used as the 'clusterInstanceHostPattern' configuration setting (PR 801).
  • Make a variable volatile in RdsHostListProvider (Issue #486).
  • Transfer session state during failover (Issue #812).
  • Release all stopped monitors so that they are not reused (PR #831).
  • Added update candidates for the MariaDB dialect in order to swap to MySQL dialects in the case of using a MySQL database with the protocol jdbc:aws-wrapper:mariadb://, and fixed the RDS MySQL dialect from incorrectly returning false in isDialect method (Issue #789).

🦀 Changed

  • Session state tracking and transfer redesign (PR #821).
  • Improve Multi-AZ cluster detection (PR #824).
  • Enhanced Host Monitoring Plugin (EFM) v2 plugin is now a default plugin. The original EFM plugin can still be used by specifying efm in the wrapperPlugins parameter (PR #825).
  • Update China endpoint patterns (PR #832).

2.3.2 - 2023-12-18

🪄 Added

  • Federated Authentication Plugin, which supports SAML authentication through ADFS (PR #741).
  • Experimental Enhanced Host Monitoring Plugin v2, which is a redesign of the original Enhanced Host Monitoring Plugin that addresses memory leaks and high CPU usage during monitoring sessions (PR #764).
  • Fastest Response Strategy Plugin, which implements a new autoscaling strategy (PR #755).
  • Plugin code for Aurora Initial Connection Strategy Plugin. This plugin returns an instance endpoint when connected using a cluster endpoint (PR #784).

🐛 Fixed

  • Use existing entries to update the round-robin cache (PR #739).

🦀 Changed

  • Updated HikariCP example to include configuring the datasource with a JDBC URL (PR #749).
  • Replaced the sychronized keyword with reentrant locks in AwsCredentialsManager (PR #785).
  • Set HostId in HostSpec when connecting using Aurora instance endpoints (PR #782).

2.3.1 - 2023-11-29

🪄 Added

🐛 Fixed

  • Stopped monitoring threads causing out of memory errors (PR #718).
  • Automatically register a target driver in the class path to prevent No suitable driver SQL exceptions (PR #748).

🦀 Changed

  • Session state tracking to include additional state information (PR #729).
  • Log level for intentionally ignored exceptions to reduce the number of warnings (PR #751).

2.3.0 - 2023-11-23

🪄 Added

  • Fast switchover support for Amazon RDS Multi-AZ DB Clusters (PR #690).
  • Endpoint override for the AWS Secrets Manager plugin (PR #707).
  • Allow users to set up a lambda to initialize new connections (PR #705).
  • Introduced Dialect.prepareConnectProperties to allow dialect classes to modify connection properties when opening a new connection (PR #704).
  • Native telemetry support (PR #617).
  • Documentation on known limitations with global databases (PR #695).

🐛 Fixed

  • Continue monitoring if unhandled Exception is thrown (PR #676).
  • Password properties are now masked in logs (PR #701 and PR #723).
  • Issue when getting a connection for a closed statement (PR #682).
  • Maven coordinates in README (PR #681).
  • Update topology for specific methods (PR #683).

🦀 Changed

  • Added buffer to IAM token expiry and moved token expiry time creation (PR #706).
  • Documentation on known limitations with Blue/Green deployments (PR #680).

2.2.5 - 2023-10-03

🪄 Added

  • Optional preservation of partial session state post failover (PR #632).
  • Round Robin host selection strategy (PR #603).
  • Sample application failover retry with Spring Boot (PR #638).

🦀 Changed

  • Renamed the messages.properties file to aws_advanced_jdbc_wrapper_messages.properties (Issue #633).

2.2.4 - 2023-08-29

🪄 Added

  • Host Availability Strategy to help keep host health status up to date (PR #530).
  • Implement setLoginTimeout from a suggested enhancement (Discussion #509).

🐛 Fixed

  • Allow connecting with reader cluster endpoints for Aurora PostgreSQL versions 13.9 and greater by changing the AuroraPgDialect topology query (Issue #593).
  • Race condition issues between MonitorThreadContainer#getInstance() and MonitorThreadContainer#releaseInstance() (PR #601).

🦀 Changed

  • Dynamically sets the default host list provider based on the dialect used. User applications no longer need to manually set the AuroraHostListProvider when connecting to Aurora Postgres or Aurora MySQL databases.
  • Deprecated AuroraHostListConnectionPlugin.
    • As an enhancement, the wrapper is now able to automatically set the Aurora host list provider for connections to Aurora MySQL and Aurora PostgreSQL databases. Aurora Host List Connection Plugin is deprecated. If you were using the AuroraHostListConnectionPlugin, you can simply remove the plugin from the wrapperPlugins parameter. However, if you choose to, you can ensure the provider is used by specifying a topology-aware dialect, for more information, see Database Dialects.
  • Propagate Connection.clearWarnings() to underlying connections in the Read Write Splitting Plugin so that the connection object does not accumulate warning messages (Issue #547).
  • Close underlying connections in the Read Write Splitting Plugin after switching to read-write or read-only depending on whether internal connection pooling is used (PR #583).
  • Sort plugins by default to prevent plugin misconfiguration. This can be disabled by setting the property autoSortWrapperPluginOrder to false (PR #542).
  • Documentation:
    • Clarified AWS JDBC Driver limitations with Blue/Green deployments. See Known Limitations.
    • Updated and reworded main README.md page.

2.2.3 - 2023-07-28

🪄 Added

  • Developer plugin to help test various scenarios including events like network outages and database cluster failover. This plugin is NOT intended to be used in production environments and is only for testing (PR #531).
  • Documentation:

2.2.2 - 2023-07-05

🪄 Added

  • Official support for Amazon Aurora with MySQL compatibility. The AWS JDBC Driver has been validated to support MySQL JDBC Driver and MariaDB JDBC Driver.
  • Documentation:
    • Maintenance and release policy (PR #442 and PR #507).
    • Migration guide for moving from the AWS JDBC Driver for MySQL to the AWS JDBC Driver (PR #510).

🦀 Changed

  • Improved integration test suite performance by creating required test database clusters in advance (PR #411).
  • Documentation:
    • Correct portNumber to serverPort in Hikari example (PR #504).
    • Updated Maven Central links and references to third party framework examples (PR #499).

2.2.1 - 2023-6-16

🐛 Fixed

  • Move the Spring Wildfly example gradle.properties file to examples/SpringWildflyExample/spring (Issue #491).

2.2.0 - 2023-6-14

🪄 Added

🐛 Fixed

  • Pruned null connections in connection tracker plugins (PR #461).
  • HikariCP integration tests and reworked AwsWrapperDataSource by removing property names, introduced a set of simple properties to set database, server name and server port (PR #468).
  • Checkstyle failure due to modified license and driver connection provider passing original properties resulting properties being overridden for subsequent connections (PR #471).
  • IamAuthConnectionPlugin to properly prioritize the override property IAM_DEFAULT_PORT then Hosts port, and then Dialect port (Issue #473).
  • Values for the wrapperLoggerLevel parameter are no longer case-sensitive (#PR #481).

🦀 Changed

  • Extended test logs with thread names (PR #465).
  • Updated logging format so it is easier to distinguish the logger name from the log message (PR #469).

2.1.2 - 2023-5-21

🦀 Changed

  • Explicitly check for 28000 and 28P01 SQLStates in the IAM authentication plugin after SQLExceptions are thrown (PR #456 and PR #457).

2.1.1 - 2023-5-15

🐛 Fixed

  • MySQL reference in code that could impact workflows with other drivers (PR #446).

2.1.0 - 2023-5-11

🪄 Added

  • Checks for stale writer records in AuroraHostListProvider obtained after writer-failover so that they are not used (PR #435).

🐛 Fixed

  • Potential security concern by ensuring that user-specific connections in the connection pool are returned to the correct user (PR #432).
  • Connection state transfer bug where switching from read-only connection to writer connection incorrectly triggers the failover process (Issue #426).
  • Incorrect invalidation of the newly promoted writer and random readers after failover. EFM plugin to use instance endpoint as the monitoring endpoint in case the initial connection is established using cluster endpoint (PR #431).
  • Running Hibernate tests no longer runs unrelated tests (PR #417).
  • Reader failover using a shared Properties object resulting in race conditions (PR #436 & PR #438).
  • Temporarily setting the socket timeout for the topology query if it is not set, to avoid topology query from executing indefinitely (PR #416).

🦀 Changed

  • Removed logic from the failover plugin that changes connection to a writer instance when setReadOnly(false) is called on a reader connection (Issue #426). This functionality already exists in the read write splitting plugin.
  • Removed Multi-writer cluster related code as they are no longer supported (PR #435).
  • Clarified documentation on the failover process to account for Aurora PostgreSQL clusters being offline during failover (PR #437).
  • ⚠️ Breaking changes were introduced with the new failoverMode configuration parameter (PR #434):
    • The failoverMode parameter replaces the enableFailoverStrictReader configuration parameter.
    • If you were previously using enableFailoverStrictReader=true, please update it to failoverMode=strict-reader.
    • For more information, please check the (documentation)

2.0.0 - 2023-04-28

🪄 Added

🐛 Fixed

  • Fetched the instance endpoint and added it to the host aliases for connections established using custom domains (Issue #386).

🦀 Changed

  • Parsed region from ARN (PR #392 addresses Issue #391).
  • Updated documentation on:
    1. how to run integration tests (PR #396).
    2. required DataSource properties (PR #398)
  • ⚠️ Breaking changes were introduced with the internal connection pool changes (PR #359):
    • The ConnectionPlugin interface has introduced three new methods: forceConnect, acceptsStrategy, and getHostSpecByStrategy. Although the AbstractConnectionPlugin implements default behavior for these methods, you should consider adding your own implementations if you have implemented a custom ConnectionPlugin. More details on these methods can be found in the ConnectionPlugin Javadocs and the pipelines documentation.
    • The HostListProvider interface has introduced a new method: getHostRole. If you have implemented your own HostListProvider, you will need to implement this method. More details on this method can be found in the HostListProvider Javadocs.

1.0.2 - 2023-03-31

🪄 Added

🐛 Fixed

  • Unwrapped Savepoint objects when passing them in as parameters (Issue #328).
  • Added null checks to WrapperUtils#getConnectionFromSqlObject() (Issue #348).
  • Extra question mark in clusterInstanceHostPattern parameters is no longer filtered out when setting the connection string (PR #383).

🦀 Changed

  • Lock initialization of AuroraHostListProvider (PR #347).
  • Optimized thread locks and expiring cache for the Enhanced Monitoring Plugin (PR #365).
  • Updated Hibernate sample code to reflect changes in the wrapper source code (PR #368).
  • Updated KnownLimitations.md to reflect that Amazon RDS Blue/Green Deployments are not supported. See Amazon RDS Blue/Green Deployments.

1.0.1 - 2023-01-30

🪄 Added

  • Read / Write Splitting and Load Balancing (Experimental). Ongoing changes are being implemented to mirror behaviour of the community MySQL JDBC driver. We do not recommend using this in production until an official release.
  • The Aurora Stale DNS Plugin to prevent the user application from incorrectly opening a new connection to an old writer node when DNS records have not yet updated after a recent failover event. For more details, see Aurora Stale DNS Plugin.
  • FailoverSQLException classes for easier error handling. See Read-Write Splitting Postgres Example.
  • OSGi compatibility (PR #270).
  • AwsCredentialsManager to customize credentials providers used in IamAuthenticationPlugin and AwsSecretsManagerPlugin. For more information, see AWS Credentials Configuration.

🐛 Fixed

  • DataSourceConnectionProvider no longer removes user/password properties on connect (Issue #288 and Issue #305).
  • Runtime exceptions thrown as reported in issue #284.
  • Incorrect log message in PluginServiceImpl#setAvailability that says host alias not found instead of empty hosts change list.
  • FailoverTimeoutMS not being obeyed during failover, causing failover to take twice as long (PR #244).
  • Reader failover sometimes reconnect to writer instances as reported by Issue #223. Applications can now set the failoverStrictReader parameter to only allow failover to reader nodes during the reader failover process. See more details here.
  • AWS Secrets Manager Plugin leaking PoolingHttpClientConnectionManager (PR #321).
  • Internal inTransaction flag not being updated when autocommit status changes (PR #282).
  • Incorrect wrapper version returned from getDriverVersion calls (PR #319).
  • Incorrect setReadOnly behaviour when the method is called on a closed connection (Issue #311).
  • isCurrentHostWriter incorrectly return false during writer failover (PR #323).

🦀 Changed

  • Use default connection check intervals/timeouts in the EFM plugin when a user-supplied setting is not available (PR #274).
  • Thread-safety improvements within in the EFM plugin (PR #332).

1.0.0 - 2022-10-06

The Amazon Web Services (AWS) Advanced JDBC Driver allows an application to take advantage of the features of clustered Aurora databases.

🪄 Added