<!---
  Licensed to the Apache Software Foundation (ASF) under one or more
  contributor license agreements.  See the NOTICE file distributed with
  this work for additional information regarding copyright ownership.
  The ASF licenses this file to You under the Apache License, Version 2.0
  (the "License"); you may not use this file except in compliance with
  the License.  You may obtain a copy of the License at

      http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.
-->

Release Notes - Accumulo - Version 1.6.1


** Sub-task
    * [ACCUMULO-2746] - VolumeIT.testDirtyReplaceVolume failed on AccumuloSecurityException
    * [ACCUMULO-2760] - HalfDeadTServerIT.testTimeout failed
    * [ACCUMULO-2773] - Regenerate thrift classes for 0.9.1
    * [ACCUMULO-2798] - MonitorLoggingIT should retry waiting for log fowarding
    * [ACCUMULO-2807] - Local WAL Recovery breaks Hadoop 1 Compilation
    * [ACCUMULO-2814] - LocalWALRecoveryTest.testRecoverLocalWriteAheadLogs:73 Wrong number of WAL files recovered. expected:<1> but was:<0>
    * [ACCUMULO-2816] - LocalWALRecoveryTest throws IndexOutOfBoundsException
    * [ACCUMULO-2821] - Document USERFLAGS / build_native_library.sh args
    * [ACCUMULO-2838] - Use resolved props in DefaultConfiguration.get()
    * [ACCUMULO-2839] - AuditedSecurityOperation canScan is very slow even when not logging
    * [ACCUMULO-2840] - Auditing is not disabled by default in MAC
    * [ACCUMULO-2934] - Use Jetty 8 for 1.6.x
    * [ACCUMULO-2942] - org.apache.accumulo.core.util.format.ShardedTableDistributionFormatterTest.testAggregate failure
    * [ACCUMULO-2950] - Fix handling of server-side exceptions
    * [ACCUMULO-2957] - New WALog file for 1.4.x fails RAT check on OS X
    * [ACCUMULO-3012] - Simplify DefaultConfiguration
    * [ACCUMULO-3019] - Fix ServerConfiguration deprecation
    * [ACCUMULO-3058] - Javadoc comment added to balancer describes non-existent methods
    * [ACCUMULO-3081] - ServerConfigurationFactoryTest is full of commented out and unused code


** Bug
    * [ACCUMULO-1628] - NPE on deep copied dumped memory iterator
    * [ACCUMULO-2410] - TServerUtils no longer needs to catch NPE as a thrift bug workaround
    * [ACCUMULO-2455] - overnight integration tests sometimes fails
    * [ACCUMULO-2549] - ShellTest sometimes fails because of order of authentication strings returned
    * [ACCUMULO-2645] - tablet stuck unloading, and problem is hard to diagnose
    * [ACCUMULO-2658] - Thrift Proxy crashes with OOM on bad input
    * [ACCUMULO-2694] - Offline tables block balancing for online tables
    * [ACCUMULO-2704] - GetMasterStats does not print all elements
    * [ACCUMULO-2719] - Shell fails to find instance_id when using viewfs
    * [ACCUMULO-2722] - Classes outside of shell shouldn't be using commons-cli
    * [ACCUMULO-2747] - Scan "show few" long option contains a space
    * [ACCUMULO-2758] - LocalityGroupUtil.encodeColumnFamily() ignores offset parameter
    * [ACCUMULO-2761] - bootstrap_hdfs.sh inconsistent with accumulo-site.xml
    * [ACCUMULO-2764] - Stopping MAC before it's processes have fully started causes an indefinite hang
    * [ACCUMULO-2765] - FrameworkTest not informative when failing during a build
    * [ACCUMULO-2766] - Single walog operation may wait for multiple hsync calls
    * [ACCUMULO-2767] - Documentation of valid Visibility Labels is wrong
    * [ACCUMULO-2768] - Agitator not restarting all datanodes
    * [ACCUMULO-2774] - Update pom to ensure enough memory for tests
    * [ACCUMULO-2785] - ShellServlet vulnerable to CSRF
    * [ACCUMULO-2786] - Jetty / servlet JARs not packaged for monitor
    * [ACCUMULO-2787] - Accumulo too strict about max files
    * [ACCUMULO-2790] - generate_monitor_certificate.sh fails on OSX
    * [ACCUMULO-2791] - Behavior and binary compatibility mismatch of Commons Codec version provided by Hadoop
    * [ACCUMULO-2796] - user manual doesn't mention ordering of iterator application
    * [ACCUMULO-2811] - UniqueFileReplicator logs many warnings about a directory that exists
    * [ACCUMULO-2813] - Missing log4j configuration files for tests after module refactor
    * [ACCUMULO-2818] - generate_monitor_certificate creates bad keystore
    * [ACCUMULO-2824] - TableOperationsImpl#getDiskUsage() should check pair against null in catch clause
    * [ACCUMULO-2831] - HDFS Configuration classloader not correct when using VFSClassLoader
    * [ACCUMULO-2836] - Context classloader not used in all applicable cases
    * [ACCUMULO-2852] - master-agitator.pl calls Cwd::cwd() but doesn't import the Cwd module
    * [ACCUMULO-2854] - Bad null check in BulkImport.createNewBulkDir()
    * [ACCUMULO-2857] - MockTableOperations.tableIdMap always returns tableName as ID
    * [ACCUMULO-2864] - Multiple calls to ZooSession.shutdown result in NPE
    * [ACCUMULO-2869] - Wrong method called on WriteParameters in Tablet#createTableConfiguration()
    * [ACCUMULO-2870] - Potential null pointer dereference in Tablet#longestCommonLength()
    * [ACCUMULO-2874] - user documentation errors
    * [ACCUMULO-2888] - BatchWriterOpts doesn't configure the number of threads
    * [ACCUMULO-2890] - Remove AccumuloNotInitializedException
    * [ACCUMULO-2891] - bin/config.sh logs error when $ACCUMULO_CONF_DIR/masters is missing
    * [ACCUMULO-2896] - PATH_PROPERTY_ENV_VARS constant is a mutable array.
    * [ACCUMULO-2899] - WAL handling fails to deal with 1.4 -> 1.5 -> 1.6
    * [ACCUMULO-2906] - configuredZookeeperPort is not cased the same way as other mentions of ZooKeeper
    * [ACCUMULO-2908] - UndefinedAnalyzer does not use batch scanner opts
    * [ACCUMULO-2919] - metrics documentation and example configs refer to the logger
    * [ACCUMULO-2926] - Multiple slf4j bindings warning
    * [ACCUMULO-2928] - Missing toString, hashCode and equals methods on BatchWriterConfig
    * [ACCUMULO-2930] - AccumuloClassLoader still referenced directly
    * [ACCUMULO-2935] - Tests consistently hanging after Thrift 0.9.1
    * [ACCUMULO-2940] - ZooLockTest doesn't wait for connection
    * [ACCUMULO-2948] - Possible race condition in ZooLockTest
    * [ACCUMULO-2956] - bootstrap_config.sh relies on GNU getopt for long opts, which doesn't work in OS X
    * [ACCUMULO-2962] - RangeInputSplit Writable methods don't serialize IteratorSettings
    * [ACCUMULO-2967] - Unknown Host results in unending wait for clients
    * [ACCUMULO-2974] - Unable to assign single tablet table migrated to 1.6.0
    * [ACCUMULO-2985] - MAC doesn't stop cleanly in 1.6.1-SNAPSHOT
    * [ACCUMULO-2991] - Incorrect character in zookeeper-loss administration section
    * [ACCUMULO-3003] - accumulo tablet fails to load if the directory name ends with "rf"
    * [ACCUMULO-3006] - Don't allow viewfs in instance.volumes
    * [ACCUMULO-3007] - instance.volumes.replacements does not work after 1.6 upgrade
    * [ACCUMULO-3008] - Update example READMEs for changed argument names
    * [ACCUMULO-3010] - minor compaction after recovery should not merge
    * [ACCUMULO-3011] - files moved after bulk import failure
    * [ACCUMULO-3014] - VolumeChooser returns entries in the default file system
    * [ACCUMULO-3017] - RangeInputSplit getTable method changed from 1.5 to 1.6 without deprecation
    * [ACCUMULO-3024] - VFS classloader can randomly fail
    * [ACCUMULO-3025] - NPE in VFS ContextManager
    * [ACCUMULO-3026] - VFS is not cleaning up its temp dirs
    * [ACCUMULO-3030] - scanners cannot be interrupted
    * [ACCUMULO-3038] - java.lang.RuntimeException: java.io.InvalidClassException: org.apache.accumulo.trace.thrift.TInfo; local class incompatible
    * [ACCUMULO-3039] - demote "File doesn't exist" warning in the garbage collector
    * [ACCUMULO-3043] - Only add sensitive, valid Accumulo Properties from CredentialProviders
    * [ACCUMULO-3046] - AccumuloReloadingVFSClassloader log message incorrect
    * [ACCUMULO-3047] - Invalid URI in delete marker in accumulo.metadata
    * [ACCUMULO-3055] - calling MiniAccumuloCluster.stop multiple times fails with NPE
    * [ACCUMULO-3061] - Can't release Accumulo using >=Git-1.8
    * [ACCUMULO-3062] - Use MiniAccumuloCluster.getConnector in MiniAccumuloClusterStartStopTest
    * [ACCUMULO-3069] - MiniAccumuloClusterImplTest.saneMonitorInfo fails intermittently 
    * [ACCUMULO-3070] - generic_logger.properties hard-codes log4j port
    * [ACCUMULO-3074] - MergeIT fails on timeout
    * [ACCUMULO-3075] - SSL IT timeouts
    * [ACCUMULO-3076] - SimpleBalancerFairnessIT times out
    * [ACCUMULO-3078] - Some SimpleMacITs aren't simple
    * [ACCUMULO-3084] - Delays between calls to logGC causes tserver to fail
    * [ACCUMULO-3093] - Shell scan command does not find formatter
    * [ACCUMULO-3096] - Scans stuck and seeing error message about constraint violation
    * [ACCUMULO-3098] - MonitorLoggingIT has an extremely long timeout
    * [ACCUMULO-3100] - Accumulo fails to test against recent Hadoop 2.6.0-SNAPSHOT
    * [ACCUMULO-3101] - ExamplesIT-testReadWriteAndDelete and testScansWithInterference fail due to timeout.
    * [ACCUMULO-3102] - SplitRecoveryIT-test fails due to insufficient timeout on multinode cluster.
    * [ACCUMULO-3104] - AccumuloInputFormatIT has no timeout
    * [ACCUMULO-3108] - CreateAndUseIT timings too tight
    * [ACCUMULO-3109] - MonitorLoggingIT sometimes fails
    * [ACCUMULO-3112] - MiniAccumuloClusterGCTest appears to leak processes
    * [ACCUMULO-3113] - ConditionalWriterIT failures
    * [ACCUMULO-3119] - Javadoc cleanup
    * [ACCUMULO-3136] - AllowScansToBeInterruptedIT might interrupt before the scan started
    * [ACCUMULO-3138] - AccumuloInputFormatIT doesn't adhere to SSL parameters
    * [ACCUMULO-3139] - BalanceAfterCommsFailureIT alters other tservers on the system
    * [ACCUMULO-3140] - Compaction did not run during RW test
    * [ACCUMULO-3143] - InputTableConfig missing isOfflineScan field in Serializer
    * [ACCUMULO-3144] - AuditMessageIT failed to find last audit message
    * [ACCUMULO-3145] - ShellServerIT#listscans can fail with ArrayIndexOutOfBoundsException
    * [ACCUMULO-3146] - Balance tests don't ensure all tablets are online
    * [ACCUMULO-3148] - TabletServer didn't get Session expired in HalfDeadTServerIT
    * [ACCUMULO-3150] - MiniAccumuloConfig doesn't set 0 for monitor log4j port
    * [ACCUMULO-3151] - scan monitoring shows red after 30 seconds
    * [ACCUMULO-3152] - GC check message is confusing
    * [ACCUMULO-3153] - GC pause checker warns too frequently
    * [ACCUMULO-3155] - BatchWalker appears to run less frequently than intended


