ScalarDL 3.14 Release Notes
This page includes a list of release notes for ScalarDL 3.14.
v3.14.1​
Release date: September 8, 2026
Summary​
This release includes several improvements, bug fixes, and vulnerability fixes. For detailed changes, see the following.
The nonce of a contract execution request must now be a canonical UUID. A request whose nonce is not a canonical UUID (36 characters in the 8-4-4-4-12 hyphenated form; uppercase and lowercase hex are both accepted) is now rejected. The client SDKs have always generated UUID nonces, so this affects only applications that pass their own nonce through the deprecated executeContract methods that take a nonce argument. If your application does this, either stop passing a nonce and let the SDK generate one, or make sure the value you pass is a canonical UUID. (#662)
Community and Enterprise editions​
Improvements​
- Added validation that the nonce of a contract execution request is a canonical UUID. Rejecting a malformed nonce at the server entry point prevents it from corrupting downstream bookkeeping. (#662)
- Upgraded ScalarDB to 3.19.1. (#687)
Bug fixes​
- Fixed CVE-2026-33818, CVE-2026-39821, CVE-2026-46600, CVE-2026-56852, CVE-2026-56853, CVE-2026-56858, CVE-2026-56859, CVE-2026-56860, CVE-2026-56862, CVE-2026-84304, and GHSA-hrxh-6v49-42gf. (#681)
Enterprise edition​
Bug fixes​
- Fixed an issue where retrying a read lock release could fail with a
StackOverflowErrorand retry without any wait when the underlying storage kept failing conditional writes. - Fixed an issue where releasing a write lock during cleanup could throw a misleading
INCONSISTENT_STATESerror, or release another transaction's write lock, when a concurrent recovery had already released the lock. - Fixed an issue where releasing a read lock could leave the lock owner list and the lock count inconsistent.
v3.14.0​
Release date: August 5, 2026
Summary​
This release introduces the transaction state purge feature, which reclaims residual transaction states, and includes several improvements and bug fixes. For detailed changes, see the following.
Community and Enterprise editions​
Enhancements​
- Added transaction state purge, which reclaims stale Coordinator/transaction states left in the database. States are purged when a transaction finishes, by a periodic background scan, or on demand via the new
purge-stateCLI command. (#552, #555, #564, #579, #583, #623)
Improvements​
- Added asset lock recovery RPC for the ScalarDL cleanup tool. (#543)
- Upgraded ScalarDB to 3.19.0. (#638)
Bug fixes​
- Fixed an issue where contracts could not access a JDBC database (e.g., PostgreSQL). (#558)
- Fixed the Ledger to reject unsupported ScalarDB transaction managers at startup instead of silently accepting them. (#585)
- Restricted function execution so that a function registered in a non-default namespace can only access the ScalarDB namespace with the same name as its context namespace, or a namespace whose name starts with the context namespace followed by an underscore. (#570)
- Fixed contract execution failing with an
AccessControlExceptionwhen ScalarDL runs on a ScalarDB multi-storage configuration, by granting the required sandbox permissions regardless of the configured storage type. (#588) - Fixed several vulnerabilities in grpc-health-probe. (#589)
- Fixed an issue where contract execution failed when database connections needed to be re-established (for example, after a database restart or an idle timeout) with the SecurityManager enabled. (#621)
- Removed the top-level
create-namespacecommand. Usescalardl create-namespaceinstead, which is consistent with the other namespace commands (scalardl drop-namespace,scalardl list-namespaces). (#622) - Fixed a race condition where pausing a Ledger (or Auditor/Gateway) server could report success while the server remained unpaused. (#637)
Enterprise edition​
Bug fixes​
- Fixed read lock count corruption caused by concurrent recovery and eliminated unnecessary CAS failures when recovering multiple read lock nonces.
- Fixed an issue in the Auditor where a Ledger call failure during asset lock recovery was reported to clients as a generic runtime error, or its cause was lost by being treated as an unknown transaction state.
- Fixed an issue where the Auditor on JDBC databases (Oracle) could fail to execute contracts with a
DL-COMMON-305001error caused by reading an asset lock entry whose value was stored asNULL. - Fixed an issue where Gateway log lines were recorded under the wrong logger category.
- Fixed an issue where contract execution on Auditor failed when database connections needed to be re-established (for example, after a database restart or an idle timeout) with the SecurityManager enabled.
- Fixed an issue where retrying a read lock release could fail with a misleading
INCONSISTENT_STATESerror when a concurrent recovery had already released the lock.