Resolved Issues

This section includes fixes that do not change the user interface and/or API behavior of the product. For a summary of changes, see Changes in this release.

Where resolution is associated with a reported issue, a Zendesk reference number is displayed, for example (10283).

Resolved in NuoDB 4.2.2

  • When dropping an index, the check to determine if it is in use by a foreign key may in some cases return a false positive. (11991)
    The issue has been resolved.

  • After upgrading to a new database protocol version, for example from NuoDB 4.1 to NuoDB 4.2, a background process updates atoms to the new protocol version. In previous versions, this could inflict a performance penalty. (11899, 12003)
    The issue has been resolved.

  • In rare cases, the Emergency Garbage Collection feature, which kills the most memory-intensive SQL statement when Transaction Engine (TE) memory in nearly exhausted, could cause the engine to exit.
    The issue has been resolved.

  • When using SEE (Scalar Execution Engine),

    • there was a race condition in User Defined Function (UDF) compilation. (11904)

    • it was possible that Java Native Interface (JNI) strings were not correctly NULL terminated. (12008)
      These issue have been resolved.

  • When using VEE (Vectorized Execution Engine),

    • the MAX_CONNECTION_OPEN_RESULTS and MAX_CONNECTION_OPEN_STATEMENTS settings were ignored. For further information on these settings, see SQL System Properties.

    • stored procedures could not reference returned tables in variables assignments. (11993)
      For usage information, see Returning Multiple Result Sets from a Stored Procedure.

    • database inserts were slower on 4.2.0 and 4.2.1 when compared to 4.1.2. Database insert performance has been improved by optimizing cache operations. (11996)

    • primary key columns were not assumed to be NOT NULL.

    • and a SQL query uses delayed query optimization, which is a default SQL optimization feature that determines the query plan at runtime for certain use cases, then string function comparisons that reference parameters ( e.g., a > UPPER(?), b < LOWER(?) ) may cause a Transaction Engine (TE) to abort. (12095)

    • the /*+ ordered */ optimizer hint was not enforced. (12123)
      These issue have been resolved.

  • It is possible that NuoDB will assert with failure message, "ASSERT: Platform/IndexStatisticsV1.h:240: FAILED: newCount > 0" when rebuilding an index that contains v1 statistics. The issue will occur when using either the default Vectorized Execution Engine (VEE) or the legacy Scalar Execution Engine (SEE) which was deprecated in release 4.2.
    The issue has been resolved in VEE only.

  • The SYSTEM.LOCALSTATEMENTS table was readable by all database users, and should only be viewable by DBA users.
    The issue has been resolved.

  • The SHOW TABLES command was not displaying a table’s index attribute values (i.e., disabled, incomplete and distinctness of NULL values).
    The issue has been resolved.

  • It was possible that errors generated by an Admin Process (AP) due to inaccessible files in the NUODB_LOGDIR directory may terminate the diagnostic information stream when running either nuocmd get diagnose-info or nuocmd get server-logs. These errors would result in a corrupted ZIP file. Since these nuocmd commands generate useful diagnostic information, they should be resilient to these error conditions. (11974)
    The issue has been resolved.

  • Several issues related to the stats-collection-threshold database option resulted in the generation of incorrect index statistics. In addition, several issues were also identified that are related to table cardinality calculations. (11992)
    These issues have been resolved.

  • If the archive-threads database option was specified with a value greater than 1, a high intensity workload could cause a Storage Manager (SM) to assert and shutdown. (12057,12060,12061,12062,12063,12072,12073)
    The issue has been resolved.

  • If using Java User Defined Functions (UDFs), performance could have been negatively impacted due to attaching and detaching the JVM thread unnecessarily. (12048)
    The issue has been resolved.

  • If logging was enabled that generated extremely large log messages, then error, "WARN com.nuodb.server.Server tagServerExecutor31-thread-3 Failed to process message" may occur due to improperly reading the entire message. (12077)
    The issue has been resolved.

  • If running either NuoDB 4.2 or 4.2.1 and using more than one archive thread (i.e., the --archive-threads parameter is set to > 1), then runtime performance may degrade significantly due to a timing issue that resulted in excessive Storage Manager (SM) write throttling. (12080,12114)
    The issue has been resolved.

  • It was possible when creating a Hot Copy backup that the Hot Copy and archive threads could hang due to a rare lock order condition, eventually blocking commit, and requiring the Storage Manager (SM) to be restarted. Also, during a point-in-time restore, it was possible the restore could fail due to an attempt to load an atom associated with a dropped table. (12119)
    These issues have been resolved.

  • It was possible if a Storage Manager (SM) fails, a Hot Copy job could hang and appear as if it is still running. Instead, a Hot Copy job will now fail fast on Hot Copy coordinator SM communication failures, including those due to database process failure.
    This issue has been resolved.

  • User Defined Functions (UDFs) that returned binary type values (e.g., BinChar, VarBinChar, Bytes) did not release the memory occupied by the return value when converting them to NuoDB values.
    This issue has been resolved.

  • Occasionally it was possible that NuoDB Admin could enter a hung state. There were several issues that could contribute to entering this state which have all been addressed (e.g., the entering ACTIVE state timeout value and the chunking of large Raft log writes). (12010)
    These issues have been resolved.