** Improvement
    * [ACCUMULO-1919] - Size of visibility cache in AccumuloFileOutputFormat should be configurable
    * [ACCUMULO-2212] - ZooReaderWriter is a singleton class with a public constructor
    * [ACCUMULO-2253] - Scalability tests should output quartiles
    * [ACCUMULO-2343] - Create Appender specifically for log-forwarding
    * [ACCUMULO-2383] - Allow configuration of logging using properties file also
    * [ACCUMULO-2464] - Trace user password required in plaintext in accumulo-site.xml
    * [ACCUMULO-2501] - Add deepCopy to RowFilter
    * [ACCUMULO-2514] - Continuous Ingestion test should use Logger
    * [ACCUMULO-2560] - {{gc.threads.delete}} cannot be changed via zookeeper config
    * [ACCUMULO-2615] - Simplify server configuration caching and ZK watchers
    * [ACCUMULO-2623] - AbstractMetricsImpl's toString is excessively verbose
    * [ACCUMULO-2635] - Consolidate ZooCache creation and caching
    * [ACCUMULO-2646] - Generate example configuration from template in build
    * [ACCUMULO-2663] - Remove usage of String#split from Combiner#init
    * [ACCUMULO-2676] - Make minicluster ZooKeeper startup wait time configurable
    * [ACCUMULO-2762] - Use better compiler optimizations by default for native maps
    * [ACCUMULO-2770] - Support Local WAL Recovery in 1.6
    * [ACCUMULO-2789] - Add a system stress test based on key/cell/row size
    * [ACCUMULO-2803] - Agitator; Set Tablet Server and Datanode min/max kill values independently.
    * [ACCUMULO-2812] - Support more architectures when compiling native lib
    * [ACCUMULO-2825] - WholeRowIterator should be extendable
    * [ACCUMULO-2827] - HeapIterator optimization
    * [ACCUMULO-2832] - Improve DefaultFormatter for reuse and object creation
    * [ACCUMULO-2842] - Allow for use of hflush instead of hsync
    * [ACCUMULO-2849] - Add scan batch size configurability and write delay to memory stress test
    * [ACCUMULO-2850] - Enhance memory stress test scripts
    * [ACCUMULO-2887] - Refactor observability in configurations
    * [ACCUMULO-2905] - Seeing short hold times and no MinC's
    * [ACCUMULO-2927] - Make 'git clean -df' sufficient when switching between branches
    * [ACCUMULO-2947] - Support configurable changes per mutation for size-based stress test
    * [ACCUMULO-2988] - Support upgrades from 1.4 directly to 1.6
    * [ACCUMULO-2992] - Eliminate (use of) AccumuloConfiguration.getSiteConfiguration()
    * [ACCUMULO-2994] - IteratorUtil.parseIterConf loops over each iterator scope repeatedly
    * [ACCUMULO-3045] - Support AuthenticationToken backed by CredentialProvider
    * [ACCUMULO-3049] - Include user authentication in AuditedSecurityOperation
    * [ACCUMULO-3050] - Client IP is not included in audit message
    * [ACCUMULO-3052] - Allow configuration of SSL cipher suites
    * [ACCUMULO-3053] - Allow control over Monitor SSL ciphers used
    * [ACCUMULO-3059] - Password arguments not always respected by CertUtils
    * [ACCUMULO-3064] - Allow SSL to be used for all ITs
    * [ACCUMULO-3066] - Allow CredentialProviders to be used with ClientConfiguration
    * [ACCUMULO-3068] - Allow ITs to be run with CredentialProvider
    * [ACCUMULO-3087] - start-server.sh should check fqdn and shortname to determine if SSH Is needed
    * [ACCUMULO-3097] - Missing documentation on some system iterators
    * [ACCUMULO-3106] - "Check for long GC pauses" warning message needs improvement



** Task
    * [ACCUMULO-1691] - Update thrift to 0.9.1 / clean up TServerUtils
    * [ACCUMULO-2804] - Eliminate use of plexus-utils
    * [ACCUMULO-2805] - Exclude unused HTTP Components from thrift dependency
    * [ACCUMULO-3060] - Remove Experimental annotations from monitor SSL keystore/truststore
    * [ACCUMULO-3063] - Plugin execution errors in Eclipse Luna
    * [ACCUMULO-3072] - Split CreateAndUseIT "tests" into multiple methods
    * [ACCUMULO-3073] - DeleteTableduringSplitIT fails
    * [ACCUMULO-3080] - Remove debug logging from maven-invoker-plugin


** Test
    * [ACCUMULO-2649] - Extend test coverage for RangeInputSplit
    * [ACCUMULO-2754] - Skip generated code in PMD/CPD analysis
    * [ACCUMULO-2865] - Create unit test for ZooCache
    * [ACCUMULO-3128] - ZooKeeper spam in test logs
    * [ACCUMULO-3129] - SslWithClientAuthIT fails with credential provider active


Release Notes - Accumulo - Version 1.6.0

