Apache Accumulo 1.7.3

06 Apr 2017

Apache Accumulo 1.7.3 is a maintenance release on the 1.7 version branch. This release contains changes from 79 issues, comprised of bug-fixes,
performance improvements, build quality improvements, and more. SeeJIRA for a complete list.

Accumulo follows Semantic Versioningguidelines. This release is a
“patch version”, which means that only backwards compatible bug fixes are introduced in this version. A bug fix is defined as
an internal change that fixes incorrect behavior. Users of any previous 1.7.x release are strongly encouraged to update as soon as possible to benefit from the
bug fixes with very little concern in change of underlying functionality. As always, the Accumulo developers take API compatibility very seriously
and have invested much time to ensure that we meet the promises set forth to our users. Users of 1.6 or earlier that are seeking to upgrade to 1.7 should
consider 1.7.3 as a starting point.

Major Changes

Tablet Server Performance Improvement

ACCUMULO-4458 mitigated some contention on the Hadoop configuration instance backing the XML configs
read for SiteConfiguration. This should improve overall Tablet Server performance.

Synchronization issue with deep copies of sources

Deep copies of iterator sources were not thread safe and threw exceptions, mostly down in the ZlibDecompressor library. The real bug was in the
BoundedRangeFileInputStream. The read() method synchronizes on the underlying FSDataInputStream, however the available() method did not.
See ACCUMULO-4391.

System permission bug in Thrift Proxy

The Accumulo Proxy lacked support for the following system permissions:

System.CREATE_NAMESPACE

System.DROP_NAMESPACE

System.ALTER_NAMESPACE

System.OBTAIN_DELEGATION_TOKEN

Without these permissions, proxy users would get an AccumuloException if attempting
any of those operations. Fixed in ticket ACCUMULO-4519.

HostRegexTableLoadBalancer used stale information

The HostRegexTableLoadBalancer maintains an internal mapping of tablet server pools and tablet server status. It was updated at a configurable interval
initially as an optimization. Unfortunately it had the negative side effect of providing the assignment and balance operations with stale information.
This lead to a constant shuffling of tablets. The configuration property was removed so that assign/balance methods get updated information every time.
See ACCUMULO-4576.

Modify TableOperations online to check for table state

The table operations online operation executes as a fate operation. If a transaction lock for the table is currently held, this operation will block even
if no action is needed. ACCUMULO-4574 changes the behavior of the online operation to a NOOP if the
table is already in the requested state. This returns immediately without queuing a fate operation.

Other Notable Changes

ACCUMULO-4600 Shell does not fall back to accumulo-site.xml when on classpath

ACCUMULO-4597 NPE from RFile PrintInfo when RF has more than 1,000 column families.

Upgrading

The recommended way to upgrade from a prior 1.7.x release is to stop Accumulo, upgrade to 1.7.3 and then start 1.7.3.

When upgrading, there is a known issue if the upgrade fails due to outstanding FATE
operations, see ACCUMULO-4496 The work around if this situation is encountered:

Start tservers

Start shell

Run fate print to list all

If completed, just delete with fate delete

Start masters once there are no more fate operations

If any of the FATE operations are not complete, you should rollback the upgrade and troubleshoot completing them with your prior version.
When performing an upgrade between major versions, the upgrade is one-way, therefore it is important that you do not have any outstanding
FATE operations before starting the upgrade.

From 1.6 to 1.7

Upgrades from 1.6 to 1.7 are be possible with little effort as no changes were made at the data layer and RPC changes
were made in a backwards-compatible way. The recommended way is to stop Accumulo 1.6, perform the Accumulo upgrade to
1.7, and then start 1.7. Like previous versions, after 1.7.0 is started on a 1.6 instance, a one-time upgrade will
happen by the Master which will prevent a downgrade back to 1.6. Upgrades are still one way. Upgrades from versions
prior to 1.6 to 1.7 should follow the below path to 1.6 and then perform the upgrade to 1.7 – direct upgrades to 1.7
for versions other than 1.6 are untested.

After upgrading to 1.7.0, users will notice the addition of a replication table in the accumulo namespace. This
table is created and put offline to avoid any additional maintenance if the data-center replication feature is not
in use.

Existing configuration files from 1.6 should be compared against the examples provided in 1.7. The 1.6 configuration
files should all function with 1.7 code, but you will likely want to include a new file (hadoop-metrics2-accumulo.properties)
to enable the new metrics subsystem. Read the section on Hadoop Metrics2 in the Administration chapter of the Accumulo User Manual.

For each of the other new features, new configuration properties exist to support the feature. Refer to the added
sections in the User Manual for the feature for information on how to properly configure and use the new functionality.

Testing

Each unit and functional test only runs on a single node, while the RandomWalk and Continuous Ingest tests run on any number of nodes. Agitation refers to randomly restarting Accumulo processes and Hadoop Datanode processes, and, in HDFS High-Availability instances, forcing NameNode failover.