Resolved in NuoDB 4.2.1

  • When using VEE (Vectorized Execution Engine),

    • an INSERT statement with multiple values and subqueries only processes the first value.

    • direct use of an EXISTS subquery may result in an error converting boolean from a string value.

    • an error would occur converting a string to a Date/Time if white space was used as a separator in the date/time string.

    • an incorrect data value results when casting a binary data type to NUMERIC and a BINARY string to BIGINT.

    • casting a BIGINT to a binary data type should align the value to the next byte boundary.
      These issues have been resolved.

  • In NuoDB 4.2.0 environments that run on the Red Hat RHEL or CentOS OS and use the RPM package manager to remove NuoDB, an error would display, "error reading information on service nuoagent: No such file or directory." However, the uninstall would perform correctly. In this same environment, when performing a release upgrade, the upgrade would perform as an uninstall and remove content (e.g., systemd service files, the nuodb user account, configuration files, etc.) that it should not.
    These issues have been resolved.

  • A Storage Manager (SM) would check permissions on the default journal directory even if an alternate journal directory was specified (via --journal-dir); if the default journal directory was not accessible the SM would refuse to start. (11025)
    The issue has been resolved.

  • In the rare case a NuoDB Admin state snapshot grew larger than 10MB, then the message, “WARN [admin-nuodb-primary-0:main] DurableLogState Attempting to truncate end of log due to exception.” would get written to the nuoadmin.log, and the Raft state data would get lost.
    The issue has been resolved.

  • After upgrading the NuoDB Helm Charts to 3.1.0, it was possible that the NuoDB Admin readiness probe could generate false positives. This may happen more often on systems where a lot of domain operations (i.e. raft commands) are committed frequently.
    The issue has been resolved.

  • In Kubernetes deployments, previously a hotcopy database backup request would fail if some of the database processes had a status other than RUNNING. The nuodocker backup database command that is implemented in the NuoDB Helm Charts will now exclude archives served by non-running processes.
    The issue has been resolved.

  • A database consisting only of TEs and Asynchronous Storage Managers (ASMs) is non-durable, hence it will be shut down automatically. (11952)
    The issue has been resolved.

  • If a Storage Manager (SM) did not stop cleanly, on rare occasions starting a new SM for the same archive would fail with error, "journal <journal name> not found in <directory>." (11938)
    The issue has been resolved.

  • If a Hot Copy operation failed, for example nuocmd hotcopy database, an error code was not returned indicating the failure. Now an error code will be returned if a Hot Copy operation is not successful.
    This issue has been resolved.

Resolved in NuoDB 4.2

