<!---
  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.5.3

** Sub-task
    * [ACCUMULO-3221] - Unintential integer overflow in Shell authorization timeout
    * [ACCUMULO-3223] - DefaultLoadBalancer allows a NPE just to catch it
    * [ACCUMULO-3225] - Dead code in ConfigCommand
    * [ACCUMULO-3226] - Unnecessary null check in Authorizations constructor
    * [ACCUMULO-3317] - Change Jetty configuration to disallow SSLv3
    * [ACCUMULO-3437] - generate-thrift.sh should check for 0.9.0, not 0.9 in Accumulo 1.5.x
    * [ACCUMULO-3487] - FateAdmin command ignores jcommander txid args
    * [ACCUMULO-3515] - SplitLarge command ignores jcommander maxSize option
    * [ACCUMULO-3516] - ZooZap does not use verbose option from command-line

** Bug
    * [ACCUMULO-2727] - version argument of ZooUtil.recursiveDelete is ignored
    * [ACCUMULO-2995] - accumulo script unconditionally redoes ACCUMULO_LOG_DIR creation
    * [ACCUMULO-3085] - Missing space in RootFiles log message
    * [ACCUMULO-3126] - Malformed package-info.java
    * [ACCUMULO-3135] - RW concurrent test failed with table doesn't exist exception
    * [ACCUMULO-3140] - Compaction did not run during RW test
    * [ACCUMULO-3150] - MiniAccumuloConfig doesn't set 0 for monitor log4j port
    * [ACCUMULO-3155] - BatchWalker appears to run less frequently than intended
    * [ACCUMULO-3157] - MetaDataTableScanner is unclosed upon return from FindOfflineTablets#findOffline()
    * [ACCUMULO-3172] - mavanagaiata plugin marks releases "dirty"
    * [ACCUMULO-3180] - Backport "scanners cannot be interrupted"
    * [ACCUMULO-3217] - KeyValue doesn't implement equals or hashCode
    * [ACCUMULO-3229] - Shell displays authTimeout poorly
    * [ACCUMULO-3230] - MR/Yarn job submission fails using `accumulo` with timeline client enabled
    * [ACCUMULO-3261] - Image Randomwalk fails if no rows are found
    * [ACCUMULO-3291] - MiniAccumuloClusterStartStopTest uses /tmp instead of target/
    * [ACCUMULO-3332] - CloudStone tests fail with "NameError: global name 'accumuloConf' is not defined"
    * [ACCUMULO-3333] - Cloudstone1 doesn't pass in username/password to shell
    * [ACCUMULO-3334] - CloudStone4 doesn't provide arguments correctly to TeraSortIngest
    * [ACCUMULO-3340] - MiniAccumuloCluster takes a long time to start when IPv6 is enabled
    * [ACCUMULO-3362] - Incorrect javadoc on StatsCombiner
    * [ACCUMULO-3445] - Server failure to login using Kerberos doesn't exit the process
    * [ACCUMULO-3446] - Move SecurityUtil out of core
    * [ACCUMULO-3462] - tablet not major compacting
    * [ACCUMULO-3474] - ProxyServer ignores value of isDeleted on ColumnUpdate
    * [ACCUMULO-3475] - Shell.config()'s return value is ignored.
    * [ACCUMULO-3517] - Several utilities ignore jcommander options
    * [ACCUMULO-3574] - preferCachedConnections=false is not respected
    * [ACCUMULO-3583] - TestMergeState.test and ShellServerTest.deleterows broken
    * [ACCUMULO-3597] - Metadata table load prevented by flush
    * [ACCUMULO-3601] - master does not process migrations
    * [ACCUMULO-3605] - Backport workaround for RAT-158 warning in the build
    * [ACCUMULO-3609] - BalanceInPresenceOfOfflineTableIT seems to be hanging
    * [ACCUMULO-3709] - AccumuloOutputFormat close doesn't rethrow exception when mutations are rejected
    * [ACCUMULO-3718] - not possible to create a Mutation object from scala w/o some extra helper code
    * [ACCUMULO-3745] - deadlock in SourceSwitchingIterator
    * [ACCUMULO-3856] - ProxyServer.updateAndFlush leaks BatchWriter

** Improvement
    * [ACCUMULO-3224] - Shell should use nanos for auth timeout
    * [ACCUMULO-3271] - Add splits to tables in MultiTable randomwalk module
    * [ACCUMULO-3275] - "not balancing because of unhosted tablets" message should include number of unhosted tablets
    * [ACCUMULO-3466] - Range.mergeOverlapping(Collection) should have short-circuit for collections with only one item
    * [ACCUMULO-3556] - Improve obtuse "Scanner closed" error message in TabletServerBatchScanner

** Task
    * [ACCUMULO-2997] - Confusing race condition comment in resizing of TServer client pool
    * [ACCUMULO-3288] - Use static import for UTF-8
    * [ACCUMULO-3316] - Update TLS usage to mitigate POODLE
    * [ACCUMULO-3451] - Enforce some minimal style checks in the build
    * [ACCUMULO-3538] - Remove "logger" reference in assemble/bin/accumulo
    * [ACCUMULO-3661] - DeleteScanIterCommand should be deprecated
    * [ACCUMULO-3759] - Remove javac warnings when building with Java 8

Release Notes - Accumulo - Version 1.5.2

** Sub-task
    * [ACCUMULO-2438] - deleting all table rows caused tablet load failure
    * [ACCUMULO-2534] - README's converted to markdown do not contain copyright headers
    * [ACCUMULO-2551] - Add read-only access to Fate
    * [ACCUMULO-3012] - Simplify DefaultConfiguration
    * [ACCUMULO-3058] - Javadoc comment added to balancer describes non-existent methods

** Bug
    * [ACCUMULO-1628] - NPE on deep copied dumped memory iterator
    * [ACCUMULO-1897] - Bug in MemKeyConversionIterator constructor
    * [ACCUMULO-1936] - SimpleTest test cases occasionally fail
    * [ACCUMULO-1951] - start-here.sh and stop-here.sh throw errors on OS X
    * [ACCUMULO-2194] - Back-to-back Security randomwalk tests fail
    * [ACCUMULO-2233] - Continuous Verify job should find ranges on cloned table
    * [ACCUMULO-2270] - bulk import thread pool initialized in non-static method.
    * [ACCUMULO-2301] - Monitor should not list jetty as provided
    * [ACCUMULO-2319] - TabletServerResourceManager MemoryManagementFramework constructor starts threads
    * [ACCUMULO-2382] - Using non-default CONTINUOUS_CONF_DIR breaks agitation
    * [ACCUMULO-2399] - BatchWalkers die when started before Ingesters
    * [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-2408] - metadata table not assigned after root table is loaded
    * [ACCUMULO-2410] - TServerUtils no longer needs to catch NPE as a thrift bug workaround
    * [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-2433] - ShellServerTest still fails occasionally
    * [ACCUMULO-2437] - Cannot create splits with MSBit set in MSByte via API
    * [ACCUMULO-2443] - Instructions for 1.5 functional tests via mapreduce should specify use of tool.sh
    * [ACCUMULO-2447] - Shell#printHelp should use the ConsoleReader to print
    * [ACCUMULO-2453] - NoClassDefFound building against Hadoop1 in ShellServerTest
    * [ACCUMULO-2473] - Release notes for 1.5.1 should include cluster information used in tests.
    * [ACCUMULO-2489] - NPE in split tablet
    * [ACCUMULO-2494] - Stat calculation of STDEV may be inaccurate
    * [ACCUMULO-2512] - MAC stop should waitFor processes
    * [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-2549] - ShellTest sometimes fails because of order of authentication strings returned
    * [ACCUMULO-2566] - Utilities and examples should maintain binary compatibility between Hadoop 1 and Hadoop 2
    * [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-2636] - Examples functional test can sometimes pick up the wrong jars
    * [ACCUMULO-2648] - AccumuloInputFormat referencing incorrect RangeInputSplit
    * [ACCUMULO-2658] - Thrift Proxy crashes with OOM on bad input
    * [ACCUMULO-2694] - Offline tables block balancing for online tables
    * [ACCUMULO-2716] - Duplicate connection loss logging in Writer
    * [ACCUMULO-2722] - Classes outside of shell shouldn't be using commons-cli
    * [ACCUMULO-2747] - Scan "show few" long option contains a space
    * [ACCUMULO-2748] - MockTableOperations.deleteRow does not handle null for start or end keys
    * [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-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-2785] - ShellServlet vulnerable to CSRF
    * [ACCUMULO-2790] - generate_monitor_certificate.sh fails on OSX
    * [ACCUMULO-2796] - user manual doesn't mention ordering of iterator application
    * [ACCUMULO-2811] - UniqueFileReplicator logs many warnings about a directory that exists
    * [ACCUMULO-2818] - generate_monitor_certificate creates bad keystore
    * [ACCUMULO-2831] - HDFS Configuration classloader not correct when using VFSClassLoader
    * [ACCUMULO-2852] - master-agitator.pl calls Cwd::cwd() but doesn't import the Cwd module
    * [ACCUMULO-2857] - MockTableOperations.tableIdMap always returns tableName as ID
    * [ACCUMULO-2864] - Multiple calls to ZooSession.shutdown result in NPE
    * [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-2919] - metrics documentation and example configs refer to the logger
    * [ACCUMULO-2928] - Missing toString, hashCode and equals methods on BatchWriterConfig
    * [ACCUMULO-2940] - ZooLockTest doesn't wait for connection
    * [ACCUMULO-2948] - Possible race condition in ZooLockTest
    * [ACCUMULO-2962] - RangeInputSplit Writable methods don't serialize IteratorSettings
    * [ACCUMULO-2967] - Unknown Host results in unending wait for clients
    * [ACCUMULO-2985] - MAC doesn't stop cleanly in 1.6.1-SNAPSHOT
    * [ACCUMULO-3008] - Update example READMEs for changed argument names
    * [ACCUMULO-3013] - ContinuousVerify Reducers fail on java.lang.ClassNotFoundException: org.apache.accumulo.server.util.reflection.CounterUtils
    * [ACCUMULO-3015] - RangeInputSplit doesn't serialize table name
    * [ACCUMULO-3016] - Glob for accumulo-examples-simple jar fails
    * [ACCUMULO-3055] - calling MiniAccumuloCluster.stop multiple times fails with NPE
    * [ACCUMULO-3061] - Can't release Accumulo using >=Git-1.8
    * [ACCUMULO-3084] - Delays between calls to logGC causes tserver to fail
    * [ACCUMULO-3096] - Scans stuck and seeing error message about constraint violation
    * [ACCUMULO-3119] - Javadoc cleanup
    * [ACCUMULO-3120] - README references docs/config.html but this file no longer exists in codebase

