Release Notes

Current release versions can be downloaded here.

NEW known issueOn updating from the prior release builds to development builds starting in June 2021, if you are using the MySQL proxy, please do the update TWICE.  This will ensure the new MySQL driver is properly updated for use with the proxy.  Otherwise, the proxy will not start cleanly.

Known issues: If a query contains more than 32k positional parameters for Postgres, this can cause a query to fail. This is due to a limit in the underlying JDBC driver for Postgres. Postgres itself is limited to 64k positional parameters. To resolve, ensure that no more than 32k positional parameters are used.

New Issue:  Java 8 build 292 has been found to have a TLS compatibility issue.  At least the AWS release image is impacted by this.  Installing the Corretto release 282 (downgrading) resolves this issue.  This is most likely to impact SQL Server installs, as it always uses TLS for password exchange, even if TLS is not enabled.  In our AWS Marketplace image, the following commands (as root) will resolve the issue:

yum remove java-1.8.0-amazon-corretto.x86_64
yum install java-1.8.0-amazon-corretto-devel-1.8.0_282.b08-1.amzn2.x86_64

Development build 21.06.03 (June 3, 2021)

  1. Migrate from using the MySQL 5.1.x branch to the 8.0.x branch of code to access the database;    This change has been reverted for now, due to compatibility issues found in testing
  2. Update other JDBC drivers with minor changes;
  3. For Postgres, we now support handling listen requests, optimizing the number of connections to the server needed.  If multiple clients request the same listen configuration, only one connection will be made for a proxy to the database, and all the connected clients will be serviced with the one connection;
  4. For Postgres, we now have an option of “hdNotifyDBs” which provides a csv list of databases to listen to for invalidations.  Wildcards and exclusions are supported, and when a wildcard is used, the list is refreshed every five minutes;
  5. With the MySQL proxy, support auto-redirection of clients to balance load on the proxy nodes, avoiding NLB and other overhead.  This requires special drivers (contact Heimdall support for more assistance on this);
  6. For all drivers, auto-redirection can be done via DNS as well.  When auto-scaling mode is enabled, a DNS listener can be activated, which provides an ordered list of proxy IP addresses based on load, with the first being the best proxy to select.  
  7. Configurable result-set size limits are now available in the cache settings, to limit the size of an object to ingest.
  8. MySQL Proxy: Improved behavior to allow streaming of result-sets via the driver in more cases, avoiding issues with oversized results generating an exception.
  9. With Azure MySQL, we now provide a MySQL JDBC driver (based on Oracle’s 8.0.x) that supports redirect for their “single server” offering.  The code patches for this will be submitted as open source, but not guaranteed to be accepted by Oracle;  this feature is still pending compatibility testing with the MySQL 8.0 driver codebase.
  10. License handling has been redesigned, to allow most customers to be “licensed” via DNS configuration by Heimdall, avoiding the need for distinct licenses to be issued.  Improvements have also been made to detect cloud purchased offerings from AWS, Azure, and GCP;
  11. Improved JMX statistics, including per-server per-second statistics equivalent to what is used to plot our own dashboard, and also allow ${ip} for the “jmx hostname” field to detect the local IP for JMX redirection.  With JMX, you connect to the host you specify in your tool, but the server then redirects you to another host or IP, which needs to match.  This allows configurations with dynamic IP’s to work cleanly, such as with docker;
  12. Improved multiplexing and delayed transaction compatibility, including the ability to flag disabling multiplexing for X queries by rule;
  13. Improved internal CI/CD pipeline to test patches and push them as our “development” branch;
  14. Re-enable Geode support–for Gemfire use, contact Heimdall for a module compiled against Gemfire instead;
  15. Adjust the memory graph on the dashboard to make it easier to observe with many nodes;
  16. And… include all other fixes from prior builds, as well as many small documentation changes and updates.