** Sub-task
    * [ACCUMULO-656] - move monitor code out of server
    * [ACCUMULO-1029] - Remove unnecessary svn:ignore items
    * [ACCUMULO-1132] - Use a concrete implementation of AuthenticationToken for !SYSTEM user
    * [ACCUMULO-1218] - document the recovery from a failed zookeeper
    * [ACCUMULO-1219] - document recovery when a file is missing
    * [ACCUMULO-1220] - document steps to recover when a WAL is corrupted or missing
    * [ACCUMULO-1270] - Require license checks on every build
    * [ACCUMULO-1367] - Instance name and ports in MiniAccumuloCluster should be configurable
    * [ACCUMULO-1368] - Create main() method on MiniAccumuloCluster for firing it up from the command line.
    * [ACCUMULO-1372] - Merge bigNumber() and humanReadableBytes() methods and put in a core utility class.
    * [ACCUMULO-1383] - Add javadoc for lexicoders
    * [ACCUMULO-1388] - Allow users to configure memory used by MiniAccumulo processes
    * [ACCUMULO-1390] - Document how to use single node Accumulo
    * [ACCUMULO-1409] - Make MiniAccumuloCluster support native maps
    * [ACCUMULO-1412] - Allow shell password to come from a variety of sources
    * [ACCUMULO-1431] - Clean-up/Simplify .gitignore
    * [ACCUMULO-1458] - Create a mapred example for token file
    * [ACCUMULO-1479] - Create per-user permissions for a given table namespace
    * [ACCUMULO-1482] - Put provided tables in their own (system) namespace
    * [ACCUMULO-1484] - Create node in per-table configuration hierarchy for table namespaces
    * [ACCUMULO-1486] - Handle removal of sync method
    * [ACCUMULO-1487] - Package javadocs for monitor better, or not at all
    * [ACCUMULO-1491] - Stop packaging html pages with the monitor
    * [ACCUMULO-1502] - Add Trace Table docs to user manual
    * [ACCUMULO-1516] - Clean up Constants
    * [ACCUMULO-1517] - Add config.html, created by mvn docs profile) to Accumulo website.
    * [ACCUMULO-1530] - Provide upgrade path to two system metadata tables
    * [ACCUMULO-1537] - convert auto tests to integration tests, where possible for continuous integration
    * [ACCUMULO-1564] - Fix typo in MiniAccumuloCluster-related code: JDWP, not JWDP.
    * [ACCUMULO-1579] - project iterators unavailable in accumulo-maven-plugin
    * [ACCUMULO-1580] - Clean existing mini directory if it already exists with the same name
    * [ACCUMULO-1598] - RFileTest encrypted file tests
    * [ACCUMULO-1601] - servers do not obey binding hint (--address)
    * [ACCUMULO-1608] - collect stats when processing conditional mutations
    * [ACCUMULO-1611] - Add conditional writer to proxy
    * [ACCUMULO-1613] - Document conditional writer
    * [ACCUMULO-1614] - Create random walk test that use conditional writer
    * [ACCUMULO-1620] - audit can spam the logs
    * [ACCUMULO-1627] - Add hashcode() and equals() to ConditionalMutation
    * [ACCUMULO-1654] - Bug in encryption-at-rest causes periodic IOExceptions
    * [ACCUMULO-1674] - Use Credentials to clean up internals of mapreduce configuration
    * [ACCUMULO-1688] - Ensure ZooLock.watchParent is properly set in case of Connection loss
    * [ACCUMULO-1712] - Remove special characters from path names of metadata tables
    * [ACCUMULO-1713] - defer deleting _tmp files to recovery-likely scenarios
    * [ACCUMULO-1715] - extract user permissions in dump command
    * [ACCUMULO-1729] - ThriftTransport pool does not include ssl options in cache key
    * [ACCUMULO-1741] - Clean up setters in the InputFormatBase API to take tables and properties all at once.
    * [ACCUMULO-1746] - Adjust Analytics documentation for new multi-table input format configuration
    * [ACCUMULO-1747] - ServerConstants.getBaseDirs() use fs default name, not instance.dfs.uri
    * [ACCUMULO-1751] - SimpleMacIT test for Multitable Input Format
    * [ACCUMULO-1761] - Get disk usage will not work across namenodes
    * [ACCUMULO-1762] - Offline map reduce will fail if tablet spans multiple namenodes
    * [ACCUMULO-1763] - RFile printinfo command does not handle multiple namenodes
    * [ACCUMULO-1764] - Monitor collects disk usage from single namenode
    * [ACCUMULO-1765] - Bulk import does sanity checks on client side using a single filesystem
    * [ACCUMULO-1766] - Changing Accumulo config can prevent locating root table files.
    * [ACCUMULO-1767] - Analyze all usages of instance.dfs.uri and instance.volumes
    * [ACCUMULO-1768] - Add synchronous on/offline to proxy
    * [ACCUMULO-1771] - Instance id and version info only stored on one hdfs instance
    * [ACCUMULO-1772] - Need utility to decommission dfs uris
    * [ACCUMULO-1773] - Garbage collector may delete referenced files after upgrade
    * [ACCUMULO-1794] - Add tests that flex Hadoop 2 features
    * [ACCUMULO-1806] - continuous ingest scripts need to be smarter
    * [ACCUMULO-1808] - Create compaction strategy that has  size limit
    * [ACCUMULO-1825] - MiniAccumuloClusterGCTest fails with hadoop2 after other modules
    * [ACCUMULO-1831] - Write ahead logs from upgrade prematurely GCed
    * [ACCUMULO-1832] - Create utility for rewriting uris
    * [ACCUMULO-1857] - Update README
    * [ACCUMULO-1888] - WALog entries not properly deleted after recovery during upgrade 1.5 -> 1.6
    * [ACCUMULO-1906] - Remove namespace operations that operate on the tables they contain
    * [ACCUMULO-1907] - Prevent renaming tables between namespaces
    * [ACCUMULO-1909] - Adding list of conditions to conditional mutation is cumbersome.
    * [ACCUMULO-1966] - Clone table has race condition when excluding namespace properties
    * [ACCUMULO-2011] - LaTeX broken by ACCUMULO-1956
    * [ACCUMULO-2044] - Accumulo fails when instance.volumes and fs.default.name are disjoint
    * [ACCUMULO-2048] - WAL GC fails with viewfs:// and two namenodes
    * [ACCUMULO-2049] - shell fails with viewfs:// and two namenodes
    * [ACCUMULO-2050] - log recovery fails when using two namenodes and viewfs://
    * [ACCUMULO-2051] - Can't write to accumulo when using viewfs://
    * [ACCUMULO-2052] - Recommend using viewfs:// or HA Namenode
    * [ACCUMULO-2061] - Deprecate instance.dfs.uri and instance.dfs.dir
    * [ACCUMULO-2062] - general.volume.chooser has no environment
    * [ACCUMULO-2072] - Log recovery is converting paths to relative
    * [ACCUMULO-2079] - Should not be able to create table in system namespace (accumulo)
    * [ACCUMULO-2080] - Active walogs deleted when using viewfs
    * [ACCUMULO-2094] - prepareNewTableState stores namespaceName instead of namespaceId
    * [ACCUMULO-2114] - default namespace name should be part of the public api
    * [ACCUMULO-2123] - Lower default for tfile.fs.input.buffer.size
    * [ACCUMULO-2195] - Bulk import fails with viewfs://
    * [ACCUMULO-2248] - concurrent RW test fails trying to create tables in non-existent namespaces
    * [ACCUMULO-2291] - Update CheckForMetadataProblems to check root table
    * [ACCUMULO-2355] - Shell should not log UserInterruptedException
    * [ACCUMULO-2421] - Tables utility should explain which table failed if the regex fails
    * [ACCUMULO-2438] - deleting all table rows caused tablet load failure
    * [ACCUMULO-2444] - Add unit tests to o.a.a.core.security
    * [ACCUMULO-2451] - updateAccumuloVersion only updates the data version on a single configured volume
    * [ACCUMULO-2456] - NamespacesIT.verifyIteratorInheritance
    * [ACCUMULO-2457] - SimpleProxyIT fails to find a scanner using {{getActiveScans}}
    * [ACCUMULO-2458] - BloomFilterIT fails to find improved performance
    * [ACCUMULO-2465] - Improve unit test coverage on Iterators
    * [ACCUMULO-2468] - Improve unit test coverage on o.a.a.core.data
    * [ACCUMULO-2472] - Update README Public API to include compare and set classes
    * [ACCUMULO-2475] - tablet is both assigned and hosted
    * [ACCUMULO-2476] - unexpected constraint violation
    * [ACCUMULO-2492] - test.NamespacesIT.verifyIteratorInheritance fails
    * [ACCUMULO-2503] - Add unit tests for o.a.a.core.util.format
    * [ACCUMULO-2504] - Copying failed bulk imports seems broken
    * [ACCUMULO-2507] - HalfDeadTServerIT.testTimeout fails to lose session
    * [ACCUMULO-2527] - Suppress expected deprecation warnings from instance.dfs.{dir,uri}
    * [ACCUMULO-2531] - Update ClientOpts to read from volumes or instance dir
    * [ACCUMULO-2532] - FileUtil expects instance.dfs.dir in tmpDir path
    * [ACCUMULO-2534] - README's converted to markdown do not contain copyright headers
    * [ACCUMULO-2541] - ScannerIT.testScannerReadaheadConfiguration
    * [ACCUMULO-2547] - LargeRowIT.basicTest times out
    * [ACCUMULO-2551] - Add read-only access to Fate
    * [ACCUMULO-2555] - DeleterFormatterTest.testNoConfirm fails
    * [ACCUMULO-2569] - ExamplesIT.testAgeoffFilter times out
    * [ACCUMULO-2584] - ShellServerIT.listscans fails
    * [ACCUMULO-2585] - WriteAheadLogIT.test times out
    * [ACCUMULO-2605] - TServerUtilsTest.testStopTServer_ES fails with class not found
    * [ACCUMULO-2620] - org.apache.accumulo.core.client.TableExistsException: Table run exists
    * [ACCUMULO-2680] - BackupMasterIT timing too tight
    * [ACCUMULO-2715] - [FindBugs] Bad comparison of int with 0x7fffffffffffffffL
    * [ACCUMULO-2718] - [FindBugs] Confusing both setup() and setUp() methods in AuditMessageIT
    * [ACCUMULO-2720] - [FindBugs] HTTP response splitting vulnerabilities in the OperationServlet
    * [ACCUMULO-2728] - [FindBugs] Bad random number generation in VolumeUtil

