Changes in 24.1.15
The following changes were made in Oracle NoSQL Database Release 24.1.15 Enterprise Edition.
New Features
- Implemented the following mathematical SQL functions: ABS, ACOS, ASIN, ATAN, ATAN2, CEIL, COS, COT, DEGREES, EXP, FLOOR, LOG, LOG10, POWER, RADIANS, RAND, ROUND, SIGN, SIN, SQRT, TAN, TRUNC.
Bug and Performance Fixes
- Improved the error message of the ShellException thrown when a runadmin command
is executed on a storage node incompatible with the current client version. The
error message now reports the minimum prerequisite version for the client JAR
file.
[KVSTORE-917]
- Added expiration information for the current password as a new field
current-passwd-expiration
to the user description returned by theshow user
command. The value will beexpired
when password is expired andnon-expiring
if the lifetime of password is set to unlimited. Otherwise the value will be the expiration date time in the format ofyyyy-MM-dd HH:mm:ss z.
[KVSTORE-1904]
- Added a new configuration API that allows Streams API users to configure the
memory usage of subscribers by size instead of number of stream operations. The
new method is called
NoSQLSubscriptionConfig.Builder.setOutputQueueSizeMB.
[KVSTORE-2061]
- Fixed a bug where, if multiple XRegion service agents are deployed for
multi-region tables, the initial transfer of data for the table from another
region could fail to include all rows.
[KVSTORE-2111]
- Corruption of the election.persisted file, used to track master elections, will
no longer prevent Replication Node or Admin node
startup.
[KVSTORE-2162]
- Fixed an issue where a store request may encounter a failure with the following
cause on the stack trace: "Caused by:
oracle.kv.impl.async.exception.TemporaryDialogException: Idle timeout,
connection is idle during last 20000 ms".
[KVSTORE-2214]
- Fixed an issue that could prevent objects related to network connections from
being garbage collected, which might have led to OutOfMemoryErrors during a
network outage. The issue can be identified by checking a heap dump for a large
number of NioEndpointHandler objects referenced by
ForkJoinTask$AdaptedRunnableAction
objects.
[KVSTORE-2190]
- Fixed a bug in the Streams API where a runtime error like OutOfMemoryError might
fail to terminate a subscription and thus leave the subscription
hanging.
[KVSTORE-2199]
- Fixed a problem that could cause a store operation to fail with a FaultException
whose message includes the text "Secondary/primary record already
present".
The fix eliminates a problem that could cause corruption of secondary indexes in some cases where the index was specified to include part of the primary key. When the index corruption was detected during a store operation, the operation would fail with a FaultException as described, and a SEVERE logging entry would be logged for the associated Replication Node. The affected node would be restarted, and the secondary index would be dropped and rebuilt automatically, causing the index to be unavailable while it was being rebuilt.
[KVSTORE-2027]
- Fixed a problem that could cause bulk put operations to fail with a
NullPointerException if the operation was performed while increasing the number
of shards in the store. The problem was present for both the
TableAPI.put(List<EntryStream<Row>>, BulkWriteOptions) and
KVStore.put(List<EntryStream<KeyValue>>, BulkWriteOptions)
methods.
java.lang.NullPointerException: Cannot invoke "java.util.List.size()" because "list" is null at oracle.kv.impl.api.bulk.BulkPut.startShardExecutor(BulkPut.java:423) at oracle.kv.impl.api.bulk.BulkPut.execute(BulkPut.java:292) at oracle.kv.impl.api.table.TableAPIImpl.put(TableAPIImpl.java:1564)
[KVSTORE-2173]
- Fixed a bug that could cause a query with a LIMIT clause, but no OFFSET clause,
to miss results if the query was using a multikey
index.
[KVSTORE-2184]
- Fixed a bug that could cause queries (and possibly other operations as well) to
fail with a ConcurrentModificationException. The problem was due to the fact
that index metadata could be used before it was fully
initialized.
[KVSTORE-2185]
- Fixed an issue with multi-region tables where a Direct Java Driver table
iteration on a child table that also requested rows for the parent table might
return tombstone (deleted) rows from the parent table. The incorrect results
would appear as rows or keys that match the iteration's key value but the value
of the row is empty, resulting in null values in all
fields.
[KVSTORE-2223]
- Fixed a bug that could cause decimal values to lose precision when creating a
table row from a JSON string.
[KVSTORE-2189]
- Modified the handling of security configuration properties to convert relative
pathname values to absolute pathnames. If an application calls the
KVStoreConfig.setSecurityProperties method to specify security properties and
the properties contain relative pathname values for properties such as
AUTH_WALLET_PROPERTY or AUTH_PWDFILE_PROPERTY, the pathnames are now converted
to absolute pathnames relative to the current directory. Previously, the
presence of relative pathnames could either produce confusing exception messages
for wallet configurations or NullPointerExceptions when used with file stores.
Security configuration files generated by KVLite use relative pathnames, so
these problems could occur if applications called
KVStoreConfig.setSecurityProperties with properties read from a KVLite security
configuration file
[KVSTORE-1938]
- Modified the network port checks performed by the makebootconfig and diagnostics
commands to only check TCP ports, not UDP ports. Previously, in-use UDP ports
would be flagged as conflicting with the ports required to support a store.
Stores use only TCP for network connections so the UDP port checks were
unnecessary.
[KVSTORE-2164]
- Fixed an issue where securityconfig verify may report that a security
configuration created with certificate signed by certificate authority has an
incorrect keystore installation even if the keystore is valid. This happened
because the previous verification incorrectly required the keystore to have a
separate root and intermediate certificate entries, even if the keystore was
valid, where the private key entry has the full chain of
certificates.
[KVSTORE-1505]
- Updated the required privilege of an internal API used by NoSQL Database Admin
CLI from SYSVIEW to USRVIEW. After this change, the CLI command
await-consistent
now requires USRVIEW privilege instead of SYSVIEW.[KVSTORE-2183]
- Fixed an issue where KVLite failed to start up when using Java 11 and an
NFS-mounted kvroot directory.
[KVSTORE-2015]
- Fixed a bug in the ping Admin CLI command where the -shard argument failed to
show arbiter nodes.
[KVSTORE-1692]
- Fixed a bug in re-run of contraction plan. If a contraction plan failed due to
failure of RemoveShard task, then a re-run of the plan caused the task previous
to the RemoveShard task (removeRepNodeJob) to fail with a NullPointerException.
This behavior has been corrected.
[KVSTORE-1844]
- Fixed a bug where storage node agent startup with the command line argument
'-update-config false' and an unknown/invalid shapshot would
hang.
[KVSTORE-1786]
- Fixed a bug where the local region was shown in the output of the SQL "describe
table" command for a table that was not a multi-region
table.
[KVSTORE-2201]