Apache Accumulo 2.1.4
08 Apr 2025
These are draft release notes for a future release of Accumulo!
Please view the latest release notes.
Please view the latest release notes.
This version is a current Long Term Maintenance (LTM) release.
About
Apache Accumulo 2.1.4 is a patch release of the 2.1 LTM line. It contains bug fixes and minor enhancements. This version supersedes earlier 2.1 releases and users upgrading to 2.1 should upgrade directly to this version instead of any prior 2.1 release.
Notable Changes
- #5446 Many dependencies were updated, to include protobuf-java which was updated from 3.22.0 to 3.25.6 due to a vulnerability. Users may run into a runtime exception added in https://github.com/protocolbuffers/protobuf/pull/20084 when using old generated Protobuf files. Users may need to address any compatibility issues with this version of protobuf-java, if their code also makes use of this library.
- #5073 #5034 Added
accumulo check-accumulo-properties
command that can be run before an instance is initialized to check the properties file. - #5193 Added
accumulo admin signalShutdown
command to signal the server process to initiate a graceful shutdown. Compactors will finish the major compaction that they are currently working on, then will exit. Scan Servers will return a busy signal to all clients for new scan requests, and will shutdown when all in-progress scans have closed. Tablet Servers will signal the Manager that they are shutting down, which should prevent assignment of tablets to that server, then they will unload all tablets and shut down. The Monitor, Manager, GarbageCollector, and CompactionCoordinator will shut down also. The last step in the shutdown process for all servers is to remove their lock in ZooKeeper. - #5438 Added
accumulo upgrade --prepare
command which should be used after shutting down an instance in preparation for an upgrade. This will check that no Fate transactions exist, delete any ZooKeeper locks for server processes, and prohibit any server processes from being started. - #4898 New way to compute bulk load plans (TODO: Needs text)
- #5169 #5170 The TabletServer will halt itself when a walog write or minc failure occurs and the TabletServer lock is not held in ZooKeeper.
- #5145 #5132 The Manager and TabletServer processes now have a background
thread that can be enabled via the property
general.server.lock.verification.interval
to validate that the process is holding the lock in ZooKeeper. The existing mechanism of relying on a Watcher to notify the process that the lock has been lost can be a problem due to the fact that there is a single thread in the ZooKeeper client that fires Watcher events. If the thread is currently waiting on a hung Watcher, then subsequent Watcher events will not fire and could leave the server running without a lock. - #5174 Improvements to the
accumulo-cluster
andaccumulo-service
scripts have been backported from the main branch. This includes syntax changes. Users should review the scripts for changes that may effect them.
Configuration Improvements
- #4723 #5239 Changes to properties
tserver.session.idle.max
andtserver.session.update.idle.max
no longer require a TabletServer restart. - #5397 #5399 Added property
gc.threads.delete.wal
to control the number of threads to use for deleting write-ahead logs and recovery files. - #5341 Created an optimization in Bulk Import v2 to enable faster processing of bulk import files
when loading into a sparse set of tablets in a large table. See new table property
table.bulk.metadata.skip.distance
.
Notable Bug Fixes
- #5033 #5038 Group names in cluster.yaml must conform to bash variable name rules or an error will be raised when parsing the cluster.yaml file.
- #5221 The shell will now print to stdout, instead of stderr, when there is no terminal set. This will help with piping the output of the shell to other commands such as grep.
- #5396 Modified
accumulo-cluster
to stop GC and ScanServer processes first when stopping the cluster. These processes write to the metadata table, which can lead to slower shutdown times. - #4868 #4871 Fixed listscans so that it shows a scan session id for batch scans instead of always showing zero.
- #4845 InstanceOperations.getActiveCompaction(String) did not handle the address of a Compactor process being passed in the parameter. This has been fixed.
- #5445 The
cf
andcq
options for the DeleteMany and Grep shell commands were not being handled properly.
Metrics Improvements
- #4756 #4757 #4840 Added metric to indicate how many zombie scan threads are running in the TabletServer.
- #5011 Added queue tag to metrics emitted from the External Compactor processes.
- #5025 #4922 Added property
general.micrometer.log.metrics
to enable metrics on the log4j2 or logback logging frameworks. Disabled by default.
Other Improvements
- #4755 #5220 Fixed the help flag for the admin command so that it works for subcommands.
- #4819 Tablets that are closing will no longer wait on scans to complete. Instead they will try to interrupt the scan and then continue closing the tablet so that it can be migrated. It’s possible that a zombie scan thread could remain in the TabletServer, if the scan thread is blocked on something and does not die. Users should monitor the new zombie scan metric mentioned in the section above.
- #4867 Lowered the memory burden of listing a large number of External Compactors in the Monitor.
- #5026 Modified CompactionJobPrioritizer.createPriority to give a higher priority to tablets that have more files than the maximum number of files per tablet.
- #5400 Modified AESCryptoService to prevent the creation of overlapping streams.
Requirements
Accumulo 2.1.4 now requires JDK 17 to build, but still supports Java 11 runtime.
Upgrading
View the Upgrading Accumulo documentation for guidance.
Useful Links
View all releases in the archive