Fixes bug resolving lock w/ empty col fam. Reported in #660 (#1123)

There was a bug where if a column family was empty and the qual was not
empty this would cause lock recovery to fail.  The underlying cause was
a bug in the Column class.  This class has an isFamilySet() method that
was returning false when the family was set to the empty string.  This
cause caused lock recovery code to create an incorrect range.

The Column class was relying on internal behavior of the Bytes class
that probably changed and caused this bug.

This commit adds a new IT that recreates this bug.  If the new IT is run
w/o the fix to the Column class then it would fail as follows.

```
Running org.apache.fluo.integration.impl.FailureIT
Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 8.011 sec <<< FAILURE! - in org.apache.fluo.integration.impl.FailureIT
testRecoverEmptyColumn(org.apache.fluo.integration.impl.FailureIT)  Time elapsed: 7.096 sec  <<< ERROR!
java.lang.IllegalStateException: can not abort : bob  bal  5 (UNKNOWN)
	at org.apache.fluo.integration.impl.FailureIT.testRecoverEmptyColumn(FailureIT.java:688)
```
3 files changed
tree: 55c3307dbdfece67ab02fcc91133d8c627437d9c
  1. .github/
  2. contrib/
  3. modules/
  4. .asf.yaml
  5. .gitignore
  6. CONTRIBUTING.md
  7. LICENSE
  8. NOTICE
  9. pom.xml
  10. README.md
README.md

Fluo

Build Status Apache License Maven Central Javadoc

Apache Fluo is a distributed processing system that lets users make incremental updates to large data sets. With Apache Fluo, users can set up workflows that execute cross node transactions when data changes. These workflows enable users to continuously join new data into large existing data sets without reprocessing all data. Apache Fluo is built on Apache Accumulo. Check out the Fluo project website for news and general information.

Getting Started

  • Take the Fluo Tour if you are completely new to Fluo.
  • Read the Fluo documentation to learn how to install Fluo and start a Fluo application on a cluster where Accumulo, Hadoop & Zookeeper are running. If you need help setting up these dependencies, see the related projects page for external projects that may help.