** Improvement
    * [ACCUMULO-1669] - User manual examples use two argument Mutation.put
    * [ACCUMULO-1945] - bin/accumulo help should print usage
    * [ACCUMULO-2239] - Reformat test README files to Markdown
    * [ACCUMULO-2253] - Scalability tests should output quartiles
    * [ACCUMULO-2454] - Aggregate Cobertura reports
    * [ACCUMULO-2482] - Improve error message on ZK retries
    * [ACCUMULO-2499] - User manual should include list of default ports
    * [ACCUMULO-2501] - Add deepCopy to RowFilter
    * [ACCUMULO-2514] - Continuous Ingestion test should use Logger
    * [ACCUMULO-2529] - bake desired warnings into normal maven build
    * [ACCUMULO-2623] - AbstractMetricsImpl's toString is excessively verbose
    * [ACCUMULO-2663] - Remove usage of String#split from Combiner#init
    * [ACCUMULO-2762] - Use better compiler optimizations by default for native maps
    * [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-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-2905] - Seeing short hold times and no MinC's
    * [ACCUMULO-2947] - Support configurable changes per mutation for size-based stress test
    * [ACCUMULO-2994] - IteratorUtil.parseIterConf loops over each iterator scope repeatedly
    * [ACCUMULO-3018] - Increase tserver.mutation.queue.max default for 1.5
    * [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-2411] - Remove warnings in 1.5 branch
    * [ACCUMULO-2653] - Remove useless javadocs
    * [ACCUMULO-2654] - means to create empty rfile for recovery
    * [ACCUMULO-2734] - javadoc bug with multi-line @code tag
    * [ACCUMULO-2805] - Exclude unused HTTP Components from thrift dependency

** Test
    * [ACCUMULO-2005] - Provide a scaling factor for mapred.task.timeout inside functional test's RunTests.java
    * [ACCUMULO-2488] - Concurrent randomwalk balance check needs refinement
    * [ACCUMULO-2508] - Security randomwalk fails "BAD_CREDENTIALS - Username or Password is Invalid"
    * [ACCUMULO-2543] - cacheBlock should be closed in BlockIndexTest
    * [ACCUMULO-2649] - Extend test coverage for RangeInputSplit
    * [ACCUMULO-2754] - Skip generated code in PMD/CPD analysis

Release Notes - Accumulo - Version 1.5.1

** Sub-task
    * [ACCUMULO-1688] - Ensure ZooLock.watchParent is properly set in case of Connection loss
    * [ACCUMULO-1713] - defer deleting _tmp files to recovery-likely scenarios
    * [ACCUMULO-1793] - Update Hadoop 2.0 profile to Hadoop 2.2.0
    * [ACCUMULO-1794] - Add tests that flex Hadoop 2 features
    * [ACCUMULO-1857] - Update README
    * [ACCUMULO-1988] - Example map reduce not running in functional test
    * [ACCUMULO-2011] - LaTeX broken by ACCUMULO-1956
    * [ACCUMULO-2378] - Fix use of LOGNAME in functional tests under MR
    * [ACCUMULO-2380] - Update functional test MR job to indicate failed tests

** Bug
    * [ACCUMULO-1143] - unload of METADATA default_tablet with merging minor compactions can lockup
    * [ACCUMULO-1407] - Fix documentation for deleterows
    * [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-1465] - Fix formatting of examples
    * [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-1518] - FileOperations expects RFile filenames to contain only 1 dot.
    * [ACCUMULO-1520] - Misc functional test fixes
    * [ACCUMULO-1544] - Remove username from initialization
    * [ACCUMULO-1552] - minor typo in continuous-env.sh.example and run-verify.sh
    * [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-1571] - typo in PrintInfo: "historgram"
    * [ACCUMULO-1572] - single node zookeeper failure kills connected accumulo servers
    * [ACCUMULO-1573] - Dump/Restore Zookeeper command line parsing is broken
    * [ACCUMULO-1574] - utility class TabletServerLocks doesn't work
    * [ACCUMULO-1575] - ListInstances utility doesn't work
    * [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-1605] - stack overflow MilliSpan.java:113
    * [ACCUMULO-1615] - 'service accumulo-tserver stop' does not work
    * [ACCUMULO-1618] - No ability to disable trash for root tablet & WAL
    * [ACCUMULO-1626] - Mutation equals() method does not always work
    * [ACCUMULO-1630] - Accumulo gc cannot identify as non localhost address
    * [ACCUMULO-1637] - Update HDFS append/sync precondition check for Hadoop 1.2
    * [ACCUMULO-1661] - AccumuloInputFormat cannot fetch empty column family
    * [ACCUMULO-1672] - org.apache.accumulo.proxy.SimpleTest failing
    * [ACCUMULO-1673] - Mikstake in 1.5 Manual section 7.3 Indexing
    * [ACCUMULO-1687] - user manual refers to deprecated calls
    * [ACCUMULO-1698] - stop-here doesn't consider system hostname
    * [ACCUMULO-1700] - IndexedDocIterator incorrectly declares some variables as static
    * [ACCUMULO-1734] - Mutation is hard to check in unit tests
    * [ACCUMULO-1775] - zooCacheTest fails due to missing /tmp/zcTest-42
    * [ACCUMULO-1784] - Failing tests again hadoop-2.2.0
    * [ACCUMULO-1786] - MiniAccumuloClusterGCTest fails if GC is already running
    * [ACCUMULO-1791] - status command for init.d script doesn't work with service command
    * [ACCUMULO-1800] - delete mutations not working through the Proxy
    * [ACCUMULO-1809] - ContinuousMoru does not run under hadoop 2.0
    * [ACCUMULO-1819] - NativeMap Makefile doesn't work with newest OSX/Xcode
    * [ACCUMULO-1821] - master recovers new WAL on recovering tablets
    * [ACCUMULO-1854] - AccumuloInputFormat can be less strict about contents of Configuration
    * [ACCUMULO-1858] - Backport fix for Accumulo-1379 PermGen Leak to 1.4 and 1.5
    * [ACCUMULO-1868] - Distro built from clean checkout misses several directories
    * [ACCUMULO-1870] - Functional tests don't configure Monitor log
    * [ACCUMULO-1873] - start-all.sh's zookeeper version check is lacking
    * [ACCUMULO-1876] - Problem using accumulo artifacts from ivy
    * [ACCUMULO-1878] - Functional test for Examples doesn't check return codes; many examples don't run
    * [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-1899] - cli.Help should return non-zero status on error parsing args
    * [ACCUMULO-1900] - 1.5.1-SNAPHOST fails to run against Hadoop 1.0.4
    * [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-1908] - Spurious ShellServerTest failures
    * [ACCUMULO-1914] - MetadataTableUtil.removeUnusedEntries() should use one mutation
    * [ACCUMULO-1920] - monitor not seeing zookeeper updates
    * [ACCUMULO-1921] - NPE in tablet assignment
    * [ACCUMULO-1935] - VfsClassLoaderTest.testFileMonitor occasionally fails
    * [ACCUMULO-1937] - Thread "tablet assignment 1" died overlaps assigned (tablet) true [] [] []
    * [ACCUMULO-1940] - Data file in !METADATA differs from in memory data
    * [ACCUMULO-1942] - examples-simple brings in unprovided zookeeper dependency
    * [ACCUMULO-1943] - NPE on randomwalk test
    * [ACCUMULO-1944] - Cobertura not working for functional tests in 1.5.x and earlier
    * [ACCUMULO-1947] - dfs.datanode.synconclose check is lacking
    * [ACCUMULO-1952] - Update dependencies to get around classdefnotfound in maven 3.1
    * [ACCUMULO-1958] - Range constructor lacks key checks, should be non-public
    * [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-1985] - Cannot bind monitor on remote host to all interfaces
    * [ACCUMULO-1986] - Validity checks missing for readFields and Thrift deserialization
    * [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-1999] - Random port for Master doesn't make sense
    * [ACCUMULO-2037] - Tablets not assigned to last location
    * [ACCUMULO-2042] - Scalability test does not run
    * [ACCUMULO-2057] - found two last locations for the same extent
    * [ACCUMULO-2058] - Shell Env interpolation lacking for kerberos configuration
    * [ACCUMULO-2065] - Broke log-forwarding with monitor binding to 0.0.0.0
    * [ACCUMULO-2078] - ACCUMULO_LOG_HOST is incorrectly computed
    * [ACCUMULO-2109] - functional tests do not clean up generated test site.xml files
    * [ACCUMULO-2112] - master does not balance after intermittent communication failure
    * [ACCUMULO-2116] - Examples functional test only works when run from ACCUMULO_HOME
    * [ACCUMULO-2117] - ClassLoaderIT fails
    * [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-2141] - dirlist example documentation for 1.5 used 1.4 syntax
    * [ACCUMULO-2146] - typo in continuous-env.sh.example
    * [ACCUMULO-2172] - Concurrent compactions before machine failure may cause uneeded recovery
    * [ACCUMULO-2174] - VFS Classloader has potential to collide localized resources
    * [ACCUMULO-2176] - ExecfileCommand#execute() should close scanner
    * [ACCUMULO-2182] - Backport randomwalk changes
    * [ACCUMULO-2183] - [RW] Error in Security.Validate
    * [ACCUMULO-2184] - "Unknown" HDFS usage on monitor
    * [ACCUMULO-2197] - Building RPMs requires thrift profile to be active
    * [ACCUMULO-2198] - Concurrent randomwalk fails with unbalanced servers
    * [ACCUMULO-2202] - Bloom loader missleading ERROR
    * [ACCUMULO-2208] - Provide better error handling when unable to cleanly close log
    * [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-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-2245] - Bump maven plugin versions due to failures building maven site
    * [ACCUMULO-2250] - Warning message in Fate.transitionToFailed should be logged in the beginning of the method
    * [ACCUMULO-2261] - duplicate locations
    * [ACCUMULO-2264] - KilledTabletServerSplitTest fails on Hadoop2
    * [ACCUMULO-2266] - TServer should ensure wal settings are valid for underlying FS
    * [ACCUMULO-2275] - Auto tests use wrong options
    * [ACCUMULO-2276] - ZooCacheTest uses wrong package names for classes
    * [ACCUMULO-2293] - AccumuloSecurityException might be thrown instead of TableNotFoundException on flush or clone
    * [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-2332] - SimpleGarbageCollector doesn't process address correctly
    * [ACCUMULO-2334] - Lacking fallback when ACCUMULO_LOG_HOST isn't set
    * [ACCUMULO-2344] - stack trace in shell when using grep
    * [ACCUMULO-2360] - Need a way to configure TNonblockingServer.maxReadBufferBytes to prevent OOMs from network misbehavour
    * [ACCUMULO-2361] - droptable created infinite METADATA scan loop
    * [ACCUMULO-2369] - AccumuloReloadingVFSClassLoaderTest failure
    * [ACCUMULO-2385] - classload problem running functional tests
    * [ACCUMULO-2387] - bootstrap_hdfs.sh doesn't read list of slaves and accumulo-site.xml from ACCUMULO_CONF_DIR
    * [ACCUMULO-2390] - TraceProxy.trace should not throw InvocationTargetException

