VoltDB
7.1.2
August 18, 2017
This document provides information about known issues and limitations to the current release of VoltDB. If you encounter any problems not listed below, please be sure to report them to support@voltdb.com. Thank you.
The process for upgrading from the recent versions of VoltDB is as follows:
Shutdown the database, creating a final snapshot (using voltadmin shutdown --save).
Upgrade the VoltDB software.
Restart the database (using voltdb start).
For DR clusters, see the section on "Upgrading VoltDB Software" in the VoltDB Administrator's Guide for more special considerations related to DR upgrades.
Support for upgrading using shutdown --save was only added in V6.8. If you are upgrading from older versions of VoltDB, you will need to save and restore the snapshot manually. The procedure to do that is as follows:
Place the database in admin mode (using voltadmin pause).
Perform a manual snapshot of the database (using voltadmin save --blocking).
Shutdown the database (using voltadmin shutdown).
Upgrade the VoltDB software.
Initialize a new database root directory (using the voltdb init --force action).
Start the database in admin mode (using the voltdb start --pause action).
Restore the snapshot created in Step #2 (using voltadmin restore).
Return the database to normal operations (using voltadmin resume).
For customers upgrading from V6.x or earlier releases of VoltDB, please see the V6.0 Upgrade Notes.
For customers upgrading from V5.x or earlier releases of VoltDB, please see the V5.0 Upgrade Notes.
For customers upgrading from V4.x or earlier releases of VoltDB, please see the V4.0 Upgrade Notes.
Users of previous versions of VoltDB should take note of the following changes that might impact their existing applications.
1. Release V7.1.2 (August 24, 2017) | ||||
1.1. | Recent improvements | |||
The following limitations in previous versions have been resolved:
| ||||
2. Release V7.1 (March 21, 2017) | ||||
2.1. | Support for SSL encryption on external ports | |||
VoltDB now supports Secure Socket Layer (SSL) encryption for all externally accessible ports, not just the
HTTP port. With SSL enabled, data passing through both the client and admin ports is encrypted. If encryption is
enabled for the client and admin ports, you must use the ImportantTo support the new options, the configuration of SSL in the deployment file has been reorganized. Customers who previously enabled SSL encryption for the HTTP port only will need to change their configuration files. For example, the old and new syntax for enabling SSL on the HTTP port is: Old Syntax <httpd> <https enabled="true"> [ . . . ] </https> </httpd> New Syntax <ssl enabled="true"> [ . . . ] </ssl> See the section on using SSL encryption in the VoltDB Administrator's Guide for details on setting up SSL for a VoltDB cluster. | ||||
2.2. | Ability to retrieve the schema, procedures, and configuration from a database | |||
Three new voltdb commands have been added that allow you to extract the schema, stored procedures, and configuration from the local database root directory. These commands can be used whether the database is running or not. The new commands are:
See the description of the voltdb command in the Using VoltDB manual for details. | ||||
2.3. | New statistics provide performance details about individual statements within a procedure. | |||
A new selector, PROCEDUREDETAIL, for the @Statistics system procedure provides detailed performance information about the execution of individual statements within stored procedures. See the description of the @Statistics system procedure in the Using VoltDB manual for details. | ||||
2.4. | New system procedure lets you swap two tables | |||
A new system procedure, @SwapTables, lets you swap the contents of two tables. The two tables must have the identical schema (that is, the same column names, datatypes, and constraints) and cannot have views defined. See the description of the @SwapTables system procedure in the Using VoltDB manual for details. | ||||
2.5. | Ability to restart a partial cluster | |||
It is now possible to restart a K-safe cluster with fewer than the original number of nodes. For example, if
one server fails on a five node cluster and you want to restart the cluster but the failed server is not ready, you
can start the cluster with the remaining four nodes by using the $ voltdb start --count=5 --missing=1 Note that the partial cluster is not fully K-safe to its specified K-safety value until the full complement of nodes rejoin the cluster. See the description of the voltdb command in the Using VoltDB manual for details. | ||||
2.6. | New SQL functions for handling internet addresses | |||
There are four new SQL functions to convert internet addresses from text strings to binary and back again. Two functions (INET_ATON and INET_NTOA) convert IPv4 addresses and two (INET6_ATON and INET6_NTOA) convert IPv6 addresses. See the Appendix of SQL Functions in the Using VoltDB manual for details. | ||||
2.7. | Statistics related to schema changes are no longer reset by each change | |||
Previously, the information gathered by the @Statistics system procedure related to schema changes (from DML statements or calls to @UpdateClasses or @UpdateApplicationCatalog) was reset each time the database schema changed. Schema changes no longer reset the statistics on each invocation. Also, every schema change is recorded, rather than the 5% sampling done for other procedures. | ||||
2.8. | SNMP traps now report database replication (DR) events | |||
VoltDB can send SNMP traps for selected database events, such as node failures or when resource limits are reached. Starting with V7.1, it also reports database replication (DR) events when DR is enabled. | ||||
2.9. | New index optimizations | |||
We continue to extend support for the use of indexes to optimize the execution of SQL statements. Two new uses of indexes are when evaluating:
| ||||
2.10. | Enhancements to the kafkaloader utility | |||
Three new features have been added to the kafkaloader utility:
See the online help for the kafkaloader utility for details. | ||||
2.11. | Improved performance when updating procedure classes | |||
Previously, updating the stored procedure classes (using the sqlcmd LOAD CLASSES directive or the @UpdateClasses system procedure) updated all of the classes in the schema. As a result, the more classes in the schema, the longer the update would take, even if the update itself was small. VoltDB now updates only those classes affected by the change, significantly reducing the time required for the update to complete. | ||||
2.12. | Managing heterogeneous clusters in Database Replication (DR) | |||
You can create a DR environment using clusters running different versions of VoltDB. However, to support new functionality (in particular, multi-cluster XDCR) the DR protocol changed in V7.0. That major version acts as a gateway between earlier and later releases. In other words, you can run a V7.0 cluster with earlier versions, or you can run a 7.0 cluster with later versions. However, you cannot run pre-V7.0 clusters with post-V7.0 clusters. As a consequence, if you want to perform an in-service upgrade (using different version clusters) to upgrade a DR environment using a pre-V7.0 version (say, V6.9) to V7.1 or later, you must upgrade all clusters to V7.0 first, then upgrade to your final target version. Of course, you can always use the normal single-cluster upgrade process to go directly from V6.x to V7.x if you choose. | ||||
2.13. | VoltDB servers no longer support SHA-1 | |||
To ensure the security of VoltDB servers, the database no longer accepts SHA-1 for hashed data. All hashed data (such as passwords etc) must be hashed using SHA-256. Note: this is an incompatible change. Some earlier client libraries will not be able to connect to the V7.1 servers because they do not support the more robust SHA-256 hashing. | ||||
2.14. | Additional improvements | |||
In addition to the new features and capabilities described above, the following limitations in previous versions have been resolved:
| ||||
3. Release V7.0.1 (March 16, 2017) | ||||
3.1. | Recent improvements | |||
The following limitations in previous versions have been resolved:
| ||||
4. Release V7.0 (January 30, 2017) | ||||
4.1. | Updated operating system and software requirements | |||
The operating system and software requirements for VoltDB have been updated based on changes to the supported versions of the underlying technologies. Specifically:
| ||||
4.2. | Improved configuration and reporting for database replication (DR) | |||
As mentioned earlier, the addition of the | ||||
4.3. | VoltDB now protects against inserting invalid values into TIMESTAMP columns | |||
Previously, VoltDB allowed any 8-byte integer as input to a TIMESTAMP column. However, the TIMESTAMP functions limit the values to those defined by the MIN_VALID_TIMESTAMP() and MAX_VALID_TIMESTAMP() functions. Starting with V7.0, VoltDB no longer accepts values outside of the valid timestamp range for TIMESTAMP columns. Note that this is an incompatible change and may require changes to applications that are inadvertently inserting invalid timestamp values. If so, you can use the IS_VALID_TIMESTAMP() function to validate input values before inserting them into TIMESTAMP columns. | ||||
4.4. | Additional improvements | |||
In addition to the new features and capabilities described above, the following limitations in previous versions have been resolved:
|
The following are known limitations to the current release of VoltDB. Workarounds are suggested where applicable. However, it is important to note that these limitations are considered temporary and are likely to be corrected in future releases of the product.
The following notes provide details concerning how certain VoltDB features operate. The behavior is not considered incorrect. However, this information can be important when using specific components of the VoltDB product.