This section provides a summary of the issues resolved in the release of NuoDB 4.2 compared with the original NuoDB 4.1 release.

  • A Transaction Engine (TE) will assert when a SQL statement processes a special date value of year 1, month 1, day 1, format string '0001-01-01 00:00:00' if the UTC offset of the database connection reading the value is less than the UTC offset of the database connection that wrote the value to the database. (11481)
    The issue has been resolved.

  • If all TEs and SMs have been upgraded to a later release but the effective database version is still an older release, then the SQL SHOW DATABASE command returns the following error: Error 58000: can’t find release version string for database. (11699)
    The issue has been resolved.

  • If a majority of Admin Processes in the domain membership are restarted without Raft data, they may bootstrap (create) a new domain rather than resyncing with the running Admin Processes, even if the restarted Admins are not in the initial membership.
    The issue has been resolved.

  • Archive sync can fail to update atoms in large tables (with atom id greater than 5600) resulting in an inconsistency between archives that should be identical. This can occur if the atoms were modified after the syncing SM went down and no records in that part of the table have been read or written since the database started.
    The issue has been resolved.

  • An index statistics version incompatibility issue prevented archives created in NuoDB versions prior to 3.0 from been upgraded to NuoDB 4.2.
    The issue has been resolved.

  • A defect in the implementation to track the 'system schema version' in the MasterCatalog introduced in NuoDB 4.0 can fail to make a new system schema version persistent.
    The issue has been resolved.

  • An assert could occur during a record insert operation if a valid TableFormat descriptor is not present. (11674, 11691)
    The issue has been resolved.

  • In rare cases, a Transaction Engine (TE) may slowly increase memory usage while attempting to update the same record from multiple transactions, and eventually assert with the message, "Unable to free memory for 300 seconds."
    The issue has been resolved.

  • A Storage Manager (SM) could assert during index creation due an issue in a memory allocation call. (11723)
    The issue has been resolved.

  • Non-committed Raft commands are not retried. The issue can occur during network instability events that lead to NuoDB Admin leadership changes that result in potential Raft election timeouts. NuoDB Admin will now retry certain commands and eventually commit them even if there is leadership instability at the time the Raft command was generated.
    The issue has been resolved.

  • It was possible that XML hotcopy status messages may not be parsed correctly and an engine shutdown could be issued as a result. The messages are now processed and logged correctly.
    The issue has been resolved.

  • nuoarchive check may exit without completing due to failed sqlContext precondition (11655)
    The issue has been resolved.

  • The colocated load balancer filter may not function as expected in some cases. (11121,10599)
    The colocated filter will now compare the client remote IP address with the advertised IP address for a Transaction Engine (TE) which is the same IP address shown in the system.nodes table. The special case of "localhost" is also now correctly processed resulting in a local TE returned by the filter if one exists.
    The issue has been resolved.

  • A TE could crash due to a race condition when querying system.connections if another connection passes in a time parameter and both connections try to convert the time parameter. (11561)
    The issue has been resolved.

  • A crash could occur during Index Splitting in the version co-existence phase of a rolling upgrade. For example, the following error could be reported: Detected 'Buffer overrun: Buffer overun' while processing OBJECT. Message is dropped. (11570)
    The issue has been resolved. The serialization format of Index splitting has been made version aware.

  • A TE could run Out Of Memory in executeCall on a system where functions, procedures, or triggers had been ALTERed or DROPped as the old versions were not removed from the cache. (11563)
    The issue has been resolved.

  • A performance degradation could be observed in very specific circumstances when an SM was syncing due to it unnecessarily syncing certain atoms. (11436)
    The issue has been resolved.

  • An assert could be triggered using SELECT access on a VIEW. (11511)
    The issue has been resolved.

  • A client application using the C or C++ driver could exit prematurely on a close connection request. (11514)
    The issue would occur if a connection is closed by a thread other than the one which opened it.
    The issue has been resolved.

  • The nuoarchive command used to exit with exit code 124 (critical error) instead of the correct exit code 125 (Illegal Command) if the user supplied an incorrect storage password.
    The issue has been resolved.

  • The nuoadmin.log file could erroneously report 'NuoDB Admin not ready…​' messages due to an issue polling for the ready message. (11447)
    The issue has been resolved.

  • A network transport error or delay may leave an Admin Process (AP) unable to communicate with its admin peers resulting in the following error message,
    WARN com.nuodb.nraft.swift.pureswift.PureSwiftRaftService singleThrRaft-asyncReq23-thread-1 [server2]ACTIVE: Send one-way AppendResponse notification to server=server4: dead client java.lang.IllegalStateException: connection pool is closing
    The issue has been resolved.

  • It was possible Admin Raft state data could get dropped during a synchronization event when Raft leadership changes on an Admin Process (AP) that has performed Raft log compaction at least once. When this issue occurred, database process metadata is lost from the affected Admin process, and the raftlog file is also much smaller than the raftlog files on the other non-affected hosts.
    The issue has been resolved.

  • A failed process Start ID can be left in the domain state. (11402)
    When an error is generated after a process has been requested but before the process has actually been started, the Start ID could be left in the domain state.
    The issue has been resolved.

  • The handling of config file switches passed via the --config option was not handled properly. (11382)
    The issue has been resolved. In addition, the handling of switches now allows for a value of "true" and "false" to match the behavior of nuocmd.

  • A database process (TE or SM) may disconnect from the NuoDB Admin tier, but remains running.
    This issue may occur if an admin domain process has not yet transitioned to the MONITORED state and the database shutdown command is then issued.
    The issue has been resolved.

  • A database engine process (TE or SM) could fail because another engine failed or was shut down while it was updating or deleting a record. (11409)
    The issue has been resolved.

  • It was possible that the database could become unresponsive while processing several index creation jobs simultaneously. (11724)
    The default priority assigned to index creation jobs has been adjusted to account for this situation.
    The issue has been resolved.

  • It was possible during a database engine failover event that an assert may occur with message ASSERT(*link == NULL); in PlatformTransactionManager::chain at Platform/PlatformTransactionManager.cpp:6349 due to operations inadvertently getting repeated by the Failover manager.
    The issue has been resolved.

  • NuoDB Admin automatically archives the nuoadmin.log file contents once the file size reaches 5MB. The rolling log appender renames all nuoadmin.log.N files, so that nuoadmin.log.1 is always the second most recent log file. It was possible after the log file roll operation completes that certain messages may still get written to an archived log file.
    The issue has been resolved.

  • A database restore from an Admin database capture file that contained exited database processes and/or storage groups would result in a failed restore. (11620)
    The issue has been resolved.

  • When running NuoDB on an IPv6 network, several NuoDB Admin nuocmd commands (including upgrade) may fail due to a misformatted IPv6 address. (11750)
    When this error occurs the following message would result, WARNING: Unable to send request to start ID 0: 'Invalid Host/IP Address Format fd01:7aff:0:1:0:0:0:2d:48006'.
    The issue has been resolved.

  • It was possible for two or more data manipulation SQL statements that run simultaneously, and one of them involves a large table with an index, to interfere with each other resulting in performance degradation when writing to the database archive. (11744)
    The issue has been resolved.

  • Prior to this release, the Windows version of NuoDB did not support using the NuoDB Admin nuocmd command line administration tool. (11712)
    The Windows installation package has been modified to include the required Python modules (and their dependancies) in order to support this capability on Windows.
    The issue has been resolved.

  • It was possible a Storage Manager (SM) may not startup with error message, "Unable to initialize failure detector." (11766)
    Due to a rare timing issue when a database process may get added to the master catalog’s node list, it was possible failure resolution processing may not complete.
    The issue has been resolved.

  • Storage Groups were not removed from the NuoDB Admin state machine when the database they belonged to was deleted. This could cause issues later if another database is created with the same name.
    This issue has been resolved.

  • The C and C++ drivers' ResultSet API getString (and variant) methods incorrectly returned an empty string for SQL NULL, instead of a null pointer as documented. (11162)
    The issue has been resolved.

  • A corrupted raft log entry due to an out of disk space condition could cause command fields to be populated incorrectly which may result in an Admin process (AP) startup failure. (11624)
    The issue has been resolved.

  • It was possible a Storage Manager (SM) could assert in PlatformIndex::deserializeIndex() at Platform/PlatformIndex.cpp:786. (11802)
    The issue has been resolved.

  • A Storage Manager (SM) that is running a hotcopy backup job might unexpectedly abort when a table, sequence, or index is dropped. (11847)
    This issue has been resolved.

  • If a STATEMENT trigger is defined on a table, it will be called if DELETE …​ WHERE CURRENT OF is used to delete a row from that table. However, the OLD_TABLE that holds the values just deleted will not be populated correctly – it will contain NULLs instead.
    This issue has been resolved.

  • Using service nuoadmin stop, rather than servicectl stop nuoadmin, on a Red Hat/CentOS system causes the NuoDB Admin process to stop but then restart automatically shortly afterward. (11833)
    This is has been resolved.