** Improvement
    * [ACCUMULO-1069] - InstanceOperations get/set/remove Property methods are ambiguous
    * [ACCUMULO-1222] - o.a.a.t.randomwalk.FrameworkTest#testXML throws exceptions and asserts nothing
    * [ACCUMULO-1299] - VFS tests should not use hard coded DFS port
    * [ACCUMULO-1394] - Allow RegExFilter subclass to call setNegate.
    * [ACCUMULO-1452] - Automate cleanup of old rf_tmp files
    * [ACCUMULO-1469] - Set the native memory maps configuration parameter to false for non-native example configurations
    * [ACCUMULO-1501] - Trace table should have an age-off filter by default
    * [ACCUMULO-1504] - IteratorSetting missing equals and hashCode methods
    * [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-1557] - [system/auto] if zooCacheTest.py fails, subsequent runs will fail due to /tmp/zkTest-42 dir existing with data
    * [ACCUMULO-1561] - Update maven-rpm-plugin version
    * [ACCUMULO-1576] - add CONTINUOUS_CONF_DIR environment variable for continuous ingest test
    * [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-1658] - System integration tests should default ACCUMULO_CONF_DIR to ACCUMULO_HOME/conf
    * [ACCUMULO-1689] - Add option to run GC in MiniAccumuloCluster
    * [ACCUMULO-1707] - quote env variable expansion in the start script
    * [ACCUMULO-1709] - failing Master doesn't set exit code of process
    * [ACCUMULO-1733] - Better error message on minicluster failure to initialize
    * [ACCUMULO-1785] - Alter config.sh to optionally just verify environment instead of making changes
    * [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-1946] - Include dfs.datanode.synconclose in hdfs configuration documentation
    * [ACCUMULO-1960] - agitator should support sudo as well
    * [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-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-2163] - Always run GC in mini accumulo
    * [ACCUMULO-2223] - minor corrections to 1.5 documentation regarding WAL
    * [ACCUMULO-2262] - Include java.net.preferIPv4Stack=true in process startup
    * [ACCUMULO-2279] - Add timeout_factor to tests still subject to timings
    * [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-2337] - org.apache.accumulo.test.MetaSplitTest.testMetaSplit times out
    * [ACCUMULO-2342] - Proxy SimpleTest failures: might not see constraint updates

** New Feature
    * [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-1643] - Make default Hadoop dependency 1.2.1 (stable)
    * [ACCUMULO-1690] - Update Apache RAT plugin to 0.10
    * [ACCUMULO-1872] - Clean up warnings in 1.5.1-SNAPSHOT branch
    * [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-2010] - Remove resource leak warnings
    * [ACCUMULO-2113] - Verify that The Hammer approach to resource leak is a viable short term fix
    * [ACCUMULO-2254] - Remove run_findbugs.sh

** Test
    * [ACCUMULO-1782] - SimpleBulkTest and CompactionTest fail with missing testrf directory
    * [ACCUMULO-1789] - Increase test timeouts for Accumulo 1.5.x
    * [ACCUMULO-2216] - Randomwalk module to run each test once
    * [ACCUMULO-2356] - Remove static block from AccumuloDFSBase

Release Notes - Accumulo - Version 1.5.0

