Improvements to ZooKeeper Lock classes (#1972)

* Create specific types for path parameters for `ZooLock` and `ZooQueueLock`
  to ensure operations intended for one lock type aren't coded incorrectly
  against the other lock type's methods (this fixes #1966)
* Rename `ZooLock` to `ServiceLock` and `ZooQueueLock` to `FateLock` to
  make it more clear the purpose of these very similar lock types,
  including any related classes (this fixes #1967)
* Shorten lots of lines by renaming `validateAndSortByLockPrefix` to
  just `validateAndSort`, using `var` keyword
* Remove unused `ephemeral` field (`FateLock` only uses persistent
  nodes, and the extra parameter when not used makes it harder to reason
  about the actual implementation)
* Guard against null parameters by using `Objects.requireNonNull` in key
  places
* Add javadoc to `FateLock` class and make its fields `final`
* Add brief javadoc to `FateLock.validateAndSort`

Co-authored-by: Christopher Tubbs <ctubbsii@apache.org>
42 files changed
tree: 049b7135ec7e0c4cf26618f60e8ea637c986eb95
  1. .github/
  2. assemble/
  3. contrib/
  4. core/
  5. hadoop-mapreduce/
  6. iterator-test-harness/
  7. minicluster/
  8. server/
  9. shell/
  10. src/
  11. start/
  12. test/
  13. .asf.yaml
  14. .gitignore
  15. CONTRIBUTING.md
  16. DEPENDENCIES
  17. LICENSE
  18. NOTICE
  19. pom.xml
  20. README.md
  21. TESTING.md
README.md

Apache Accumulo


Build Status Maven Central Javadoc Apache License

Apache Accumulo is a sorted, distributed key/value store that provides robust, scalable data storage and retrieval. With Apache Accumulo, users can store and manage large data sets across a cluster. Accumulo uses Apache Hadoop's HDFS to store its data and Apache Zookeeper for consensus. Check out the Accumulo project website for news and general information.

Getting Started

More resources can be found on the project website.

Building

Accumulo uses Maven to compile, test, and package its source. The following command will build the binary tar.gz from source. Add -DskipTests to build without waiting for the tests to run.

mvn package

This command produces assemble/target/accumulo-<version>-bin.tar.gz

Export Control


This distribution includes cryptographic software. The country in which you currently reside may have restrictions on the import, possession, use, and/or re-export to another country, of encryption software. BEFORE using any encryption software, please check your country's laws, regulations and policies concerning the import, possession, or use, and re-export of encryption software, to see if this is permitted. See https://www.wassenaar.org/ for more information.

The U.S. Government Department of Commerce, Bureau of Industry and Security (BIS), has classified this software as Export Commodity Control Number (ECCN) 5D002.C.1, which includes information security software using or performing cryptographic functions with asymmetric algorithms. The form and manner of this Apache Software Foundation distribution makes it eligible for export under the License Exception ENC Technology Software Unrestricted (TSU) exception (see the BIS Export Administration Regulations, Section 740.13) for both object code and source code.

The following provides more details on the included cryptographic software:

Apache Accumulo uses the built-in java cryptography libraries in its RFile encryption implementation. See oracle's export-regulations doc for more details for on Java‘s cryptography features. Apache Accumulo also uses the bouncycastle library for some cryptographic technology as well. See the BouncyCastle site for more details on bouncycastle’s cryptography features.