Skip to content
Merged
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
139 changes: 139 additions & 0 deletions _posts/release/2025-05-01-accumulo-2.1.4.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,139 @@
---
title: Apache Accumulo 2.1.4
sortableversion: '02.01.04'
draft: true
LTM: true
---
## 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 2.1.3. Users upgrading to
2.1 should upgrade directly to this version instead of 2.1.3.

## Notable Changes

* {% ghi 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 are advised to regenerate their
protobuf files using protobuf 25.6 or later. Alternatively, users can set a
system property (see #20084 for details) to suppress the exception.

* {% ghi 5073 %} {% ghi 5034 %} Added `accumulo check-accumulo-properties` command that can be
run before an instance is initialized to check the properties file.

* {% ghi 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.

* {% ghi 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.

* {% ghi 4898 %} New way to compute bulk load plans (TODO: Needs text)
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

TODO

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This will probably be filled in by Keith in a subsequent PR


* {% ghi 5169 %} {% ghi 5170 %} The TabletServer will halt itself when a walog write or
minc failure occurs and the TabletServer lock is not held in ZooKeeper.

* {% ghi 5145 %} {% ghi 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.

* {% ghi 5174 %} Improvements to the `accumulo-cluster` and `accumulo-service` scripts have been
backported from the main branch. This includes syntax changes.

* {% ghi 5384 %} {% ghi 5386 %} Fixed an issue with multiple threads performing AES decryption leading to corrupt data.

### Configurable Improvements

Many notable improvements have been added that include a means for users to configure them via new
or existing properties to improve system performance or behavior. These include:

* {% ghi 4723 %} {% ghi 5239 %} Changes to properties `tserver.session.idle.max` and
`tserver.session.update.idle.max` no longer require a TabletServer restart.

* {% ghi 5397 %} {% ghi 5399 %} Added property `gc.threads.delete.wal` to control the number of threads to use for
deleting write-ahead logs and recovery files.

### Notable Bug Fixes

* {% ghi 5033 %} {% ghi 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.

* {% ghi 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.

* {% ghi 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`.

* {% ghi 5358 %} Fixed issue with balancing metadata tablets.

* {% ghi 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.

* {% ghi 4868 %} {% ghi 4871 %} Fixed listscans so that it shows a scan session id for batch scans instead
of always showing zero.

* {% ghi 4845 %} InstanceOperations.getActiveCompaction(String) did not handle the address of a
Compactor process being passed in the parameter. This has been fixed.

* {% ghi 5445 %} The `cf` and `cq` options for the DeleteMany and Grep shell commands were not being
handled properly.

### Metrics Improvements

* {% ghi 4756 %} {% ghi 4757 %} {% ghi 4840 %} Added metric to indicate how many zombie scan threads are running
in the TabletServer.

* {% ghi 5011 %} Added queue tag to metrics emitted from the External Compactor processes.

* {% ghi 5025 %} {% ghi 4922 %} Added property `general.micrometer.log.metrics` to enable metrics on
the log4j2 or logback logging frameworks. Disabled by default.

### Other Improvements

* {% ghi 4755 %} {% ghi 5220 %} Fixed the help flag for the admin command so that it works for subcommands.

* {% ghi 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.

* {% ghi 4867 %} Lowered the memory burden of listing a large number of External Compactors in the Monitor.

* {% ghi 5026 %} Modified CompactionJobPrioritizer.createPriority to give a higher priority to tablets that
have more files than the maximum number of files per tablet.

* {% ghi 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][upgrade] for guidance.

## Useful Links

* [All Changes since 2.1.3][all-changes]
* [All tickets related to this release][milestone]

This release also contains bug fixes from 1.10.4, which was released after 2.1.2.


[upgrade]: /docs/2.x/administration/upgrading
[milestone]: https://github.com/apache/accumulo/milestone/21
[all-changes]: https://github.com/apache/accumulo/compare/rel/2.1.3...apache:rel/2.1.4