** Sub-task
    * [ACCUMULO-584] - Add constraint configuration methods to table operations
    * [ACCUMULO-765] - Compare 1.4 and 1.5 API
    * [ACCUMULO-863] - Investigate removing prevkey from block index
    * [ACCUMULO-865] - Make starting out HDFS easier (bootstrap)
    * [ACCUMULO-866] - Remove old classloader
    * [ACCUMULO-867] - Support common use cases for loading classes from context (e.g. HDFS)
    * [ACCUMULO-868] - Explore configuring vfs cache
    * [ACCUMULO-869] - Determine best default classloader hierarchy
    * [ACCUMULO-870] - Accumulo start unit test rely on ACCUMULO_HOME being set
    * [ACCUMULO-874] - set the BatchWriterConfig default latency to something finite
    * [ACCUMULO-878] - Decide fate of Mock Accumulo
    * [ACCUMULO-879] - Try to speed up MiniAccumuloCluster startup time
    * [ACCUMULO-880] - Make MiniAccumuloCluster support multiple tablet servers
    * [ACCUMULO-895] - MiniAccumuloCluster does not work on Windows
    * [ACCUMULO-913] - Review license and notice for 1.5.0
    * [ACCUMULO-924] - Update build for 1.5.0 release
    * [ACCUMULO-927] - Replace HDFS VFS FileSystem objects with the ones from Commons VFS
    * [ACCUMULO-930] - Classloader reloding indirection at wrong level
    * [ACCUMULO-934] - Address missing cases in switch statements in AgeOffStore
    * [ACCUMULO-936] - Additional debug from r1428556 breaks functional tests
    * [ACCUMULO-938] - ensure that cli options (for batch writers and scanners in particular) match each utility
    * [ACCUMULO-955] - Update MapReduce API to match the changes in ACCUMULO-706
    * [ACCUMULO-961] - Deprecate methods that override deprecated methods
    * [ACCUMULO-962] - Failed to do close consistency check for tablet
    * [ACCUMULO-966] - listscans not showing client address
    * [ACCUMULO-969] - commit the proxy for 1.5
    * [ACCUMULO-971] - Update/Fix malformed Javadocs
    * [ACCUMULO-972] - Check for unfinished TODOs that need to be done before release
    * [ACCUMULO-973] - Check compiler warnings for any potential bugs / remove trivial warnings.
    * [ACCUMULO-975] - Make proxy build with Hadoop 2.0
    * [ACCUMULO-978] - Proxy can not get active scans or compactions for a tablet server
    * [ACCUMULO-979] - Re-use generate-thrift.sh script for proxy
    * [ACCUMULO-983] - ProxyServer does not handle exceptions properly
    * [ACCUMULO-984] - Check potentially unexpected behavior with TimeUnit
    * [ACCUMULO-985] - proxy leaks BatchWriters and BatchScanners
    * [ACCUMULO-987] - Check for and schedule for removal (deprecate) any thrift objects in public API
    * [ACCUMULO-988] - compaction should fail if per compaction iterators are set
    * [ACCUMULO-989] - per compaction iterators should not affect tablets outside of compaction range
    * [ACCUMULO-991] - Make Thrift Transport and Protocol configurable
    * [ACCUMULO-992] - Document ACCUMULO-259
    * [ACCUMULO-993] - Create unit tests for mapred package
    * [ACCUMULO-996] - explore exposing accumulo token in proxy
    * [ACCUMULO-1001] - Fix problems with TransformingIterator
    * [ACCUMULO-1004] - functional tests are failing
    * [ACCUMULO-1007] - Ruby example for proxy is busted
    * [ACCUMULO-1008] - Lift gen-{cpp,java,py,rb} from proxy's build.dir
    * [ACCUMULO-1024] - Deprecate built-in user management utilities
    * [ACCUMULO-1025] - Don't deprecate AuthInfo
    * [ACCUMULO-1026] - Don't use @Deprecated to mean "Not for Client Use"
    * [ACCUMULO-1028] - Distinguish the user principal from the authentication token
    * [ACCUMULO-1041] - Generic interface for arbitrary token handling
    * [ACCUMULO-1047] - test 1.5.0
    * [ACCUMULO-1061] - Shutdown thread commented out
    * [ACCUMULO-1073] - Update website for 1.5.0 release
    * [ACCUMULO-1074] - Can not run as multiple users
    * [ACCUMULO-1087] - master doesn't retry log recovery
    * [ACCUMULO-1089] - Missing word in Accumulo documentation
    * [ACCUMULO-1090] - Inconsistent text in example in Accumulo documentation
    * [ACCUMULO-1091] - Missing space in Accumulo Documentation
    * [ACCUMULO-1092] - Confusing phrase in Accumulo documentation
    * [ACCUMULO-1093] - Missing 'ly' from a word in Accumulo documentation
    * [ACCUMULO-1094] - Inconsistent use of quotes in Accumulo documentation
    * [ACCUMULO-1095] - Inconsistent parameter usage for setgroups in Accumulo documentation
    * [ACCUMULO-1096] - Inconsistent styling of text in Accumulo documentation
    * [ACCUMULO-1097] - Misspelled word in Accumulo documentation
    * [ACCUMULO-1099] - Confusing phrase in Accumulo documentation
    * [ACCUMULO-1102] - Inconsistent parameter usage and quotation marks in Accumulo documentation
    * [ACCUMULO-1103] - Missing word in Accumulo documentation
    * [ACCUMULO-1121] - README says to build native libraries with *src*/server/src/main/java
    * [ACCUMULO-1129] - Make it easier for users to construct and use a security token
    * [ACCUMULO-1130] - Rename SecurityToken to AuthenticationToken
    * [ACCUMULO-1131] - Create tests, documentation, and examples of InsecureAuthenticator
    * [ACCUMULO-1133] - Put security-related APIs that clients need in the "o.a.a.core.client" package, or a security sub-package
    * [ACCUMULO-1136] - Lack of information regarding `setiter` and `config` for SKVI configuration
    * [ACCUMULO-1139] - Incorrect option for timestamp in user manual
    * [ACCUMULO-1155] - expose accumulo token in cli
    * [ACCUMULO-1156] - Migrate all existing code from using deprecated user/pass methods
    * [ACCUMULO-1157] - Add way for command line user to determine required Properties
    * [ACCUMULO-1159] - Exposed accumulo token in shell
    * [ACCUMULO-1160] - Clean up usage of Passwords where possible, deprecate others
    * [ACCUMULO-1185] - document running accumulo from HDFS
    * [ACCUMULO-1187] - review user and developer manuals for old information
    * [ACCUMULO-1194] - re-document deprecated getConnector() API's
    * [ACCUMULO-1247] - Make master handle tablet with multiple locations
    * [ACCUMULO-1248] - Metadata cache should handle tablets with multiple locations
    * [ACCUMULO-1271] - Make apache-release profile work for us
    * [ACCUMULO-1293] - metadata table merge hangs
    * [ACCUMULO-1305] - Shorten prefix in proxy properties file
    * [ACCUMULO-1314] - Support destroyable map for creating authentication token
    * [ACCUMULO-1315] - Get maven-changes-plugin to work again
    * [ACCUMULO-1316] - Ensure native libs are packaged in some way
    * [ACCUMULO-1319] - Remove root username prompt from init
    * [ACCUMULO-1321] - Dynamic Classloader lost jars
    * [ACCUMULO-1329] - Review examples for incorrect instructions / usage
    * [ACCUMULO-1338] - closeScanner in Accumulo proxy does not work
    * [ACCUMULO-1340] - calling update() on proxy with unknown scanner derails thrift session
    * [ACCUMULO-1342] - Fix documentation for proxy
    * [ACCUMULO-1351] - document HDFS timeout settings
    * [ACCUMULO-1352] - filter on !METADATA can prematurely delete loaded flags
    * [ACCUMULO-1353] - check that bulk load is active in metadata table constraint
    * [ACCUMULO-1360] - Document per table classpath
    * [ACCUMULO-1364] - Silent failure after power outage
    * [ACCUMULO-1369] - Can not configure iterators when per table classpath is configured
    * [ACCUMULO-1380] - Add MiniAccumuloCluster to the Accumulo documentation