** Bug
    * [ACCUMULO-324] - System/site constraints and iterators should NOT affect the METADATA table
    * [ACCUMULO-335] - Can't batchscan over the !METADATA table
    * [ACCUMULO-829] - Input Format puts passwords in Configuration, which is world readable
    * [ACCUMULO-1018] - Client does not give informative message when user can not read table
    * [ACCUMULO-1042] - Ctrl-C in shell terminates the process
    * [ACCUMULO-1051] - Authorizations has inconsistent serialization
    * [ACCUMULO-1144] - ThriftScanner ScanState.tableName is really the tableId
    * [ACCUMULO-1163] - Throw TableDeletedException
    * [ACCUMULO-1193] - shell history command does not paginate
    * [ACCUMULO-1287] - the master column on the master status page has no documentation
    * [ACCUMULO-1312] - Don't cache credentials in client-side Connector
    * [ACCUMULO-1326] - ShellTest.authsTests failing in trunk.
    * [ACCUMULO-1345] - Provide feedback that a compaction is "stuck"
    * [ACCUMULO-1356] - shell tables command does not paginate
    * [ACCUMULO-1379] - PermGen leak
    * [ACCUMULO-1382] - Pair incorrectly assumes its components are Comparable
    * [ACCUMULO-1407] - Fix documentation for deleterows
    * [ACCUMULO-1410] - ZooSession.connect barely adheres to timeout
    * [ACCUMULO-1428] - Document native maps
    * [ACCUMULO-1434] - NullPointerException thrown by ColumnVisibility#flatten() with empty visibility
    * [ACCUMULO-1435] - Examples functional test fails when sources are not in the run directory
    * [ACCUMULO-1456] - isInSafeMode ignores passed in FileSystem
    * [ACCUMULO-1464] - Services don't bind to specified --address parameter
    * [ACCUMULO-1470] - logger.dir.walog description should say that the WAL is stored on the "HDFS filesystem"
    * [ACCUMULO-1471] - SortedMapIterator.seek() doesn't respect columnFamilies
    * [ACCUMULO-1472] - MiniAccumulo cluster improperly configures classpaths
    * [ACCUMULO-1474] - Mock merge throws concurrent modification exception
    * [ACCUMULO-1492] - bin/accumulo should follow symbolic links
    * [ACCUMULO-1500] - RAT check fails to ignore .git directory
    * [ACCUMULO-1505] - MockTable's addMutation does not check for empty mutation
    * [ACCUMULO-1513] - Shell du command doesn't work unless in table context
    * [ACCUMULO-1514] - AccumuloVFSClassloader incorrectly treats folders as folders of jar files
    * [ACCUMULO-1518] - FileOperations expects RFile filenames to contain only 1 dot.
    * [ACCUMULO-1520] - Misc functional test fixes
    * [ACCUMULO-1523] - property GENERAL_MAX_MESSAGE_SIZE is configured as "tserver.server.message.size.max"
    * [ACCUMULO-1529] - FormatterCommandTest fails in Eclipse
    * [ACCUMULO-1536] - load average on monitor page is an integer
    * [ACCUMULO-1538] - In Test module, org.apache.accumulo.test.functional.FunctionalTestUtils is missing license header.
    * [ACCUMULO-1556] - Initialize could use a better warning when HDFS dir is already populated
    * [ACCUMULO-1558] - Importtable writes file column entries with a filename of "null"
    * [ACCUMULO-1563] - Have BulkSplitOptimization and Compaction functional tests not write to hdfs root dir.
    * [ACCUMULO-1565] - Clonetable with excluded properties causes a NullPointerException
    * [ACCUMULO-1567] - false error message "tablet overlaps previously assigned tablet"
    * [ACCUMULO-1572] - single node zookeeper failure kills connected accumulo servers
    * [ACCUMULO-1577] - accumulo-site.xml cannot be loaded from $ACCUMULO_CONF_DIR
    * [ACCUMULO-1584] - ACCUMULO_CONF_DIR not respected for accumulo-metrics.xml
    * [ACCUMULO-1586] - If initial port binding fails, ThriftMetrics MBean is never registered for subsequently bound TServer
    * [ACCUMULO-1587] - Grep appears to ignore -o option to write to a file.
    * [ACCUMULO-1593] - Looking up instanceName in ZK doesn't use consistent encoding
    * [ACCUMULO-1595] - remove code related to mlock: it is no longer supported
    * [ACCUMULO-1605] - stack overflow MilliSpan.java:113
    * [ACCUMULO-1616] - Incorrect use of getCanonicalName in BloomFilterLayer code (and others)
    * [ACCUMULO-1618] - No ability to disable trash for root tablet & WAL
    * [ACCUMULO-1626] - Mutation equals() method does not always work
    * [ACCUMULO-1629] - Files in cloned table disappear when source deleted
    * [ACCUMULO-1630] - Accumulo gc cannot identify as non localhost address
    * [ACCUMULO-1631] - MiniAccumuloCluster's MiniDFS data directory is created relative to the working directory
    * [ACCUMULO-1637] - Update HDFS append/sync precondition check for Hadoop 1.2
    * [ACCUMULO-1650] - Make it easier to find and run admin commands
    * [ACCUMULO-1651] - GC removed WAL that master wasn't done with
    * [ACCUMULO-1661] - AccumuloInputFormat cannot fetch empty column family
    * [ACCUMULO-1668] - MiniAccumuloCluster doesn't properly support multiple Hadoop versions
    * [ACCUMULO-1672] - org.apache.accumulo.proxy.SimpleTest failing
    * [ACCUMULO-1673] - Mikstake in 1.5 Manual section 7.3 Indexing
    * [ACCUMULO-1681] - Adjust Authorizor Interface to validate auths instead of retrieving a list
    * [ACCUMULO-1683] - remove references to com.yahoo.zookeeper from logging configuration files
    * [ACCUMULO-1685] - bench testing shows that the NN loses the WAL
    * [ACCUMULO-1694] - ZooKeeperInstance constructor should avoid throwing RuntimeExceptions
    * [ACCUMULO-1696] - deep copy in the compaction scope iterators can throw off the stats
    * [ACCUMULO-1698] - stop-here doesn't consider system hostname
    * [ACCUMULO-1700] - IndexedDocIterator incorrectly declares some variables as static
    * [ACCUMULO-1714] - Do we need to take care of crypto based export control policy?
    * [ACCUMULO-1724] - conflicting commons-logging imports in root pom
    * [ACCUMULO-1730] - ColumnVisibility parse tree nodes do not have correct location offsets for AND and OR nodes
    * [ACCUMULO-1732] - Resolve table name to table id once in Accumulo input format
    * [ACCUMULO-1734] - Mutation is hard to check in unit tests
    * [ACCUMULO-1735] - test ShutdownIT#stopDuringStart sometimes times out
    * [ACCUMULO-1743] - Seeing unexpected trace output
    * [ACCUMULO-1752] - MAC start() method should timeout when it can't connect to Zookeeper
    * [ACCUMULO-1774] - DevNull iterator documentation is incorrect
    * [ACCUMULO-1775] - zooCacheTest fails due to missing /tmp/zcTest-42
    * [ACCUMULO-1776] - MiniAccumuloCluster has ConcurrentModificationException
    * [ACCUMULO-1781] - MiniAccumuloRunner to support miniDFS in property file
    * [ACCUMULO-1784] - Failing tests again hadoop-2.2.0
    * [ACCUMULO-1786] - MiniAccumuloClusterGCTest fails if GC is already running
    * [ACCUMULO-1788] - CleanTmpIT test is failing against hadoop 2.2.0
    * [ACCUMULO-1791] - status command for init.d script doesn't work with service command
    * [ACCUMULO-1803] - remove test/system/auto
    * [ACCUMULO-1809] - ContinuousMoru does not run under hadoop 2.0
    * [ACCUMULO-1812] - continuous ingest seeing log message and stack trace about log file closure
    * [ACCUMULO-1814] - LogSorter cannot read WAlogs from 1.5
    * [ACCUMULO-1819] - NativeMap Makefile doesn't work with newest OSX/Xcode
    * [ACCUMULO-1823] - Test failures after switching to Hadoop2
    * [ACCUMULO-1830] - illegal state in RestartStressIT
    * [ACCUMULO-1837] - Fix JS error in jquery.flot.js
    * [ACCUMULO-1839] - $ACCUMULO_CONF_DIR isn't respected everywhere
    * [ACCUMULO-1841] - Accumulo tarball doesn't include necessary jars
    * [ACCUMULO-1842] - `accumulo init` invokes the wrong class
    * [ACCUMULO-1843] - NativeMap Makefile creates incorrect output file for OSX
    * [ACCUMULO-1846] - Spurious ClassNotFoundException
    * [ACCUMULO-1848] - Failed to build Accumulo Maven Plugin with error: package org.apache.http.annotation does not exist
    * [ACCUMULO-1852] - nativeMap test doesn't run on OS X
    * [ACCUMULO-1854] - AccumuloInputFormat can be less strict about contents of Configuration
    * [ACCUMULO-1859] - Conditional Mutation with 1000 conditions is slow.
    * [ACCUMULO-1860] - NativeMapIT fails
    * [ACCUMULO-1862] - BloomFilterIT fails due to timeout
    * [ACCUMULO-1866] - get rid of Instance.getConfiguration()
    * [ACCUMULO-1867] - Split failed during conditional randomwalk test
    * [ACCUMULO-1873] - start-all.sh's zookeeper version check is lacking
    * [ACCUMULO-1874] - NoSuchMethodError when compiling 1.7.0 Snapshot
    * [ACCUMULO-1876] - Problem using accumulo artifacts from ivy
    * [ACCUMULO-1881] - ShellConfigTest fails when run as root user
    * [ACCUMULO-1884] - NativeMap Makefile fails under OSX for 1.6.x and higher
    * [ACCUMULO-1889] - ZooKeeperInstance close method should mark instance closed.
    * [ACCUMULO-1891] - AccumuloSecurityException doesn't properly handle null error codes.
    * [ACCUMULO-1892] - examples.simple.RandomBatchWriter might not write the specified number of rowids
    * [ACCUMULO-1897] - Bug in MemKeyConversionIterator constructor
    * [ACCUMULO-1899] - cli.Help should return non-zero status on error parsing args
    * [ACCUMULO-1901] - start-here.sh starts only one GC process even if more are defined
    * [ACCUMULO-1903] - Monitor creates a new ZK object to fetch gc status and doesn't wait for it to connect.
    * [ACCUMULO-1905] - WALog is slow
    * [ACCUMULO-1908] - Spurious ShellServerTest failures
    * [ACCUMULO-1911] - zookeeper polled too frequently
    * [ACCUMULO-1914] - MetadataTableUtil.removeUnusedEntries() should use one mutation
    * [ACCUMULO-1917] - ClientConfiguration needs javadocs
    * [ACCUMULO-1920] - monitor not seeing zookeeper updates
    * [ACCUMULO-1921] - NPE in tablet assignment
    * [ACCUMULO-1922] - randomwalk test fails: unable to find accumulo-server.jar
    * [ACCUMULO-1925] - Various system test pieces missing ACCUMULO_CONF_DIR
    * [ACCUMULO-1930] - classpath example is not in the examples integration test
    * [ACCUMULO-1936] - SimpleTest test cases occasionally fail
    * [ACCUMULO-1937] - Thread "tablet assignment 1" died overlaps assigned (tablet) true [] [] []
    * [ACCUMULO-1939] - Saw ConcurrentModificationException on Mini shutdown
    * [ACCUMULO-1940] - Data file in !METADATA differs from in memory data
    * [ACCUMULO-1941] - TabletIT test fails
    * [ACCUMULO-1943] - NPE on randomwalk test
    * [ACCUMULO-1947] - dfs.datanode.synconclose check is lacking
    * [ACCUMULO-1951] - start-here.sh and stop-here.sh throw errors on OS X
    * [ACCUMULO-1953] - MultiTableBatchWriterTest.testOfflineTable failed
    * [ACCUMULO-1958] - Range constructor lacks key checks, should be non-public
    * [ACCUMULO-1959] - Value constructors taking ByteBuffers need refinement
    * [ACCUMULO-1965] - Invalid table names (& namespaces) should have dedicated error codes
    * [ACCUMULO-1967] - magitator should respect presence or lack of gc file
    * [ACCUMULO-1968] - The FileDataIngest example creates MD5 hash keys, but the javadoc says it creates SHA1 hash keys.
    * [ACCUMULO-1970] - Namespaces need to create appropriate exceptions
    * [ACCUMULO-1976] - Need to upgrade to new namespaces
    * [ACCUMULO-1978] - Compaction warning on fresh install
    * [ACCUMULO-1980] - stop-here not accepting localhost
    * [ACCUMULO-1983] - missing init.d scripts
    * [ACCUMULO-1985] - Cannot bind monitor on remote host to all interfaces
    * [ACCUMULO-1986] - Validity checks missing for readFields and Thrift deserialization
    * [ACCUMULO-1987] - Incorrect handling of auth byte sequences in TabletServer
    * [ACCUMULO-1989] - Can't configure (default) namespace parameters from shell
    * [ACCUMULO-1990] - (default) namespace should not have iterators defined on it by default
    * [ACCUMULO-1993] - proxy classes conflict with Ruby system classes
    * [ACCUMULO-1994] - proxy does not handle Key timestamps correctly
    * [ACCUMULO-1997] - Perform validation on ACCUMULO_HOME
    * [ACCUMULO-1998] - Encrypted WALogs seem to be excessively buffering
    * [ACCUMULO-2009] - ExamplesIT fails with Hadoop 1.2.1
    * [ACCUMULO-2012] - Cloning the metadata table fails with faulty error
    * [ACCUMULO-2013] - Cloning tables results in errors from the master
    * [ACCUMULO-2022] - listiter lacks --all flag
    * [ACCUMULO-2024] - environment variables not being substituted in conf paths properly
    * [ACCUMULO-2025] - MiniAccumuloClusterTest failure
    * [ACCUMULO-2028] - NPE seen balancing tablets
    * [ACCUMULO-2029] - cannot clear root table problem reports
    * [ACCUMULO-2032] - GC doesn't respect instance SSL configuration
    * [ACCUMULO-2035] - NamespaceITs failing
    * [ACCUMULO-2036] - Mappers are not running locally
    * [ACCUMULO-2037] - Tablets not assigned to last location
    * [ACCUMULO-2042] - Scalability test does not run
    * [ACCUMULO-2047] - Failures when using two namenodes and viewfs://
    * [ACCUMULO-2054] - Concurrent random walk test fails
    * [ACCUMULO-2056] - NotSerializableException: com.google.common.net.HostAndPort
    * [ACCUMULO-2057] - found two last locations for the same extent
    * [ACCUMULO-2063] - HadoopLogCloser gives wrong class name in exception
    * [ACCUMULO-2065] - Broke log-forwarding with monitor binding to 0.0.0.0
    * [ACCUMULO-2067] - Cannot click through 'accumulo.root' table link in "Table List" view.
    * [ACCUMULO-2068] - Remove deprecration warning on specifying a password with shell
    * [ACCUMULO-2073] - ConditionalWriterIT missing timeouts
    * [ACCUMULO-2074] - IndexOutOfBoundsException
    * [ACCUMULO-2075] - Bulk random walk test jams
    * [ACCUMULO-2078] - ACCUMULO_LOG_HOST is incorrectly computed
    * [ACCUMULO-2082] - Major compacting files not empty
    * [ACCUMULO-2085] - Concurrent Randomwalk fails on namespace
    * [ACCUMULO-2086] - NPE on Security Randomwalk with Namespaces
    * [ACCUMULO-2087] - Tables.getNamespaces NPE's on missing table ID
    * [ACCUMULO-2088] - MasterClient.execute() eats table exceptions
    * [ACCUMULO-2090] - Concurrent random walk test fails to rename table
    * [ACCUMULO-2091] - Concurrent random walk fails to rename across namespaces
    * [ACCUMULO-2092] - Seeing spurious error message about namespace that does not exist
    * [ACCUMULO-2093] - Table listing puts creating/deleting tables in default namespace
    * [ACCUMULO-2096] - randomwalk AlterTable uses table name instead of ID
    * [ACCUMULO-2101] - Makefile overwrites JAVA_HOME from env
    * [ACCUMULO-2102] - ShellSetInstanceTest failures on clean system
    * [ACCUMULO-2104] - [RW] Image failed on writing to a non-existent table
    * [ACCUMULO-2105] - [RW] Multitable.CopyTable failed from using a closed ZooKeeperInstance
    * [ACCUMULO-2106] - [RW] Multitable.Write failed writing to non-existent table
    * [ACCUMULO-2110] - [RW] Error in Bulk.Verify
    * [ACCUMULO-2112] - master does not balance after intermittent communication failure
    * [ACCUMULO-2117] - ClassLoaderIT fails
    * [ACCUMULO-2121] - Rename client.instance.name to instance.name
    * [ACCUMULO-2124] - fix minor typos and spelling in ARS
    * [ACCUMULO-2125] - Update to guava 15
    * [ACCUMULO-2127] - example accumulo-site.xmls put Hadoop 2 jars ahead of Accumulo jars on classpath
    * [ACCUMULO-2128] - Provide resource cleanup via static utility rather than Instance.close
    * [ACCUMULO-2134] - SimpleProxyIT fails on TableNotFoundException
    * [ACCUMULO-2142] - GC doesn't advertise its port
    * [ACCUMULO-2146] - typo in continuous-env.sh.example
    * [ACCUMULO-2154] - NoNodeException error in master
    * [ACCUMULO-2161] - Unable to migrate from 1.5.0 to 1.6.0
    * [ACCUMULO-2162] - Fresh installs report a lot of VFS warnings from scripts
    * [ACCUMULO-2165] - maven-plugin's classpath is not assembled similarly to a real accumulo or mac
    * [ACCUMULO-2167] - remove deprecation from ZooKeeperInstance(String, String) constructor
    * [ACCUMULO-2168] - WriteAheadLogIT failed
    * [ACCUMULO-2172] - Concurrent compactions before machine failure may cause uneeded recovery
    * [ACCUMULO-2173] - Do not use absolute paths when comparing files
    * [ACCUMULO-2174] - VFS Classloader has potential to collide localized resources
    * [ACCUMULO-2176] - ExecfileCommand#execute() should close scanner
    * [ACCUMULO-2179] - CreateTableCommand#execute() should close Scanner
    * [ACCUMULO-2183] - [RW] Error in Security.Validate
    * [ACCUMULO-2184] - "Unknown" HDFS usage on monitor
    * [ACCUMULO-2192] - start-stats.sh isn't using the script boilerplate properly
    * [ACCUMULO-2194] - Back-to-back Security randomwalk tests fail
    * [ACCUMULO-2196] - ConfigurableMacIT tests should each use their own dirs
    * [ACCUMULO-2198] - Concurrent randomwalk fails with unbalanced servers
    * [ACCUMULO-2202] - Bloom loader missleading ERROR
    * [ACCUMULO-2206] - close consistency check failure
    * [ACCUMULO-2208] - Provide better error handling when unable to cleanly close log
    * [ACCUMULO-2209] - Rename DefaultKeyEncryptionStrategy to something more descriptive
    * [ACCUMULO-2210] - socket should be closed in MiniAccumuloClusterImpl#start()
    * [ACCUMULO-2211] - Security randomwalk fails "User doesn't exist and they SHOULD"
    * [ACCUMULO-2213] - tracer reports: IllegalStateException: Closed
    * [ACCUMULO-2220] - CloudStone Benchmarks do not respect ACCUMULO_CONF_DIR
    * [ACCUMULO-2221] - CloudStone Benchmarks should accept ZKs as parameter
    * [ACCUMULO-2224] - ZooSession should be more robust to transient DNS issues
    * [ACCUMULO-2225] - Need to better handle DNS failure propagation from Hadoop
    * [ACCUMULO-2226] - Wrong property name in user manual, section 11.5.4
    * [ACCUMULO-2230] - Can't run offline CI verification
    * [ACCUMULO-2233] - Continuous Verify job should find ranges on cloned table
    * [ACCUMULO-2234] - Cannot run offline mapreduce over non-default instance.dfs.dir value
    * [ACCUMULO-2235] - 'du' shell command doesn't work when not in a table
    * [ACCUMULO-2237] - mapred-setup.sh emits error, still works
    * [ACCUMULO-2245] - Bump maven plugin versions due to failures building maven site
    * [ACCUMULO-2246] - values returned by MiniAccumuloConfig getters can change w/o set
    * [ACCUMULO-2260] - createnamespace option should not copy config from a table
    * [ACCUMULO-2261] - duplicate locations
    * [ACCUMULO-2265] - Typo in TabletServer.java's copyright
    * [ACCUMULO-2266] - TServer should ensure wal settings are valid for underlying FS
    * [ACCUMULO-2270] - bulk import thread pool initialized in non-static method.
    * [ACCUMULO-2289] - Correct Tables.getNamespace to clarify namespace name or ID
    * [ACCUMULO-2293] - AccumuloSecurityException might be thrown instead of TableNotFoundException on flush or clone
    * [ACCUMULO-2295] - Various ITs timing too sensitive
    * [ACCUMULO-2297] - Additional unnecessary member on InputFormatBase
    * [ACCUMULO-2298] - ExamplesIT should be chunked into several smaller tests
    * [ACCUMULO-2306] - SslWithClientAuthIT.bulk consistently fails in parallel
    * [ACCUMULO-2312] - NPE running Concurrent randomwalk
    * [ACCUMULO-2316] - Table based Security operations should throw Table not found exceptions over namespace not found
    * [ACCUMULO-2318] - Renaming table don't require namespace
    * [ACCUMULO-2319] - TabletServerResourceManager MemoryManagementFramework constructor starts threads
    * [ACCUMULO-2324] - DistributedWorkQueue#waitUntilDone() shouldn't synchronize on String object
    * [ACCUMULO-2329] - "egrep: /home/user/accumulo-1.5.1/conf/gc: No such file or directory"
    * [ACCUMULO-2331] - TableConfiguration should override invalidateCache
    * [ACCUMULO-2334] - Lacking fallback when ACCUMULO_LOG_HOST isn't set
    * [ACCUMULO-2344] - stack trace in shell when using grep
    * [ACCUMULO-2354] - Master does not close TabletServerBatchReader
    * [ACCUMULO-2360] - Need a way to configure TNonblockingServer.maxReadBufferBytes to prevent OOMs from network misbehavour
    * [ACCUMULO-2369] - AccumuloReloadingVFSClassLoaderTest failure
    * [ACCUMULO-2371] - cachedDataIndex.close() should be enclosed in finally block in BCFile#Reader()
    * [ACCUMULO-2382] - Using non-default CONTINUOUS_CONF_DIR breaks agitation
    * [ACCUMULO-2390] - TraceProxy.trace should not throw InvocationTargetException
    * [ACCUMULO-2391] - switching WALogs can cause scary traceback message
    * [ACCUMULO-2393] - DeleteTableDuringSplitIT failed
    * [ACCUMULO-2397] - MetadataIT has a race condition
    * [ACCUMULO-2398] - DynamicThreadPoolsIT sometimes fails
    * [ACCUMULO-2399] - BatchWalkers die when started before Ingesters
    * [ACCUMULO-2400] - race condition in ExamplesIT
    * [ACCUMULO-2401] - client code cannot create an RFile without logging a warning
    * [ACCUMULO-2404] - Main.main can log cleaner messages when underlying process has errors
    * [ACCUMULO-2405] - Race condition in MetadataIT.mergeMeta()
    * [ACCUMULO-2406] - GarbageCollectorIT.dontGCRootLog() fails
    * [ACCUMULO-2408] - metadata table not assigned after root table is loaded
    * [ACCUMULO-2412] - MergeIT fails
    * [ACCUMULO-2418] - replace empty loops in tests with simple count method
    * [ACCUMULO-2422] - Backup master can miss acquiring lock when primary exits
    * [ACCUMULO-2425] - ConcurrentModificationException in master at startup
    * [ACCUMULO-2428] - Improper handling of rename in root tablet file management
    * [ACCUMULO-2429] - Shell does not clean up JLine ConsoleReader, leaks threads
    * [ACCUMULO-2437] - Cannot create splits with MSBit set in MSByte via API
    * [ACCUMULO-2440] - VolumeManagerImpl.create doesn't set bufferSize on 0
    * [ACCUMULO-2447] - Shell#printHelp should use the ConsoleReader to print
    * [ACCUMULO-2453] - NoClassDefFound building against Hadoop1 in ShellServerTest
    * [ACCUMULO-2460] - Experimental properties no longer hidden from DefaultConfiguration
    * [ACCUMULO-2484] - BulkIT and SslIT might collide bulk import directories
    * [ACCUMULO-2487] - Value implementation provides conflicting statements
    * [ACCUMULO-2489] - NPE in split tablet
    * [ACCUMULO-2494] - Stat calculation of STDEV may be inaccurate
    * [ACCUMULO-2512] - MAC stop should waitFor processes
    * [ACCUMULO-2513] - Inconsistent use of getBytes in MetadataTableUtil
    * [ACCUMULO-2515] - NamespaceConfiguration doesn't invalidateCache
    * [ACCUMULO-2519] - FATE operation failed across upgrade
    * [ACCUMULO-2520] - Garbage collector deleted everything when given bad input
    * [ACCUMULO-2523] - TabletTime.maxMetadataTime NPE if both arguments are null
    * [ACCUMULO-2524] - ProblemReport needs to check for nulls on construction
    * [ACCUMULO-2526] - Top level files in tarball should be 644, not 755
    * [ACCUMULO-2539] - SummingCombiner does not adhere to Combiner#COLUMNS_OPTION
    * [ACCUMULO-2540] - Public API declaration misstates the package for MAC
    * [ACCUMULO-2544] - Incorrect boundry matching for MockTableOperations.deleteRows
    * [ACCUMULO-2586] - RangeInputSplit package name changed
    * [ACCUMULO-2617] - locationByProgram incorrectly computes JAVA_HOME
    * [ACCUMULO-2631] - Excessively large number of minutes for trace page prints exception
    * [ACCUMULO-2648] - AccumuloInputFormat referencing incorrect RangeInputSplit
    * [ACCUMULO-2651] - Maven build error running rat check
    * [ACCUMULO-2659] - Incompatible API changes in 1.6.0
    * [ACCUMULO-2660] - InvocationTargetException during ContinuousIngest
    * [ACCUMULO-2665] - NoClassDefFound building against Hadoop 2.4.0
    * [ACCUMULO-2667] - annoying log message
    * [ACCUMULO-2668] - slow WAL writes
    * [ACCUMULO-2671] - BlockedOutputStream can hit a StackOverflowError
    * [ACCUMULO-2675] - TestClientOpts is creating files in /tmp
    * [ACCUMULO-2682] - README has duplicate synconclose paragraphs
    * [ACCUMULO-2686] - MiniAccumuloClusterImpl should be since 1.6.0
    * [ACCUMULO-2690] - DfsLogger outputstream short circuiting is never satisfied.
    * [ACCUMULO-2695] - Failure while running conditional RW test w/ agitation
    * [ACCUMULO-2700] - SecurityOperation.authenticateSystemUser fails to properly validate system user
    * [ACCUMULO-2713] - Instance secret written out with other configuration items to RFiles and WALogs when encryption is turned on
    * [ACCUMULO-2714] - Integration test classpath issues with Guava
    * [ACCUMULO-2716] - Duplicate connection loss logging in Writer
    * [ACCUMULO-2717] - multiTableTest is timing out
    * [ACCUMULO-2723] - orphaned monitor test
    * [ACCUMULO-2729] - Conditional RW test not checking status
    * [ACCUMULO-2730] - assigned tablets in DELETING state are not deleted
    * [ACCUMULO-2733] - Credentials is missing deserializer to match Thrift serializer
    * [ACCUMULO-2742] - History command incorrectly numbers commands
    * [ACCUMULO-2748] - MockTableOperations.deleteRow does not handle null for start or end keys
    * [ACCUMULO-2749] - 1.6.0RC4 slower than 1.5.1
    * [ACCUMULO-2752] - Missing getZooKeeperPort on AccumuloConfig interface
    * [ACCUMULO-2756] - multiTableTest is timing out