Release build 21.04.05.1 (April 5, 2021)

  1. Improved compatibility with delayed transactions;
  2. Resolved issue where commands like commit and rollback would result in a sql log entry for the previous SQL command;
  3. Added logic to trim prepared statements on a connection to no more than 2000 prepares to prevent memory overflow.  Ruby trims to 1000, and Java to 256, so this should be plenty for most environments;
  4. Added logic to forget the last used parameters of a prepared statement after use, to reduce memory overhead;
  5. Added support for hstore types in binary format for Postgres;
  6. Added better support for commands like drop, alter, etc. that do not actually touch a table, but other metadata.  These will be flagged as modification queries, so that read/write split doesn’t send them to the wrong server;
  7. Added to the sql server pool logic a default resetQuery of exec sp_reset_connection;
  8. Improved SQL parsing for many different query formats to improve table extraction;
  9. Avoid using the /tmp directory created by tomcat for temporary file uploads, as centos and derived systems clean up directories over time, and can break the update and other logic;
  10. Added a filter on keys used by Heimdall in external grid caches to prevent non-heimdall keys from being tracked in the cache logic, adding to memory overhead;
  11. Added a limit of 10x the number of objects specified in the cache object limit (if set) for tracking remote keys, again to limit memory usage;
  12. Fix various issues with prepared SQL statements that include ? as part of the content, which impacted java prepared statement formats;
  13. Improved temporary table detection logic, in particular for SQL Server;
  14. Improvement in TLS handling, including disabling tls 1.3 with SQL Server, as it doesn’t support it yet, and trying to negotiate it with SQL server libraries often breaks them;
  15. Improved accuracy of Prepared statement performance in the Analytics tab;
  16. Prevent alerts from prior to a clean restart of the management server from showing back up after restart.

Release build 21.02.27.1 (Feb 27, 2021)

  1. Critical: Fix a problem with MySQL when using prepared statements and read/write split (or anything that expands the prepared query to raw SQL) introduced in the last release build. This also impacted SQL logging in some cases as well;
  2. Critical: Disable TLS 1.3 only for SQL Server–clients often will attempt to negotiate tls 1.3 if the proxy supports it, but they aren’t tested with tls 1.3, and end up breaking. SQL Server itself doesn’t support TLS 1.3; This would be observed as a connection hang on any attempt to connect. This was triggered by tls 1.3 being backported by Oracle into Java 8 in late 2020, which is used by default by Heimdall;
  3. Change the downloaded log filename format for .zip files to include yyyyMMddHHmm, previously it was using minutes for the month position;
  4. Add logging of full query hash in debug logs, along with logging some other error conditions for TLS, etc;
  5. Resolved issue where a rule disabling multiplexing was not taking effect due to a rule processing optimization;
  6. Resolved an issue with insert queries with more than 500k fields inserted (across all rows) due to limit in regex processing that limited the number of capture groups that could be created;
  7. Removed a limit of 1024k for a single Postgres packet on query read, which limited the size of an insert that could be done as a single operation;
  8. Added DML detection for generic create and drop commands for non-table oriented SQL. This prevents such queries from being directed to a read node with read/write split;
  9. Ignore quotes and question marks in comments when looking for unbalanced quotes or parameters to fill in for SQL expansion;
  10. Add further compatibility with the PHP PDO drivers for MySQL;
  11. Correct an issue where rows read was not reported correctly for SQL Server at the protocol level;
  12. Resolved issue where proxy auth being disabled for Postgres still resulted in Proxy auth being enabled in the resulting wizard configuration.

Release Build 21.02.13.1 (Feb 13, 2021)

  1. Minor usability improvements in the wizard
  2. Detect Azure marketplace deployments for licensing
  3. Improved TLS handling and error logging
  4. Support binary uploads with prepared queries for PDO MySQL (PHP)
  5. Improved handling of temporary tables
  6. Improve manual update process in low memory situations
  7. Resolve issue with the proxy where it wouldn’t update the code on a restart (requires updating the heimdall-entrypoint.sh script)
  8. Add example configuration for PHP’s MySQL PDO to extract the certificate from the keystore
  9. Properly handle table names/aliases with question marks when expanding prepared queries for read/write split or transformation.

Release Build 21.01.24.1 (Jan 24, 2021)

  1. Resolve issue with Data Direct MySQL drivers that prevented queries from completing execution;
  2. Improved logic for Postgres failovers in the Azure cloud environment in the parsing of the replication connect string and to support the hostaddr option;
  3. Corrected some cases where the defaultCatalog option was not being used properly to establish connections;
  4. Resolved an infinite loop that could occur if using TLS and the client connection was disconnected unexpectedly;
  5. Updated the default included driver database and driver names;
  6. Remove the creation of new configuration files if the update server API was used;
  7. Updated Hazelcast to 4.1.1 and include yaml configuration file support;
  8. Resolve issue with internal commands like show pool with MS-SQL Server proxy configurations;
  9. Added an option to allow recursive transform calls, to allow the transformation to be applied more than once on a single query;
  10. Resolve a memory leak when connections were dropped by the client under very high new connection/second loads;
  11. Improved logging (as normal).

Previous release notes can be found here.