** Bug
    * [ACCUMULO-58] - Misconfigured aggregator can block table deletion
    * [ACCUMULO-102] - mvn clean package is not enough to allow the config.html page to be generated for the monitor
    * [ACCUMULO-108] - simple.gc.GCLotsOfCandidatesTest does not use the TestUtils settings properly
    * [ACCUMULO-160] - Makefile needs play nice on 64 and 32 bit systems
    * [ACCUMULO-189] - RegExFilter deepCopy NullPointerException
    * [ACCUMULO-209] - RegExFilter does not properly regex when using multi-byte characters
    * [ACCUMULO-226] - BatchScanner iterator implementation erroneously returns true for hasNext upon subsequent hasNext calls
    * [ACCUMULO-228] - Default map does not accurately count bytes in memory
    * [ACCUMULO-235] - Functional tests fail more than I'm comfortable with
    * [ACCUMULO-295] - Client side metadata cache caches credentials
    * [ACCUMULO-296] - Security random walk table out of sync
    * [ACCUMULO-322] - System throws no errors on !METADATA table constraint violations
    * [ACCUMULO-333] - Shell 'help' should wrap more cleanly
    * [ACCUMULO-360] - Bulk importing Keys with invalid ColumnVisibility doesn't fail until scan
    * [ACCUMULO-369] - master retries failed bulk imports too quickly
    * [ACCUMULO-396] - Shell in mock mode doesn't use instance name
    * [ACCUMULO-398] - Table tablets not evenly spread.
    * [ACCUMULO-408] - Large bulk imports timing out
    * [ACCUMULO-432] - Symlinks to bin/accumulo don't work
    * [ACCUMULO-445] - Concurrent random walk test does not handle permission change
    * [ACCUMULO-449] - Failed log copy is not restarted
    * [ACCUMULO-450] - Key hashCode should include timestamp
    * [ACCUMULO-462] - Constraints do not seem to reload easily
    * [ACCUMULO-487] - Batch Scanner can get stuck when external thread closes scanner
    * [ACCUMULO-496] - Cloudtrace.thrift needs to have it's namespace updated to the new package
    * [ACCUMULO-499] - Garbage collector should call Tracer.offNoFlush instead of Tracer.off
    * [ACCUMULO-505] - "% of Used DFS" is overflowing on a large cluster
    * [ACCUMULO-509] - default walog copy/sort uses replication of 1
    * [ACCUMULO-513] - Need to deal with half-dead tservers
    * [ACCUMULO-516] - Column family search with sparse files is painfully long
    * [ACCUMULO-528] - metadata table needs merge
    * [ACCUMULO-531] - TestConfirmDeletes hangs
    * [ACCUMULO-533] - make system iterators thread-safer
    * [ACCUMULO-534] - simple.logicalTime.LogicalTimeTest is timing out
    * [ACCUMULO-535] - shell functional test is failing
    * [ACCUMULO-537] - SimpleBalancerFairness functional test is failing
    * [ACCUMULO-538] - examples functional test is failing
    * [ACCUMULO-539] - fix warning about deprecated md5 module when running functional tests
    * [ACCUMULO-541] - run the functional tests with the typical jvm args
    * [ACCUMULO-555] - deprecate/remove the option on bulkImport that prevents the GC from deleting the files
    * [ACCUMULO-561] - Monitor scan mb/s does not show batch scan activity
    * [ACCUMULO-562] - Multi term grep in shell fails
    * [ACCUMULO-565] - graphs on the monitor page always read zero
    * [ACCUMULO-566] - monitor should display zero tablet servers as red, even if there's only one tablet server configured
    * [ACCUMULO-568] - Test creates a core/null directory
    * [ACCUMULO-570] - dirlist example README is a little inconsistent
    * [ACCUMULO-589] - Unable to set system properties in shell
    * [ACCUMULO-590] - NPE in TableLoadBalancer
    * [ACCUMULO-591] - Need to clear tablet location cache before computing input splits in input format
    * [ACCUMULO-596] - Shell doesn't accept hex characters with nonzero first bit
    * [ACCUMULO-597] - need timezone label to clarify the times on the monitoring graphs
    * [ACCUMULO-601] - client fails to resolve master hostname when not using fully qualified domain name
    * [ACCUMULO-605] - NPE on MasterMonitorInfo also spammy
    * [ACCUMULO-606] - Shell needs add aggregator ability restored
    * [ACCUMULO-616] - Table setting table.scan.max.memory ignored
    * [ACCUMULO-621] - master fails to shutdown
    * [ACCUMULO-623] - Data lost with hdfs write ahead log
    * [ACCUMULO-628] - tablet last location deleted and set
    * [ACCUMULO-629] - Unrecognized Property In Example Configuration (logger.sort.buffer.size)
    * [ACCUMULO-630] - ZooZap not handling -loggers parameter
    * [ACCUMULO-631] - ZooZap Usage Message Does Not Mention -tracers
    * [ACCUMULO-632] - 512Mb Configuration Example - JVM Memory Too Small.
    * [ACCUMULO-633] - FirstEntryInRowIterator is broken and has no test
    * [ACCUMULO-634] - MockAccumulo throws NPE if table doesn't exist
    * [ACCUMULO-635] - Check Existence of Zookeeper Recovery Node Before Reading It.
    * [ACCUMULO-636] - Must kill hdfs processes during testing
    * [ACCUMULO-639] - tablet server fails to start because it looks for walogs in wrong place
    * [ACCUMULO-641] - average queue time and average time for major compactions are identical, which is unlikely
    * [ACCUMULO-645] - Stderr: Warning: $HADOOP_HOME is deprecated
    * [ACCUMULO-649] - TServer log recovery code talks to zookeeper too much and is not aggressive enough
    * [ACCUMULO-654] - OfflineIterator does not bound range
    * [ACCUMULO-668] - first index block reader not closed in RFile
    * [ACCUMULO-669] - SimpleThreadPool ignores the max number of threads
    * [ACCUMULO-672] - port to thrift 0.8
    * [ACCUMULO-675] - WrappingIterator's seenSeek should be protected
    * [ACCUMULO-676] - root tablet taken off line before non-root metadata tables
    * [ACCUMULO-678] - tablet server shutdown may not work through a master failure
    * [ACCUMULO-679] - simple.table.TabletShouldSplitTest incosistently fails
    * [ACCUMULO-681] - close consistency check failure
    * [ACCUMULO-682] - Native library compiling fails on OS X 10.7 (Lion)
    * [ACCUMULO-683] - Accumulo ignores HDFS max replication configuration
    * [ACCUMULO-684] - npe during randomwalk test
    * [ACCUMULO-685] - Example accumulo-env.sh's specify min stack size that is too small for Java 1.7.4+
    * [ACCUMULO-686] - error running Concurrent randomwalk test
    * [ACCUMULO-688] - fix mapr support in 1.5
    * [ACCUMULO-689] - No appenders for logger in TransactionWatcherTest
    * [ACCUMULO-691] - Connecting To Shell With Incorrect Password Should Fail
    * [ACCUMULO-701] - No longer seeing TApplicationException
    * [ACCUMULO-702] - build on ubuntu hangs without required dependencies
    * [ACCUMULO-709] - AddFilesWithMissingEntries adds tmp files
    * [ACCUMULO-727] - Bulk Import retry time needs to be longer/configurable
    * [ACCUMULO-733] - add description of the BatchWriter behavior
    * [ACCUMULO-737] - The PrintInfo.printMetaBlockInfo method does not close a BCFile.Reader
    * [ACCUMULO-738] - Close InputStream instead finally clause in FileIngestData.insertFileData method.
    * [ACCUMULO-740] - Infinite loop in RFile code
    * [ACCUMULO-754] - Generated thrift produces warnings on enums
    * [ACCUMULO-757] - Location for tablet assigned to dead server not removed when table offline
    * [ACCUMULO-758] - Change in jetty dependency is causing compile failure
    * [ACCUMULO-764] - stack overflow when starting tablet server after recent java update to 1.6.0_35
    * [ACCUMULO-766] - master is "leaking" ZooLock objects
    * [ACCUMULO-768] - Typo in User Manual on MapReduce Analytics
    * [ACCUMULO-769] - MapReduce API should not use Configuration to set Job state at submission time (ambiguous semantics)
    * [ACCUMULO-772] - Unexpected insert error not displayed in shell
    * [ACCUMULO-774] - splitting a tablet results in bogus warnings
    * [ACCUMULO-776] - TimestampFilter should serialize start and end as longs in the IteratorSetting
    * [ACCUMULO-778] - number of Fate threads in the master is not configurable
    * [ACCUMULO-779] - ZooStore can starve completed Repos
    * [ACCUMULO-781] - Move README_UBUNTU to docs directory.
    * [ACCUMULO-782] - MockConnector returns a MockInstance that is not equivalent to it's parent MockInstance
    * [ACCUMULO-784] - agitator maxkill/minkill issue
    * [ACCUMULO-785] - Need age off finished fate operations
    * [ACCUMULO-787] - Debian packages rely on old hadoop-zookeeper package
    * [ACCUMULO-788] - Debian native package postinst scripts reference a bare $JAVA_HOME environment variable
    * [ACCUMULO-789] - Native debian package won't install due to make or makefile error
    * [ACCUMULO-794] - FirstEntryInRowIterator can scan through entire last row in range
    * [ACCUMULO-795] - MockTable doesn't obey useVersions parameter
    * [ACCUMULO-797] - empty log fails recovery
    * [ACCUMULO-800] - don't log the instance.secret
    * [ACCUMULO-801] - Cobertura coverage not generated
    * [ACCUMULO-806] - tablet locator fails when the metadata table has empty sections
    * [ACCUMULO-821] - MockBatchScanner inappropriately filters on ranges
    * [ACCUMULO-822] - upgrade trunk to thrift 0.9
    * [ACCUMULO-827] - CloudStone Code Has Issues
    * [ACCUMULO-832] - Create directory for debug logs
    * [ACCUMULO-834] - thrift server responds slowly to large numbers of requests
    * [ACCUMULO-843] - Mock does not implement locality groups or merging
    * [ACCUMULO-844] - VisibilityFilter does not catch BadArgumentException
    * [ACCUMULO-845] - Handle method.include calls consistently in TraceWrap class.
    * [ACCUMULO-846] - Options validation is inconsistent
    * [ACCUMULO-847] - out of memory error creating native thread
    * [ACCUMULO-852] - ACCUMULO_LOG_HOST is set incorrectly
    * [ACCUMULO-854] - ava.lang.IllegalStateException: Locality group reader closed
    * [ACCUMULO-856] - monitor gets npe when the master is down
    * [ACCUMULO-857] - fix deprecation warnings due to upgrade to a more recent version of junit
    * [ACCUMULO-858] - Parse Exception During Run of Maven Changes Report Plugin
    * [ACCUMULO-859] - Upgrade to current reporting plugin versions
    * [ACCUMULO-860] - Thrift version error displays 0.8 instead of 0.9
    * [ACCUMULO-872] - both accumulo and accumulo-native contain native libs
    * [ACCUMULO-873] - Remove hadoop boxes from monitor
    * [ACCUMULO-876] - Make maven profiles for builds against different versions of hadoop
    * [ACCUMULO-881] - Random walk unit test is throwing an error
    * [ACCUMULO-888] - NPE writing to the WAL
    * [ACCUMULO-889] - Update jar regex in examples and scripts
    * [ACCUMULO-892] - shutdown doesn't use all minor compaction threads
    * [ACCUMULO-903] - Make monitor servlet JSON output JSON spec compliant
    * [ACCUMULO-906] - Combiners documention could be improved
    * [ACCUMULO-907] - stacking combiners produces a strange result
    * [ACCUMULO-908] - VFS unit tests fail on Hadoop FS check
    * [ACCUMULO-912] - getConnector in MockAccumulo clobber's existing user authorizations
    * [ACCUMULO-914] - Junit tests in eclipse fail due to Classloader poorly parsing classpath locations
    * [ACCUMULO-915] - os.getlogin is not portable python code
    * [ACCUMULO-919] - delay file garbage collection to survive name node failure
    * [ACCUMULO-921] - Stop-server has unecessary SSHs
    * [ACCUMULO-926] - Extraneous vfs output should be logged (and breaks functional tests)
    * [ACCUMULO-928] - The TableLoadBalancer.getTableOperations method should not rely on Zookeeper.
    * [ACCUMULO-929] - Ignore JetBrains .idea and .iml files
    * [ACCUMULO-940] - Generated code needs license headers
    * [ACCUMULO-944] - start-here doesn't work if you define your roles by IP
    * [ACCUMULO-954] - ZooLock watcher can stop watching
    * [ACCUMULO-965] - Zookeeper session ids created as unsigned long, parsed in ZooUtils.java as signed long
    * [ACCUMULO-968] - deletemany does not configure the scan-time iterator
    * [ACCUMULO-974] - Shell --fake requires HDFS to be running
    * [ACCUMULO-976] - user initiated compactions not preempting system initiated ones
    * [ACCUMULO-977] - listscans and listcompaction commands can get stuck on bad server
    * [ACCUMULO-982] - LocalityCheck is missing a path separator
    * [ACCUMULO-986] - DebugIterator could debug a little better
    * [ACCUMULO-994] - start-here tries to start a logger
    * [ACCUMULO-995] - stop-all.sh parameter passing does not accept -u root -p password params properly
    * [ACCUMULO-1005] - Authorizations and ColumnVisibility API should not accept Charset param
    * [ACCUMULO-1010] - Support upgrading from 1.4 to 1.5
    * [ACCUMULO-1032] - encryption changes break diagnostic LogReader
    * [ACCUMULO-1033] - log file contains no tablet definition
    * [ACCUMULO-1034] - Consistent CamelCase for ZooKeeper
    * [ACCUMULO-1035] - Scripts don't deal with empty variables well
    * [ACCUMULO-1036] - org.apache.accumulo.proxy.SimpleTest.testSecurityOperations has inconsistent behavior
    * [ACCUMULO-1037] - allow the proxy to run miniaccumulo for simple testing
    * [ACCUMULO-1038] - Code snippet for constructing iterators has wrong argument order
    * [ACCUMULO-1039] - Discussion of versioning iterator should mention how to disable it completely
    * [ACCUMULO-1040] - Variable name inconsistency in "Reading Data" client code snippet
    * [ACCUMULO-1044] - bulk imported files showing up in metadata after bulk import fails
    * [ACCUMULO-1048] - master logs a warning if a backup master is started
    * [ACCUMULO-1053] - continuous ingest detected data loss
    * [ACCUMULO-1054] - continuous ingest fails with class not found
    * [ACCUMULO-1056] - TableOperations.getSplits hangs indefinately on bad credentials
    * [ACCUMULO-1057] - ChangeSecret fails to change password
    * [ACCUMULO-1059] - monitor displays GC status using 12-hour time, not 24
    * [ACCUMULO-1060] - gc is getting an authentication error
    * [ACCUMULO-1062] - large numbers of threads make in-memory updates slow
    * [ACCUMULO-1063] - Update pom.xml to reference Commons IO v2.4 (or change Instamo to remove dependency)
    * [ACCUMULO-1064] - Debian package controls should be in same directory as
    * [ACCUMULO-1071] - Finding ACCUMULO_HOME and programs in scripts is broken for symbolic links
    * [ACCUMULO-1072] - 'bin/accumulo init' with a bad JAVA_HOME gives a misleading message
    * [ACCUMULO-1077] - Deadlock possible with log recovery.
    * [ACCUMULO-1081] - Randomwalk Config test depends on commons-math
    * [ACCUMULO-1086] - Configuration secrets exposed via thrift RPC with no authentication
    * [ACCUMULO-1088] - master not balancing because balance information is out-of-date
    * [ACCUMULO-1104] - improve documentation
    * [ACCUMULO-1105] - random walk test is failing
    * [ACCUMULO-1107] - Rpm fails to install on Centos 6.3 x86_64 using yum
    * [ACCUMULO-1110] - deadlock found in major compaction
    * [ACCUMULO-1111] - stack overflow in random walk test
    * [ACCUMULO-1112] - master state is UNLOAD_METADATA_TABLE and goal state is NORMAL: stuck
    * [ACCUMULO-1114] - class cast exception during Security random walk
    * [ACCUMULO-1115] - Config node in concurrent random walk doesn't work for tables
    * [ACCUMULO-1117] - noisy logs during random walk
    * [ACCUMULO-1118] - Tests failing on CentOS
    * [ACCUMULO-1120] - stop-all doesn't work: Error BAD_CREDENTIALS for user root
    * [ACCUMULO-1123] - Security test failing with BAD_CREDENTIALS
    * [ACCUMULO-1125] - DistributedWorkQueue not releasing lock on failure
    * [ACCUMULO-1126] - Master no longer cleans up recovery area
    * [ACCUMULO-1137] - C++ proxy binding missing namespace
    * [ACCUMULO-1138] - ZKPermHandler needs to sync before reading uncached credentials
    * [ACCUMULO-1140] - display the exact number of tablet servers in the monitor
    * [ACCUMULO-1141] - TServerUtils.startHsHaServer eats maxMessageSize parameter
    * [ACCUMULO-1143] - unload of METADATA default_tablet with merging minor compactions can lockup
    * [ACCUMULO-1147] - stray warning about missing recovery files
    * [ACCUMULO-1148] - Concurrent random walk test shutsdown accumulo way too often
    * [ACCUMULO-1149] - balance and tablet server shutdown conflict
    * [ACCUMULO-1151] - Randomwalk framework more framework debug info
    * [ACCUMULO-1153] - gc is warning about files not existing
    * [ACCUMULO-1154] - Randomwalk failure during/after Security.xml
    * [ACCUMULO-1162] - Security.xml random walk test fails
    * [ACCUMULO-1164] - org.apache.accumulo.test.randomwalk.bulk.Verify#main needs to be CLIed or purged
    * [ACCUMULO-1171] - Passing relative directories to bulk import fails w/ unhelpful error message
    * [ACCUMULO-1172] - Increase metadata table split threshold
    * [ACCUMULO-1173] - NPE in tracer on zookeeper disconnect
    * [ACCUMULO-1178] - update ScaleTest presentation
    * [ACCUMULO-1180] - Makefile cannot be used to build just 32 or just 64 bit versions
    * [ACCUMULO-1183] - ProxyServer does not set column information on BatchScanner
    * [ACCUMULO-1184] - Reset security broken with jcommander additions
    * [ACCUMULO-1189] - Thrift ProxyServer is not throwing TableNotFoundException in createScanner & createBatchScanner
    * [ACCUMULO-1190] - The update() method on the ProxyServer should throw a MutationsRejectedException
    * [ACCUMULO-1191] - Move thift generation into 'thrift' profile.
    * [ACCUMULO-1192] - "du" on a table without files does not report
    * [ACCUMULO-1199] - Verify all methods in the ProxyService that take table names actually throw TableNotFoundException when the table is missing.
    * [ACCUMULO-1204] - JSONServlet shows incorrect value for scans
    * [ACCUMULO-1205] - "Addl Data" checkboxes aren't observed on monitor auto-refresh
    * [ACCUMULO-1206] - Sorting by "Start" in traces for "foo" doesn't actually sort correctly
    * [ACCUMULO-1210] - remove stray println in ClientOpts
    * [ACCUMULO-1211] - Stats output not consistent
    * [ACCUMULO-1213] - master did not shutdown
    * [ACCUMULO-1214] - Proxy SimpleTest fails reading stale zookeeper data
    * [ACCUMULO-1227] - simple.largeRow.LargeRowTest FAILED due to out of range exception
    * [ACCUMULO-1231] - running FindOfflineTablets with no arguments throws NPE
    * [ACCUMULO-1233] - race condition looking at zookeeper nodes
    * [ACCUMULO-1234] - setscaniter can cause iterator class warning to appear in monitor
    * [ACCUMULO-1235] - tablet fails to load after split fix
    * [ACCUMULO-1238] - unexpected PERMISSION DENIED in random walk test
    * [ACCUMULO-1239] - CheckBalance is ending random walk tests
    * [ACCUMULO-1243] - Multiple assignment may occur if tablet server dies during split
    * [ACCUMULO-1244] - commons-io version conflict with CDH4
    * [ACCUMULO-1246] - Reject tablets with mutiple locations
    * [ACCUMULO-1250] - Fail the build when thrift profile activated and thrift fails
    * [ACCUMULO-1251] - TFramedTransport frame size limited on client side
    * [ACCUMULO-1253] - docs/config.html generation broken
    * [ACCUMULO-1257] - strange updates to metadata table
    * [ACCUMULO-1261] - System tests fail from clean checkout
    * [ACCUMULO-1264] - !METADATA table merge hangs
    * [ACCUMULO-1265] - copy dependencies breaks "mvn compile"
    * [ACCUMULO-1276] - problems running generate_monitor_certificate.sh
    * [ACCUMULO-1277] - Race condition between master and tserver when acquiring tserver lock
    * [ACCUMULO-1282] - Monitor requires jumping through hadoop permissions hoops (and granting accumulo broad permissions)
    * [ACCUMULO-1283] - new configuration test in random walk sets timeout values much too high
    * [ACCUMULO-1284] - FindOfflineTablets uses a batch scanner over the ROOT and META tablet types
    * [ACCUMULO-1317] - Username *'ed out during `accumulo init`
    * [ACCUMULO-1323] - Accumulo shell broken if prompted for password
    * [ACCUMULO-1328] - make delay between recoverLease calls configurable
    * [ACCUMULO-1330] - du shell command help should specify units
    * [ACCUMULO-1331] - simple.wal.WriteAheadLog test sometimes fails
    * [ACCUMULO-1332] - simple.gc.GCTest sometimes fails
    * [ACCUMULO-1333] - CleanZookeeper requires password with "accumulo:" prefix
    * [ACCUMULO-1343] - Docs profile doesn't fail when prerequisites aren't available
    * [ACCUMULO-1348] - Accumulo Shell does not respect 'exit' when executing file
    * [ACCUMULO-1358] - Shell's setiter is not informative when using a bad class name
    * [ACCUMULO-1365] - proxy SimpleTest fails trying to get a port
    * [ACCUMULO-1384] - bin/config.sh has hard-coded version that isn't updated with the build
    * [ACCUMULO-1389] - RPM has dependency on "jdk", it should be "jre"
    * [ACCUMULO-1392] - kerberos directions in README
    * [ACCUMULO-1401] - Getting "cp: illegal option -- u" when running bootstrap_config.sh on Mac
    * [ACCUMULO-1404] - release tarballs include wrong contents
    * [ACCUMULO-1411] - Cannot use iterators in MockAccumulo running in a secondary classloader
    * [ACCUMULO-1413] - Binary packages should not have the -assemble component in their filename
    * [ACCUMULO-1415] - Move SystemToken to server package
    * [ACCUMULO-1421] - use reflection to improve compatibility between Hadoop 1 and 2
    * [ACCUMULO-1423] - Add include for **/*.jnilib in the binary-release.xml for tar.gz artifact
    * [ACCUMULO-1424] - proxy TFramedTransport max size too small (should be configurable)
    * [ACCUMULO-1429] - setscaniter doesn't work from different table context
    * [ACCUMULO-1430] - mvn release:prepare doesn't run tests
    * [ACCUMULO-1436] - Dependencies on sibling modules in Accumulo shouldn't be in the "provided" scope
    * [ACCUMULO-1440] - Configuration documentation generation (docs/config.html) should not interpolate properties
    * [ACCUMULO-1441] - Add sample RFiles to excludes for rat check
    * [ACCUMULO-1443] - TableOperations.list() lacks javadoc
    * [ACCUMULO-2179] - CreateTableCommand#execute() should close Scanner

** Improvement
    * [ACCUMULO-14] - Transition from full Accumulo mocking
    * [ACCUMULO-25] - Documentation instructs maven assembly:assembly, which has undesired behavior
    * [ACCUMULO-119] - Implement group commit for write ahead logs
    * [ACCUMULO-120] - Optimize writing single mutation in batch writer.
    * [ACCUMULO-121] - document detailed bulk ingest best practices
    * [ACCUMULO-123] - Dynamically generate configuration documentation
    * [ACCUMULO-146] - Accumulo Output Format needs better fix for empty files (see Accumulo-55)
    * [ACCUMULO-149] - Remove MyMapFile dependency in Isolation Image
    * [ACCUMULO-159] - Look into maven build of source jars
    * [ACCUMULO-161] - Add ability to maven to build in memory map code
    * [ACCUMULO-173] - Integrate SVN build number into packaging
    * [ACCUMULO-174] - Create maven goal/profile for documentation
    * [ACCUMULO-227] - Improve in memory map counts to provide cell level uniqueness for repeated columns in  mutation
    * [ACCUMULO-241] - Visibility labels should allow more characters
    * [ACCUMULO-259] - ZKAuthentictor needs to be split up
    * [ACCUMULO-279] - Add descriptions to README.mapred
    * [ACCUMULO-282] - Provides usage examples for client.Flush, client.ReadWriteExample, and client.RowOperations
    * [ACCUMULO-286] - Make Accumulo work with Hadoop 0.22
    * [ACCUMULO-311] - Shell could use getIterators
    * [ACCUMULO-339] - Add lib and target directories to .gitignore file.
    * [ACCUMULO-348] - Adding splits to table via the shell with addsplits is very slow when adding a lot of split points
    * [ACCUMULO-350] - Support loading (reloading?) jars out of hdfs
    * [ACCUMULO-362] - Integrate automatic CHANGES into build
    * [ACCUMULO-376] - Shell command list needs orginization
    * [ACCUMULO-377] - Shell scan command needs support for multiple columns
    * [ACCUMULO-382] - add configuration changes to the random walk tests
    * [ACCUMULO-388] - Agitator times should be ranges
    * [ACCUMULO-399] - need a randomwalk node that checks tablet balance
    * [ACCUMULO-401] - number of major/minor compactions cannot be changed on-the-fly
    * [ACCUMULO-430] - master tablet balancer does not reload immediately
    * [ACCUMULO-437] - Use ${project.artifactId} instead of ${artifactId} in pom.xml
    * [ACCUMULO-441] - Remove warnings from Javadoc generation
    * [ACCUMULO-442] - Please add comments to src/trace/thift.sh
    * [ACCUMULO-451] - Change byte val[] to byte[] val in Mutation.java per PMD suggestion.
    * [ACCUMULO-453] - Profile and optimize server activity visualization
    * [ACCUMULO-467] - Allow the properties for AccumuloFileOutputFormat to be set in a mapreduce job
    * [ACCUMULO-473] - Support binary search within RFile blocks
    * [ACCUMULO-498] - Key.getColumnVisibility() should return a ColumnVisibility, not a Text
    * [ACCUMULO-511] - listscans should (maybe?) show auths being used
    * [ACCUMULO-514] - Check if major compaction needed when new file introduced
    * [ACCUMULO-515] - Add utility to pre split table for continuous ingest test
    * [ACCUMULO-517] - Improve scan information available on monitor page
    * [ACCUMULO-550] - Collocate rfile index entries within file
    * [ACCUMULO-556] - display the location of the current master in the monitor
    * [ACCUMULO-572] - Create shell commands for adding, removing, and listing constraints
    * [ACCUMULO-574] - Document reseek of iterators
    * [ACCUMULO-578] - use hdfs for the walog
    * [ACCUMULO-579] - Make shell commands use the table option consistently
    * [ACCUMULO-580] - Make size of batch scanner client size buffer configurable
    * [ACCUMULO-587] - Add finalize to TabletServerBatchReader to catch when user forgets to close
    * [ACCUMULO-588] - Add short description of each docs/examples README.xxx file into the README file.
    * [ACCUMULO-610] - Make the VersioningIterator seek when appropriate
    * [ACCUMULO-611] - IsolatedScanner and ClientSideIteratorScanner ignore options set on wrapped Scanner
    * [ACCUMULO-620] - Memory and path settings in accumulo script are moot
    * [ACCUMULO-627] - support alternative file system mechanisms for lease recovery
    * [ACCUMULO-637] - Make entries written configurable for continuous ingest
    * [ACCUMULO-655] - move test code from server package into its own package
    * [ACCUMULO-663] - RegexFilter make unecessary object creations
    * [ACCUMULO-670] - BatchWriters do not track Throwables beyond Constraint Violations
    * [ACCUMULO-677] - Remove (deprecate) createUser call with authorizations argument
    * [ACCUMULO-690] - Instance Password In logs/tserver_lasho.debug.log
    * [ACCUMULO-692] - Display hostname and port in DEBUG level log messages when unable to connect.
    * [ACCUMULO-698] - Highlight the "thrift is not available" message in thrift.sh
    * [ACCUMULO-699] - Add comments to TestMain indicating its use.
    * [ACCUMULO-700] - Improve iterator configuration for MapReduces
    * [ACCUMULO-703] - Add PrintInfo shortcut to bin/accumulo
    * [ACCUMULO-707] - README typo
    * [ACCUMULO-708] - Modify ClassLoader to support different applications / multi-tenancy
    * [ACCUMULO-713] - Improve Error Message in docs/src/user_manual/build.sh (user manual)
    * [ACCUMULO-714] - ignore generated files by pdflatex in docs/src/user_manual (and sub-directories)
    * [ACCUMULO-717] - expose getConnector() in the Master for FATE Repos
    * [ACCUMULO-718] - make the static methods in ColumnFQ instance methods
    * [ACCUMULO-720] - Add option to egrep and RegExFilter for subsequence matching
    * [ACCUMULO-726] - RFile does not need range check for each next call
    * [ACCUMULO-741] - In SendLogToChainsaw, display CLI parameters upon parse error
    * [ACCUMULO-742] - In FunctionalTest, display CLI parameters upon parse error
    * [ACCUMULO-744] - Allow instance-name and password as parameters to init.
    * [ACCUMULO-745] - Use a CLI library consistently to parse parameters in all utilities.
    * [ACCUMULO-746] - Monitor web-page binds to all interfaces
    * [ACCUMULO-751] - Support Wire Compatibility (between bugfix releases)
    * [ACCUMULO-752] - Add support for importDirectory to the mock instance
    * [ACCUMULO-760] - Batch Writer implementation doesn't need to synchronize on addMutation(String, Iterator)
    * [ACCUMULO-790] - RFile should compress using common prefixes of key elements
    * [ACCUMULO-804] - Hadoop 2.0 Support
    * [ACCUMULO-808] - Add option to pipe shell commands to a file
    * [ACCUMULO-810] - Add authorizations to continuous ingest test
    * [ACCUMULO-817] - Clarify README regarding dfs.support.append
    * [ACCUMULO-824] - Tweak the rc.d levels to have tserver come up before tracers
    * [ACCUMULO-836] - Specify Charset on getBytes() call for String objects.
    * [ACCUMULO-849] - ZooKeeper hosts are not sorted on monitor
    * [ACCUMULO-850] - Replace System.out Message In MutationTest With Asserts
    * [ACCUMULO-851] - Add Mutation Constructor Accepting Byte Array.
    * [ACCUMULO-853] - Fields and parameters that are used as locks change to be final (where possible)
    * [ACCUMULO-855] - Patch to remove acquisition of redundant lock: LiveTServerSet in org.apache.accumulo.server.master
    * [ACCUMULO-882] - Investigate making batch scanner and batch writer timeout idle threads
    * [ACCUMULO-890] - VFS Classloader defaults to Hadoop default ports
    * [ACCUMULO-896] - User manual does not mention if/how tablets are split automatically
    * [ACCUMULO-899] - RemoveEntriesForMissingFiles does not work on cloned tables
    * [ACCUMULO-900] - offline tables should not be colored red
    * [ACCUMULO-904] - Update configuration properties (documentation and names)
    * [ACCUMULO-909] - NPE thrown for tablet readahead thread
    * [ACCUMULO-918] - Support secondary ColumnVisibility filtering
    * [ACCUMULO-923] - Mention the name of the affected table when a per-table load balancer throws ClassNotFoundException
    * [ACCUMULO-937] - Improve C++ support for thrift RPC code generation
    * [ACCUMULO-947] - The 'merge' shell command's help message is a little vague
    * [ACCUMULO-948] - Accumulo Classpath warnings should only be printed with classpath command
    * [ACCUMULO-952] - Default action on `merge` command can be painful
    * [ACCUMULO-956] - Iterator to transform key parts
    * [ACCUMULO-997] - Usage on accumulo missing options
    * [ACCUMULO-1002] - Lift close method on TabletServerBatchReaderImpl to ScannerBase
    * [ACCUMULO-1049] - Master does not need to get tserver lock
    * [ACCUMULO-1127] - Create option to disable dot motion on server activity monitor
    * [ACCUMULO-1142] - Clean up maven test output
    * [ACCUMULO-1146] - Strike occurrence of the non-word "irregardless" from the SortedKeyValueIterator.seek() javadoc
    * [ACCUMULO-1169] - Can't build against CDH3U5
    * [ACCUMULO-1179] - add zookeeper option to accumulo start script
    * [ACCUMULO-1181] - RAT check reports different files missing licenses in OSX than in Linux
    * [ACCUMULO-1182] - Build/Update Developer Manual
    * [ACCUMULO-1196] - "du" should be context aware
    * [ACCUMULO-1201] - Exclude thift classes from cobertura.
    * [ACCUMULO-1202] - Add integration-test phase to maven build by using maven-failsafe-plugin
    * [ACCUMULO-1240] - Use maven plugin (latex-maven-plugin) to generate LaTeX docs
    * [ACCUMULO-1263] - GC's no-trash should be a property, not a flag
    * [ACCUMULO-1281] - flush the METADATA table after GC
    * [ACCUMULO-1304] - concurrent randomwalk never uses null range start or ends
    * [ACCUMULO-1306] - Mock does not implement merging
    * [ACCUMULO-1334] - DU Command in Shell should provide a -h flag for printing out a more human readable format.
    * [ACCUMULO-1354] - Pom simplification with hadoop-client
    * [ACCUMULO-1361] - VisibilityEvaluator throws NPE when passed a zero length byte array
    * [ACCUMULO-1373] - Test all public API method w/ bad credentials
    * [ACCUMULO-1375] - Update README files in proxy module.
    * [ACCUMULO-1381] - Allow PrintInfo to fall back to the local filesystem
    * [ACCUMULO-1414] - Add proxy to user manual documentation
    * [ACCUMULO-1438] - Move MiniAccumuloCluster & Runner packaging to it's own module.

** New Feature
    * [ACCUMULO-19] - Debian packaging support
    * [ACCUMULO-49] - optionally monitor swappiness on every server
    * [ACCUMULO-196] - Add command and control features to the Monitor
    * [ACCUMULO-404] - Support running on-top of Kerberos-enabled HDFS
    * [ACCUMULO-420] - Allow per compaction iterator settings
    * [ACCUMULO-456] - Need utility for exporting and importing tables
    * [ACCUMULO-482] - Add a thrift proxy server
    * [ACCUMULO-705] - Batch Scanner needs timeout
    * [ACCUMULO-706] - Batch Writer needs timeout
    * [ACCUMULO-732] - Shell needs hex formatter
    * [ACCUMULO-735] - Add hooks to shell for transforming scan range
    * [ACCUMULO-739] - Please add dot (.) as a valid character in column visibility tokens
    * [ACCUMULO-791] - Better scripts for start-up (debian)
    * [ACCUMULO-792] - Better scripts for start-up (RHEL)
    * [ACCUMULO-875] - add list compactions command to shell
    * [ACCUMULO-967] - Add addAuths command to shell
    * [ACCUMULO-990] - Need command to cancel compact table operation

** Task
    * [ACCUMULO-82] - Look into using rat for enforcing ASF headers
    * [ACCUMULO-142] - Accumulo Pig
    * [ACCUMULO-150] - Cleanup deprecated items in trunk
    * [ACCUMULO-152] - Purge old utils
    * [ACCUMULO-242] - Make appropriate references to Apache Accumulo
    * [ACCUMULO-288] - Remove MyMapFile
    * [ACCUMULO-353] - "mvn" should not build tgz
    * [ACCUMULO-438] - Rename cloudtrace package to org.apache.accumulo.cloudtrace
    * [ACCUMULO-457] - make mvn site useful
    * [ACCUMULO-464] - Eliminate 'src' directory on trunk at toplevel
    * [ACCUMULO-470] - Clean up maven-jar-plugin configuration
    * [ACCUMULO-478] - Use mvn dependency:analyze to clean up dependency issues
    * [ACCUMULO-548] - Create a contrib area
    * [ACCUMULO-581] - Create functional tests for shell commands that don't have them
    * [ACCUMULO-583] - Bring back unflagged command line options for table commands
    * [ACCUMULO-595] - Clean up EmbeddedWebServer/Monitor
    * [ACCUMULO-600] - Move wikisearch example to contrib
    * [ACCUMULO-618] - Update trace pom to identify artifact as trace and not cloudtrace
    * [ACCUMULO-647] - Make FATE a separate module
    * [ACCUMULO-653] - Use equals instead of compareTo when comparing Keys
    * [ACCUMULO-657] - Remove tests involving logger processes
    * [ACCUMULO-695] - Make input and output formats support the old mapreduce api again
    * [ACCUMULO-704] - Change the target maven lifecycle for user manual pdf creation
    * [ACCUMULO-711] - Aug 2012 Javadoc Cleanup
    * [ACCUMULO-730] - Run MR tests using local job tracker
    * [ACCUMULO-755] - Run findbugs for 1.5
    * [ACCUMULO-786] - Look into walog space usage
    * [ACCUMULO-796] - purge MLock
    * [ACCUMULO-951] - Remove obsolete branches in subversion
    * [ACCUMULO-957] - Modify codestyle formatter to allow turning off the formatter
    * [ACCUMULO-960] - We don't need logger options anymore
    * [ACCUMULO-970] - Release 1.5.0
    * [ACCUMULO-1031] - Modify Code template to not automatically insert javadocs
    * [ACCUMULO-1236] - Remove buildnumber-maven-plugin
    * [ACCUMULO-1269] - Make apache-rat plugin check licenses only on Jenkins for 1.5
    * [ACCUMULO-1320] - Document "provided" dependencies
    * [ACCUMULO-1350] - Drop shell appendix for PDF documentation

** Test
    * [ACCUMULO-23] - Randomwalk test for shutting down
    * [ACCUMULO-262] - Apocalypse Test
    * [ACCUMULO-608] - simple.BloomFilter test too hardware sensitive
    * [ACCUMULO-609] - Update simple.dynamic.DynamicClassLoader to use combiners instead of aggregators

** Wish
    * [ACCUMULO-1212] - AUDIT verbosity in build