** Improvement
    * [ACCUMULO-112] - Investigate partitioning in memory map by locality group
    * [ACCUMULO-118] - accumulo could work across HDFS instances, which would help it to scale past a single namenode
    * [ACCUMULO-466] - add a default constraint to limit the size of keys
    * [ACCUMULO-527] - Shell should have way to specify instance name while using ZK hosts from configuration
    * [ACCUMULO-748] - Optionally Sort tables by ID and paginate
    * [ACCUMULO-842] - Fate operations should be rolled into shell
    * [ACCUMULO-891] - Authorizations not actually immutable
    * [ACCUMULO-935] - Run/Assemble Accumulo from Maven outside the source tree
    * [ACCUMULO-958] - Support pluggable encryption in walogs
    * [ACCUMULO-980] - support pluggable codecs for RFile
    * [ACCUMULO-1069] - InstanceOperations get/set/remove Property methods are ambiguous
    * [ACCUMULO-1070] - Improve the auditing messages that are generated from the server.
    * [ACCUMULO-1152] - Add more sanity checks to limit the damage of multiple assignment
    * [ACCUMULO-1167] - add a mechanism to deprecate Properties
    * [ACCUMULO-1203] - add option to scan command to display dateString
    * [ACCUMULO-1217] - add notes on the recovery of accumulo from component failures to the user manual
    * [ACCUMULO-1222] - o.a.a.t.randomwalk.FrameworkTest#testXML throws exceptions and asserts nothing
    * [ACCUMULO-1295] - Genericize creating objects from properties
    * [ACCUMULO-1299] - VFS tests should not use hard coded DFS port
    * [ACCUMULO-1307] - Master need to shutdown fate
    * [ACCUMULO-1309] - IntersectingIterator.addSource has unecessary object creation
    * [ACCUMULO-1313] - Use annotations to filter/hide sensitive configuration properties when logging
    * [ACCUMULO-1335] - DU command should be available through the java API
    * [ACCUMULO-1347] - Accumulo Shell Does Not support comments
    * [ACCUMULO-1357] - Make debugging MiniAccumuloCluster easier
    * [ACCUMULO-1371] - Improve message in config.sh when HADOOP_PREFIX is not a directory.
    * [ACCUMULO-1375] - Update README files in proxy module.
    * [ACCUMULO-1393] - Removed code related to default ports in client code
    * [ACCUMULO-1394] - Allow RegExFilter subclass to call setNegate.
    * [ACCUMULO-1395] - Generate example configuration from template
    * [ACCUMULO-1396] - Add hidden configuration option for adding target/classes/* to classpath for developers
    * [ACCUMULO-1403] - setiter fails when given a sortedkeyvalueiterator
    * [ACCUMULO-1406] - Add option for all scopes to setiter
    * [ACCUMULO-1442] - Replace JLine with JLine2
    * [ACCUMULO-1451] - Make Compaction triggers extensible
    * [ACCUMULO-1452] - Automate cleanup of old rf_tmp files
    * [ACCUMULO-1468] - Document release procedures
    * [ACCUMULO-1469] - Set the native memory maps configuration parameter to false for non-native example configurations
    * [ACCUMULO-1478] - Refactor Shell To Use JCommander
    * [ACCUMULO-1481] - Root tablet in its own table
    * [ACCUMULO-1490] - Consolidate documentation
    * [ACCUMULO-1494] - add a "run user jar" command to accumulo start script
    * [ACCUMULO-1499] - Move sanity checks from MiniAccumuloCluster constructor into MiniAccumuloConfig.initialize method.
    * [ACCUMULO-1501] - Trace table should have an age-off filter by default
    * [ACCUMULO-1504] - IteratorSetting missing equals and hashCode methods
    * [ACCUMULO-1506] - update class references to work out of assemble/target... path
    * [ACCUMULO-1509] - 'Recent Logs' should be highlighted in yellow when only warnings are present.
    * [ACCUMULO-1526] - add option for xml report format so that functional tests runs can be used by jenkins ci
    * [ACCUMULO-1550] - Create ACCUMULO_CONF_DIR environment variable
    * [ACCUMULO-1554] - Use getKey() with Property.TRACE_TOKEN_PROPERTY_PREFIX in initialize method of MiniAccumuloConfig
    * [ACCUMULO-1562] - add a troubleshooting section to the user guide
    * [ACCUMULO-1566] - Add ability for client to start Scanner readahead immediately
    * [ACCUMULO-1576] - add CONTINUOUS_CONF_DIR environment variable for continuous ingest test
    * [ACCUMULO-1585] - Provide option for FQDN/verbatim data from config files of servers to be stored in ZooKeeper rather than resolved IP
    * [ACCUMULO-1599] - MacTest should use target for MiniAccumuloCluster
    * [ACCUMULO-1602] - put the KeyExtent in thread names for easier debugging
    * [ACCUMULO-1603] - Lack of permission to start Tracer doesn't log actual reason
    * [ACCUMULO-1633] - BatchWriter and variants don't assert maxMemory as a positive, non-zero value
    * [ACCUMULO-1634] - Confusing shutdown message via stop-all.sh
    * [ACCUMULO-1664] - Make all processes able to use random ports
    * [ACCUMULO-1667] - Allow On/Offline Command To Execute Synchronously
    * [ACCUMULO-1669] - User manual examples use two argument Mutation.put
    * [ACCUMULO-1677] - Native Maps to look in LD_LIBRARY_PATH  environment variable as possible location of compiled libs.
    * [ACCUMULO-1689] - Add option to run GC in MiniAccumuloCluster
    * [ACCUMULO-1699] - ZooKeeperInstance lazy load instanceId
    * [ACCUMULO-1704] - IteratorSetting missing (int,String,Class,Map) constructor
    * [ACCUMULO-1705] - Upgrade to JCommander 1.32
    * [ACCUMULO-1706] - Admin Utilities Should Respect EPIPE
    * [ACCUMULO-1707] - quote env variable expansion in the start script
    * [ACCUMULO-1709] - failing Master doesn't set exit code of process
    * [ACCUMULO-1710] - Verify data in proxy test
    * [ACCUMULO-1733] - Better error message on minicluster failure to initialize
    * [ACCUMULO-1778] - Create utility for retrieving monitor location
    * [ACCUMULO-1785] - Alter config.sh to optionally just verify environment instead of making changes
    * [ACCUMULO-1828] - Create script to run specific functional tests
    * [ACCUMULO-1833] - MultiTableBatchWriterImpl.getBatchWriter() is not performant for multiple threads
    * [ACCUMULO-1835] - Update test/system/auto/README for -f, -x, etc.
    * [ACCUMULO-1890] - MiniAccumloClusterGCTest failing on limited resource machine.
    * [ACCUMULO-1932] - Don't rely on Hadoop "convenience" scripts for agitator
    * [ACCUMULO-1933] - Make unit on memory parameters case-insensitive
    * [ACCUMULO-1945] - bin/accumulo help should print usage
    * [ACCUMULO-1946] - Include dfs.datanode.synconclose in hdfs configuration documentation
    * [ACCUMULO-1960] - agitator should support sudo as well
    * [ACCUMULO-1964] - native map build procedure is complicated and README is out of date
    * [ACCUMULO-1971] - Merge HDFS agitation from tablet server agitator and hdfs agitation
    * [ACCUMULO-1973] - Log better message when Hadoop configuration files are not found
    * [ACCUMULO-1984] - Clean up Instance closing
    * [ACCUMULO-2004] - LIB_PATH for Hadoop native libs is lacking
    * [ACCUMULO-2030] - Javadoc: core/security
    * [ACCUMULO-2039] - Authorizations.getAuthorizationsBB is inefficient
    * [ACCUMULO-2046] - Have startup scripts automatically pick up jaas.conf and krb5.conf files
    * [ACCUMULO-2060] - Improve example general.classpath
    * [ACCUMULO-2064] - Include Git SHA1 in artifacts
    * [ACCUMULO-2120] - Fix maven warnings introduced declaration of mavanagaiata
    * [ACCUMULO-2126] - Hadoop profile names should be consistent across branches
    * [ACCUMULO-2132] - Prevent dock element in OSX from launching with MAC
    * [ACCUMULO-2144] - user lacking System.SYSTEM role should receive a more helpful error message
    * [ACCUMULO-2151] - Separate API from implementation of mini accumulo
    * [ACCUMULO-2163] - Always run GC in mini accumulo
    * [ACCUMULO-2190] - Add test for root table file management
    * [ACCUMULO-2223] - minor corrections to 1.5 documentation regarding WAL
    * [ACCUMULO-2239] - Reformat test README files to Markdown
    * [ACCUMULO-2262] - Include java.net.preferIPv4Stack=true in process startup
    * [ACCUMULO-2292] - Fix findbugs/pmd errors for 1.5.1
    * [ACCUMULO-2296] - Add thrift generated sources to findbugs ignore list
    * [ACCUMULO-2299] - WholeRowIterator.decodeRow should check input stream return val
    * [ACCUMULO-2317] - remove ClientConfiguration loadDefault(String)
    * [ACCUMULO-2342] - Proxy SimpleTest failures: might not see constraint updates
    * [ACCUMULO-2350] - Missing recommendation on replacement for deprecated client APIs
    * [ACCUMULO-2441] - Document internal state stored in RFile names
    * [ACCUMULO-2454] - Aggregate Cobertura reports
    * [ACCUMULO-2482] - Improve error message on ZK retries
    * [ACCUMULO-2499] - User manual should include list of default ports
    * [ACCUMULO-2529] - bake desired warnings into normal maven build
    * [ACCUMULO-2592] - Add new interfaces that better allow extension/implementations of Accumulo clusters

** New Feature
    * [ACCUMULO-391] - Multi-table Accumulo input format
    * [ACCUMULO-802] - table namespaces
    * [ACCUMULO-1000] - support compare and set
    * [ACCUMULO-1009] - Support encryption over the wire
    * [ACCUMULO-1030] - Create a Maven plugin to run MiniAccumuloCluster for integration testing
    * [ACCUMULO-1336] - Add lexicoders from Typo to Accumulo
    * [ACCUMULO-1337] - Create Whole Column Family Iterator
    * [ACCUMULO-1398] - Create command to dump running configuration
    * [ACCUMULO-1399] - Pluggable commands for the shell
    * [ACCUMULO-1419] - Make hadoop2 the default
    * [ACCUMULO-1488] - support BigDecimal encoding for basic built-in combiners
    * [ACCUMULO-1639] - Server-side iterator/filter that allows you to specify a lexicographical range of column qualifier values you want to retrieve from a Scanner (ColumnSliceFilter)

** Task
    * [ACCUMULO-658] - refactor code into separate modules where appropriate
    * [ACCUMULO-1066] - getauths in the shell shows authorizations in an arbitrary order
    * [ACCUMULO-1498] - Create document to outline step to Git transition
    * [ACCUMULO-1511] - ciManagement link to Jenkins broken in pom.xml
    * [ACCUMULO-1533] - Clean up/remove unwanted code from 1.5
    * [ACCUMULO-1640] - Remove IllegalDSException
    * [ACCUMULO-1642] - Remove intermediate parent POM examples/pom.xml
    * [ACCUMULO-1643] - Make default Hadoop dependency 1.2.1 (stable)
    * [ACCUMULO-1644] - Remove unused code - TestTime
    * [ACCUMULO-1648] - investigate -XX:-OmitStackTraceInFastThrow
    * [ACCUMULO-1678] - Create README in svn to point to git
    * [ACCUMULO-1679] - Get rid of TFile
    * [ACCUMULO-1690] - Update Apache RAT plugin to 0.10
    * [ACCUMULO-1820] - Suppress compiler warnings from hadoop1/2 switchover
    * [ACCUMULO-1853] - Clean up dependencies for 1.6.0
    * [ACCUMULO-1864] - Drop provided scope on dependencies
    * [ACCUMULO-1910] - Add source to jar files used for testing
    * [ACCUMULO-1956] - Add section on decomissioning or adding nodes to an Accumulo cluster
    * [ACCUMULO-1961] - Fix trivial compiler/javadoc warnings
    * [ACCUMULO-1969] - Ensure native libraries can be loaded from ACCUMULO_HOME/lib/native
    * [ACCUMULO-1992] - Don't use CachedConfiguration in examples
    * [ACCUMULO-1996] - Document SimpleMacIT
    * [ACCUMULO-2010] - Remove resource leak warnings
    * [ACCUMULO-2113] - Verify that The Hammer approach to resource leak is a viable short term fix
    * [ACCUMULO-2148] - Verify upgrade 1.5 to 1.6 works
    * [ACCUMULO-2149] - Verify mappers run locally in 1.6
    * [ACCUMULO-2160] - Run findbugs for 1.6
    * [ACCUMULO-2254] - Remove run_findbugs.sh
    * [ACCUMULO-2283] - Remove server-extras module
    * [ACCUMULO-2389] - Remove OfflineMetadataScanner
    * [ACCUMULO-2552] - Check for usage of FileSystem.get(Configuration)
    * [ACCUMULO-2590] - Update public API in readme to clarify what's included
    * [ACCUMULO-2606] - Remove RPM/DEB packaging from build
    * [ACCUMULO-2616] - Bump plugin versions and parent POM version
    * [ACCUMULO-2652] - Build warnings from missing plugin version
    * [ACCUMULO-2653] - Remove useless javadocs
    * [ACCUMULO-2654] - means to create empty rfile for recovery
    * [ACCUMULO-2670] - Corrupt license header in shelltest.txt
    * [ACCUMULO-2697] - Automatically run findbugs to detect serious issues in the build
    * [ACCUMULO-2707] - Remove build-helper task: regex-property from build
    * [ACCUMULO-2708] - Lower the rank threshold for findbugs execution in the build
    * [ACCUMULO-2726] - Maintain binary backwards compat for non-deprecated API components for 1.5 -> 1.6
    * [ACCUMULO-2734] - javadoc bug with multi-line @code tag
    * [ACCUMULO-2740] - Skip findbugs execution during release:perform
    * [ACCUMULO-2745] - README file missing license header
    * [ACCUMULO-2750] - Remove unused diagrams from documentation
    * [ACCUMULO-2751] - Drop test/system/continuous/ScaleTest.odp

** Test
    * [ACCUMULO-1981] - BloomFilterLayerLookupTest does not run
    * [ACCUMULO-2216] - Randomwalk module to run each test once
    * [ACCUMULO-2356] - Remove static block from AccumuloDFSBase
    * [ACCUMULO-2392] - SimpleMacIT should document which MAC it is using
    * [ACCUMULO-2470] - Improve unit test coverage for server base classes
    * [ACCUMULO-2488] - Concurrent randomwalk balance check needs refinement
    * [ACCUMULO-2498] - Improve unit tests coverage for core module
    * [ACCUMULO-2508] - Security randomwalk fails "BAD_CREDENTIALS - Username or Password is Invalid"
    * [ACCUMULO-2543] - cacheBlock should be closed in BlockIndexTest
    * [ACCUMULO-2558] - Improve unit test coverage for server gc classes
    * [ACCUMULO-2621] - Masters not restarting during concurrent randomwalk
    * [ACCUMULO-2657] - Shard randomwalk fails for 1.6.0
    * [ACCUMULO-2666] - provide a scaling factor for timeouts on ITs
    * [ACCUMULO-2735] - Add specific test to ensure merging cloned tables are functional

