diff --git a/CHANGES.txt b/CHANGES.txt
index 52d2120..2001824 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4455 +1,1466 @@
 HBase Change Log
-Release 0.93.0 - Unreleased
-  *DO NOT ADD ISSUES HERE ON COMMIT ANY MORE.  WE'LL GENERATE THE LIST
-  FROM JIRA INSTEAD WHEN WE MAKE A RELEASE*
 
-Release 0.92.1 - Unreleased
-  BUG FIXES
-   HBASE-5176  AssignmentManager#getRegion: logging nit  adds a redundant '+' (Karthik K)
-   HBASE-5237  Addendum for HBASE-5160 and HBASE-4397 (Ram)
-   HBASE-5235  HLogSplitter writer thread's streams not getting closed when any 
-               of the writer threads has exceptions. (Ram)
-   HBASE-5243  LogSyncerThread not getting shutdown waiting for the interrupted flag (Ram)
-   HBASE-5255  Use singletons for OperationStatus to save memory (Benoit)
-   HBASE-5345  CheckAndPut doesn't work when value is empty byte[] (Evert Arckens)
-   HBASE-5466  Opening a table also opens the metatable and never closes it
-               (Ashley Taylor)
+Release 0.98.1 - 03/16/2014
 
-  TESTS
-   HBASE-5223  TestMetaReaderEditor is missing call to CatalogTracker.stop()
+** Sub-task
+    * [HBASE-9966] - Create IntegrationTest for Online Bloom Filter Change
+    * [HBASE-10169] - Batch coprocessor
+    * [HBASE-10526] - Using Cell instead of KeyValue in HFileOutputFormat
+    * [HBASE-10651] - Fix incorrect handling of IE that restores current thread's interrupt status within while/for loops in Replication
+    * [HBASE-10697] - Convert TestSimpleTotalOrderPartitioner to junit4 test
+    * [HBASE-10717] - TestFSHDFSUtils#testIsSameHdfs fails with IllegalArgumentException running against hadoop 2.3
+    * [HBASE-10723] - Convert TestExplicitColumnTracker to junit4 test
+    * [HBASE-10741] - Deprecate HTablePool and HTableFactory
 
-Release 0.92.0 - 01/23/2012
-  INCOMPATIBLE CHANGES
-   HBASE-2002  Coprocessors: Client side support; Support RPC interface
-               changes at runtime (Gary Helmling via Andrew Purtell)
-   HBASE-3677  Generate a globally unique cluster ID (changed
-               ClusterStatus serialization)
-   HBASE-3762  HTableFactory.releaseHTableInterface() should throw IOException
-               instead of wrapping in RuntimeException (Ted Yu via garyh)
-   HBASE-3629  Update our thrift to 0.6 (Moaz Reyad)
-   HBASE-1502  Remove need for heartbeats in HBase
-   HBASE-451   Remove HTableDescriptor from HRegionInfo (Subbu M Iyer)
-   HBASE-451   Remove HTableDescriptor from HRegionInfo
-               addendum that fixes TestTableMapReduce
-   HBASE-3534  Action should not store or serialize regionName (Ted Yu)
-   HBASE-4197  RegionServer expects all scanner to be subclasses of
-               HRegion.RegionScanner (Lars Hofhansl)
-   HBASE-4233  Update protobuf dependency to 2.4.0a (todd)
-   HBASE-4299  Update to Avro 1.5.3 and use Avro Maven plugin to generate
-               Avro classes. (Alejandro Abdelnur)
-   HBASE-4369  Deprecate HConnection#getZookeeperWatcher in prep for HBASE-1762
-   HBASE-4247  Add isAborted method to the Abortable interface
-               (Akash Ashok)
-   HBASE-4503  Purge deprecated HBaseClusterTestCase
-   HBASE-4374  Up default regions size from 256M to 1G
-   HBASE-4648  Bytes.toBigDecimal() doesn't use offset (Bryan Keller via Lars H)
-   HBASE-4715  Remove stale broke .rb scripts from bin dir
-   HBASE-3433  Remove the KV copy of every KV in Scan; introduced by HBASE-3232 (Lars H)
-   HBASE-5017  Bump the default hfile.block.cache.size because of HFileV2
+** Bug
+    * [HBASE-6642] - enable_all,disable_all,drop_all can call "list" command with regex directly.
+    * [HBASE-8304] - Bulkload fails to remove files if fs.default.name / fs.defaultFS is configured without default port
+    * [HBASE-8803] - region_mover.rb should move multiple regions at a time
+    * [HBASE-9294] - NPE in /rs-status during RS shutdown
+    * [HBASE-9708] - Improve Snapshot Name Error Message
+    * [HBASE-9721] - RegionServer should not accept regionOpen RPC intended for another(previous) server
+    * [HBASE-9778] - Add hint to ExplicitColumnTracker to avoid seeking
+    * [HBASE-9990] - HTable uses the conf for each "newCaller"
+    * [HBASE-10080] - Unnecessary call to locateRegion when creating an HTable instance
+    * [HBASE-10097] - Remove a region name string creation in HRegion#nextInternal
+    * [HBASE-10117] - Avoid synchronization in HRegionScannerImpl.isFilterDone
+    * [HBASE-10313] - Duplicate servlet-api jars in hbase 0.96.0
+    * [HBASE-10413] - Tablesplit.getLength returns 0
+    * [HBASE-10432] - Rpc retries non-recoverable error
+    * [HBASE-10436] - restore regionserver lists removed from hbase 0.96+ jmx
+    * [HBASE-10451] - Enable back Tag compression on HFiles
+    * [HBASE-10452] - Fix potential bugs in exception handlers
+    * [HBASE-10453] - PrefixTree encoding for tags can honor HCD#shouldCompressTags()
+    * [HBASE-10476] - HBase Master log grows very fast after stopped hadoop (due to connection exception)
+    * [HBASE-10481] - API Compatibility JDiff script does not properly handle arguments in reverse order
+    * [HBASE-10482] - ReplicationSyncUp doesn't clean up its ZK, needed for tests
+    * [HBASE-10485] - PrefixFilter#filterKeyValue() should perform filtering on row key
+    * [HBASE-10486] - ProtobufUtil Append & Increment deserialization lost cell level timestamp
+    * [HBASE-10493] - InclusiveStopFilter#filterKeyValue() should perform filtering on row key
+    * [HBASE-10495] - upgrade script is printing usage two times with help option.
+    * [HBASE-10500] - Some tools OOM when BucketCache is enabled
+    * [HBASE-10501] - Improve IncreasingToUpperBoundRegionSplitPolicy to avoid too many regions
+    * [HBASE-10514] - Forward port HBASE-10466, possible data loss when failed flushes
+    * [HBASE-10527] - TestTokenAuthentication fails with the IBM JDK
+    * [HBASE-10534] - Rowkey in TsvImporterTextMapper initializing with wrong length
+    * [HBASE-10537] - Let the ExportSnapshot mapper fail and retry on error
+    * [HBASE-10539] - HRegion.addAndGetGlobalMemstoreSize returns previous size
+    * [HBASE-10545] - RS Hangs waiting on region to close on shutdown; has to timeout before can go down
+    * [HBASE-10546] - Two scanner objects are open for each hbase map task but only one scanner object is closed
+    * [HBASE-10547] - TestFixedLengthWrapper#testReadWrite occasionally fails with the IBM JDK
+    * [HBASE-10548] - Correct commons-math dependency version
+    * [HBASE-10552] - HFilePerformanceEvaluation.GaussianRandomReadBenchmark fails sometimes.
+    * [HBASE-10556] - Possible data loss due to non-handled DroppedSnapshotException for user-triggered flush from client/shell
+    * [HBASE-10563] - Set name for FlushHandler thread
+    * [HBASE-10564] - HRegionServer.nextLong should be removed since it's not used anywhere, or should be used somewhere it meant to
+    * [HBASE-10565] - FavoredNodesPlan accidentally uses an internal Netty type
+    * [HBASE-10567] - Add overwrite manifest option to ExportSnapshot
+    * [HBASE-10575] - ReplicationSource thread can't be terminated if it runs into the loop to contact peer's zk ensemble and fails continuously
+    * [HBASE-10579] - [Documentation]: ExportSnapshot tool package incorrectly documented
+    * [HBASE-10580] - IntegrationTestingUtility#restoreCluster leak resource when running in a mini cluster mode
+    * [HBASE-10581] - ACL znode are left without PBed during upgrading hbase0.94* to hbase0.96+
+    * [HBASE-10582] - 0.94->0.96 Upgrade: ACL can't be repopulated when ACL table contains row for table '-ROOT' or '.META.'
+    * [HBASE-10585] - Avoid early creation of Node objects in LRUDictionary.BidirectionalLRUMap
+    * [HBASE-10586] - hadoop2-compat IPC metric registred twice
+    * [HBASE-10587] - Master metrics clusterRequests is wrong
+    * [HBASE-10594] - Speed up TestRestoreSnapshotFromClient
+    * [HBASE-10598] - Written data can not be read out because MemStore#timeRangeTracker might be updated concurrently
+    * [HBASE-10600] - HTable#batch() should perform validation on empty Put
+    * [HBASE-10604] - Fix parseArgs javadoc
+    * [HBASE-10608] - Acquire the FS Delegation Token for Secure ExportSnapshot
+    * [HBASE-10614] - Master could not be stopped
+    * [HBASE-10618] - User should not be allowed to disable/drop visibility labels table
+    * [HBASE-10621] - Unable to grant user permission to namespace
+    * [HBASE-10622] - Improve log and Exceptions in Export Snapshot 
+    * [HBASE-10624] - Fix 2 new findbugs warnings introduced by HBASE-10598
+    * [HBASE-10627] - A logic mistake in HRegionServer isHealthy
+    * [HBASE-10631] - Avoid extra seek on FileLink open
+    * [HBASE-10632] - Region lost in limbo after ArrayIndexOutOfBoundsException during assignment
+    * [HBASE-10639] - Unload script displays wrong counts (off by one) when unloading regions 
+    * [HBASE-10644] - TestSecureExportSnapshot#testExportFileSystemState fails on hadoop-1
+    * [HBASE-10656] -  high-scale-lib's Counter depends on Oracle (Sun) JRE, and also has some bug
+    * [HBASE-10660] - MR over snapshots can OOM when alternative blockcache is enabled
+    * [HBASE-10662] - RegionScanner is never closed if the region has been moved-out or re-opened when performing scan request
+    * [HBASE-10665] - TestCompaction and TestCompactionWithCoprocessor run too long
+    * [HBASE-10666] - TestMasterCoprocessorExceptionWithAbort hangs at shutdown
+    * [HBASE-10668] - TestExportSnapshot runs too long
+    * [HBASE-10669] - [hbck tool] Usage is wrong for hbck tool for -sidelineCorruptHfiles option
+    * [HBASE-10675] - IntegrationTestIngestWithACL should allow User to be passed as Parameter
+    * [HBASE-10677] - boundaries check in hbck throwing IllegalArgumentException
+    * [HBASE-10679] - Both clients get wrong scan results if the first scanner expires and the second scanner is created with the same scannerId on the same region
+    * [HBASE-10682] - region_mover.rb throws "can't convert nil into String" for regions moved
+    * [HBASE-10685] - [WINDOWS] TestKeyStoreKeyProvider fails on windows
+    * [HBASE-10686] - [WINDOWS] TestStripeStoreFileManager fails on windows
+    * [HBASE-10694] - TableSkewCostFunction#cost() casts integral division result to double
+    * [HBASE-10706] - Disable writeToWal in tests where possible
+    * [HBASE-10716] - [Configuration]: hbase.regionserver.region.split.policy should be part of hbase-default.xml
+    * [HBASE-10718] - TestHLogSplit fails when it sets a KV size to be negative
+    * [HBASE-10726] - Fix java.lang.ArrayIndexOutOfBoundsException in StochasticLoadBalancer$LocalityBasedCandidateGenerator
+    * [HBASE-10731] - Fix environment variables typos in scripts
+    * [HBASE-10736] - Fix Javadoc warnings introduced in HBASE-10169
+    * [HBASE-10737] - HConnectionImplementation should stop RpcClient on close
+    * [HBASE-10738] - AssignmentManager should shut down executors on stop
+    * [HBASE-10739] - RS web UI NPE if master shuts down sooner
+    * [HBASE-10745] - Access ShutdownHook#fsShutdownHooks should be synchronized
+    * [HBASE-10749] - CellComparator.compareStatic() compares type wrongly
+    * [HBASE-10751] - TestHRegion testWritesWhileScanning occasional fail since HBASE-10514 went in
+    * [HBASE-10760] - Wrong methods' names in ClusterLoadState class
+    * [HBASE-10762] - clone_snapshot doesn't check for missing namespace
+    * [HBASE-10763] - Backport HBASE-10549(When there is a hole, LoadIncrementalHFiles will hang in an infinite loop.) to 0.98
 
-  BUG FIXES
-   HBASE-3280  YouAreDeadException being swallowed in HRS getMaster
-   HBASE-3282  Need to retain DeadServers to ensure we don't allow
-               previously expired RS instances to rejoin cluster
-   HBASE-3283  NPE in AssignmentManager if processing shutdown of RS who
-               doesn't have any regions assigned to it
-   HBASE-3173  HBase 2984 breaks ability to specify BLOOMFILTER &
-               COMPRESSION via shell
-   HBASE-3310  Failing creating/altering table with compression agrument from
-               the HBase shell (Igor Ranitovic via Stack)
-   HBASE-3317  Javadoc and Throws Declaration for Bytes.incrementBytes() is
-               Wrong (Ed Kohlwey via Stack)
-   HBASE-1888  KeyValue methods throw NullPointerException instead of
-               IllegalArgumentException during parameter sanity check
-   HBASE-3337  Restore HBCK fix of unassignment and dupe assignment for new
-               master
-   HBASE-3332  Regions stuck in transition after RS failure
-   HBASE-3418  Increment operations can break when qualifiers are split
-               between memstore/snapshot and storefiles
-   HBASE-3403  Region orphaned after failure during split
-   HBASE-3492  NPE while splitting table with empty column family store
-   HBASE-3400  Coprocessor Support for Generic Interfaces
-               (Ed Kohlwey via Gary Helmling)
-   HBASE-3552  Coprocessors are unable to load if RegionServer is launched
-               using a different classloader than system default
-   HBASE-3578  TableInputFormat does not setup the configuration for HBase
-               mapreduce jobs correctly (Dan Harvey via Stack)
-   HBASE-3601  TestMasterFailover broken in TRUNK
-   HBASE-3605  Fix balancer log message
-   HBASE-3538  Column families allow to have slashes in name (Ian Knome via Stack)
-   HBASE-3313  Table name isn't checked in isTableEnabled/isTableDisabled
-               (Ted Yu via Stack)
-   HBASE-3514  Speedup HFile.Writer append (Matteo Bertozzi via Ryan)
-   HBASE-3665  tighten assertions for testBloomFilterSize
-   HBASE-3662  REST server does not respect client supplied max versions when
-               creating scanner
-   HBASE-3641  LruBlockCache.CacheStats.getHitCount() is not using the
-               correct variable
-   HBASE-3532  HRegion#equals is broken (Ted Yu via Stack)
-   HBASE-3697  Admin actions that use MetaReader to iterate regions need to
-               skip offline ones
-   HBASE-3583  Coprocessors: scannerNext and scannerClose hooks are called
-               when HRegionInterface#get is invoked (Mingjie Lai via
-               Andrew Purtell)
-   HBASE-3688  Setters of class HTableDescriptor do not work properly
-   HBASE-3702  Fix NPE in Exec method parameter serialization
-   HBASE-3709  HFile compression not sharing configuration
-   HBASE-3711  importtsv fails if rowkey length exceeds MAX_ROW_LENGTH
-               (Kazuki Ohta via todd)
-   HBASE-3716  Intermittent TestRegionRebalancing failure
-               (Ted Yu via Stack)
-   HBASE-3712  HTable.close() doesn't shutdown thread pool
-               (Ted Yu via Stack)
-   HBASE-3238  HBase needs to have the CREATE permission on the parent of its
-               ZooKeeper parent znode (Alex Newman via Stack)
-   HBASE-3728  NPE in HTablePool.closeTablePool (Ted Yu via Stack)
-   HBASE-3733  MemStoreFlusher.flushOneForGlobalPressure() shouldn't
-               be using TreeSet for HRegion (Ted Yu via J-D)
-   HBASE-3739  HMaster.getProtocolVersion() should distinguish
-               HMasterInterface and HMasterRegionInterface versions
-   HBASE-3723  Major compact should be done when there is only one storefile
-               and some keyvalue is outdated (Zhou Shuaifeng via Stack)
-   HBASE-3624  Only one coprocessor of each priority can be loaded for a table
-   HBASE-3598  Broken formatting in LRU stats output (Erik Onnen)
-   HBASE-3758  Delete triggers pre/postScannerOpen upcalls of RegionObserver
-               (Mingjie Lai via garyh)
-   HBASE-3790  Fix NPE in ExecResult.write() with null return value
-   HBASE-3781  hbase shell cannot start "NoMethodError: undefined method
-               `close' for nil:NilClass" (Mikael Sitruk)
-   HBASE-3802  Redundant list creation in HRegion
-   HBASE-3788  Two error handlings in AssignmentManager.setOfflineInZooKeeper()
-               (Ted Yu)
-   HBASE-3800  HMaster is not able to start due to AlreadyCreatedException
-   HBASE-3806  distributed log splitting double escapes task names
-               (Prakash Khemani)
-   HBASE-3819  TestSplitLogWorker has too many SLWs running -- makes for
-               contention and occasional failures
-   HBASE-3210  HBASE-1921 for the new master
-   HBASE-3827  hbase-1502, removing heartbeats, broke master joining a running
-               cluster and was returning master hostname for rs to use
-   HBASE-3829  TestMasterFailover failures in jenkins
-   HBASE-3843  splitLogWorker starts too early (Prakash Khemani)
-   HBASE-3838  RegionCoprocesorHost.preWALRestore throws npe in case there is
-               no RegionObserver registered (Himanshu Vashishtha)
-   HBASE-3847  Turn off DEBUG logging of RPCs in WriteableRPCEngine on TRUNK
-   HBASE-3777  Redefine Identity Of HBase Configuration (Karthick Sankarachary)
-   HBASE-3849  Fix master ui; hbase-1502 broke requests/second
-   HBASE-3853  Fix TestInfoServers to pass after HBASE-3835 (todd)
-   HBASE-3862  Race conditions in aggregate calculation (John Heitmann)
-   HBASE-3865  Failing TestWALReplay
-   HBASE-3864  Rename of hfile.min.blocksize.size in HBASE-2899 reverted in
-               HBASE-1861 (Aaron T. Myers)
-   HBASE-3876  TestCoprocessorInterface.testCoprocessorInterface broke on
-               jenkins and local
-   HBASE-3897  Docs (notsoquick guide) suggest invalid XML (Philip Zeyliger)
-   HBASE-3898  TestSplitTransactionOnCluster broke in TRUNK
-   HBASE-3826  Minor compaction needs to check if still over
-               compactionThreshold after compacting (Nicolas Spiegelberg)  
-   HBASE-3912  [Stargate] Columns not handle by Scan
-   HBASE-3903  A successful write to client write-buffer may be lost or not
-               visible (Doug Meil)
-   HBASE-3894  Thread contention over row locks set monitor (Dave Latham)
-   HBASE-3959  hadoop-snappy version in the pom.xml is incorrect
-               (Alejandro Abdelnur)
-   HBASE-3971  Compression.java uses ClassLoader.getSystemClassLoader()
-               to load codec (Alejandro Abdelnur)
-   HBASE-3979  Trivial fixes in code, document (Ming Ma)
-   HBASE-3794  Ability to Discard Bad HTable Puts
-   HBASE-3923  HBASE-1502 Broke Shell's status 'simple' and 'detailed'
-   HBASE-3978  Rowlock lease renew doesn't work when custom coprocessor
-               indicates to bypass default action (Ming Ma)
-   HBASE-3963  Schedule all log-spliiting at startup all at once (mingjian)
-   HBASE-3983  list command in shell seems broken
-   HBASE-3793  HBASE-3468 Broke checkAndPut with null value (Ming Ma)
-   HBASE-3889  NPE in Distributed Log Splitting (Anirudh Todi)
-   HBASE-4000  You can't specify split points when you create a table in
-               the shell (Joey Echeverria)
-   HBASE-4029  Inappropriate checking of Logging Mode in HRegionServer
-               (Akash Ashok via Ted Yu)
-   HBASE-4037  Add timeout annotations to preempt surefire killing
-               all tests
-   HBASE-4024  Major compaction may not be triggered, even though region
-               server log says it is triggered (Ted Yu)
-   HBASE-4016  HRegion.incrementColumnValue() doesn't have a consistent
-               behavior when the field that we are incrementing is less
-               than 8 bytes long (Li Pi)
-   HBASE-4012  Further optimize byte comparison methods (Ted Yu)
-   HBASE-4037  Add timeout annotations to preempt surefire killing
-               all tests - TestFullLogReconstruction
-   HBASE-4051  [Coprocessors] Table coprocessor loaded twice when region is
-               initialized
-   HBASE-4059  If a region is split during RS shutdown process, the daughter
-               regions are NOT made online by master
-   HBASE-3904  HBA.createTable(final HTableDescriptor desc, byte [][] splitKeys)
-               should be synchronous
-   HBASE-4053  Most of the regions were added into AssignmentManager#servers twice
-   HBASE-4061  getTableDirs is missing directories to skip
-   HBASE-3867  when cluster is stopped and server which hosted meta region is
-               removed from cluster, master breaks down after restarting cluster.
-   HBASE-4074  When a RS has hostname with uppercase letter, there are two
-               RS entries in master (Weihua via Ted Yu)
-   HBASE-4077  Deadlock if WrongRegionException is thrown from getLock in
-               HRegion.delete (Adam Warrington via Ted Yu)
-   HBASE-3893  HRegion.internalObtainRowLock shouldn't wait forever
-   HBASE-4075  A bug in TestZKBasedOpenCloseRegion (Jieshan Bean via Ted Yu)
-   HBASE-4087  HBaseAdmin should perform validation of connection it holds
-   HBASE-4052  Enabling a table after master switch does not allow table scan,
-               throwing NotServingRegionException (ramkrishna via Ted Yu)
-   HBASE-4112  Creating table may throw NullPointerException (Jinchao via Ted Yu)
-   HBASE-4093  When verifyAndAssignRoot throws exception, the deadServers state
-               cannot be changed (fulin wang via Ted Yu)
-   HBASE-4118  method regionserver.MemStore#updateColumnValue: the check for 
-               qualifier and family is missing (N Keywal via Ted Yu)
-   HBASE-4127  Don't modify table's name away in HBaseAdmin
-   HBASE-4105  Stargate does not support Content-Type: application/json and
-               Content-Encoding: gzip in parallel
-   HBASE-4116  [stargate] StringIndexOutOfBoundsException in row spec parse
-               (Allan Yan)
-   HBASE-3845  data loss because lastSeqWritten can miss memstore edits
-               (Prakash Khemani and ramkrishna.s.vasudevan)
-   HBASE-4083  If Enable table is not completed and is partial, then scanning of
-               the table is not working (ramkrishna.s.vasudevan)
-   HBASE-4138  If zookeeper.znode.parent is not specifed explicitly in Client
-               code then HTable object loops continuously waiting for the root region
-               by using /hbase as the base node.(ramkrishna.s.vasudevan)
-   HBASE-4032  HBASE-451 improperly breaks public API HRegionInfo#getTableDesc
-   HBASE-4003  Cleanup Calls Conservatively On Timeout (Karthick)
-   HBASE-3857  Fix TestHFileBlock.testBlockHeapSize test failure (Mikhail)
-   HBASE-4150  Don't enforce pool size limit with ThreadLocalPool
-               (Karthick Sankarachary via garyh)
-   HBASE-4171  HBase shell broken in trunk (Lars Hofhansl)
-   HBASE-4162  Fix TestHRegionInfo.testGetSetOfHTD: delete /tmp/hbase-<username>
-               if it already exists (Mikhail Bautin)
-   HBASE-4179  Failed to run RowCounter on top of Hadoop branch-0.22
-               (Michael Weng)
-   HBASE-4181  HConnectionManager can't find cached HRegionInterface and makes clients
-               work very slow (Jia Liu)
-   HBASE-4156  ZKConfig defaults clientPort improperly (Michajlo Matijkiw)
-   HBASE-4184  CatalogJanitor doesn't work properly when "fs.default.name" isn't
-               set in config file (Ming Ma)
-   HBASE-4186  No region is added to regionsInTransitionInRS
-   HBASE-4194  RegionSplitter: Split on under-loaded region servers first
-   HBASE-2399  Forced splits only act on the first family in a table (Ming Ma)
-   HBASE-4211  Do init-sizing of the StringBuilder making a ServerName
-               (Benoît Sigoure)
-   HBASE-4175  Fix FSUtils.createTableDescriptor() (Ramkrishna)
-   HBASE-4008  Problem while stopping HBase (Akash Ashok)
-   HBASE-4065  TableOutputFormat ignores failure to create table instance
-               (Brock Noland)
-   HBASE-4167  Potential leak of HTable instances when using HTablePool with
-               PoolType.ThreadLocal (Karthick Sankarachary)
-   HBASE-4239  HBASE-4012 introduced duplicate variable Bytes.LONG_BYTES
-   HBASE-4225  NoSuchColumnFamilyException in multi doesn't say which family
-               is bad (Ramkrishna Vasudevan)
-   HBASE-4220  Lots of DNS queries from client
-   HBASE-4253  Intermittent test failure because of missing config parameter in new
-               HTable(tablename) (Ramkrishna)
-   HBASE-4217  HRS.closeRegion should be able to close regions with only
-               the encoded name (ramkrishna.s.vasudevan)
-   HBASE-3229  HBASE-3229 Table creation, though using "async" call to master,
-               can actually run for a while and cause RPC timeout (Ming Ma)
-   HBASE-4252  TestLogRolling's low-probability failure (Jieshan Bean)
-   HBASE-4278  Race condition in Slab.java that occurs due to spinlock unlocking
-               early (Li Pi)
-   HBASE-4269  Add tests and restore semantics to TableInputFormat/TableRecordReader
-               (Jonathan Hsieh)
-   HBASE-4290  HLogSplitter doesn't mark its MonitoredTask as complete in
-               non-distributed case (todd)
-   HBASE-4303  HRegionInfo.toString has bad quoting (todd)
-   HBASE-4307  race condition in CacheTestUtils (Li Pi)
-   HBASE-4310  SlabCache metrics bugfix (Li Pi)
-   HBASE-4283  HBaseAdmin never recovers from restarted cluster (Lars Hofhansl)
-   HBASE-4315  RPC logging too verbose (todd)
-   HBASE-4273  java.lang.NullPointerException when a table is being disabled and
-               HMaster restarts (Ming Ma)
-   HBASE-4027  Off Heap Cache never creates Slabs (Li Pi)
-   HBASE-4265  zookeeper.KeeperException$NodeExistsException if HMaster restarts
-               while table is being disabled (Ming Ma)
-   HBASE-4338  Package build for rpm and deb are broken (Eric Yang)
-   HBASE-4309  slow query log metrics spewing warnings (Riley Patterson)
-   HBASE-4302  Only run Snappy compression tests if Snappy is available
-               (Alejandro Abdelnur via todd)
-   HBASE-4271  Clean up coprocessor handling of table operations
-               (Ming Ma via garyh)
-   HBASE-4341  HRS#closeAllRegions should take care of HRS#onlineRegions's
-               weak consistency (Jieshan Bean)
-   HBASE-4297  TableMapReduceUtil overwrites user supplied options
-               (Jan Lukavsky)
-   HBASE-4015  Refactor the TimeoutMonitor to make it less racy
-               (ramkrishna.s.vasudevan)
-   HBASE-4350  Fix a Bloom filter bug introduced by HFile v2 and
-               TestMultiColumnScanner that caught it (Mikhail Bautin)
-   HBASE-4007  distributed log splitting can get indefinitely stuck
-               (Prakash Khemani)
-   HBASE-4301  META migration from 0.90 to trunk fails (Subbu Iyer)
-   HBASE-4331  Bypassing default actions in prePut fails sometimes with
-               HTable client (Lars Hofhansl via garyh)
-   HBASE-4340  Hbase can't balance if ServerShutdownHandler encountered
-               exception (Jinchao Gao)
-   HBASE-4394  Add support for seeking hints to FilterList
-   HBASE-4406  TestOpenRegionHandler failing after HBASE-4287 (todd)
-   HBASE-4330  Fix races in slab cache (Li Pi & Todd)
-   HBASE-4383  SlabCache reports negative heap sizes (Li Pi)
-   HBASE-4351  If from Admin we try to unassign a region forcefully,
-               though a valid region name is given the master is not able
-               to identify the region to unassign (Ramkrishna)
-   HBASE-4363  [replication] ReplicationSource won't close if failing
-               to contact the sink (JD and Lars Hofhansl)
-   HBASE-4390  [replication] ReplicationSource's UncaughtExceptionHandler
-               shouldn't join
-   HBASE-4395  EnableTableHandler races with itself
-   HBASE-4414  Region splits by size not being triggered
-   HBASE-4322  HBASE-4322 [hbck] Update checkIntegrity/checkRegionChain
-               to present more accurate region split problem 
-               (Jon Hseih)
-   HBASE-4417  HBaseAdmin.checkHBaseAvailable() doesn't close ZooKeeper connections
-               (Stefan Seelmann)
-   HBASE-4195  Possible inconsistency in a memstore read after a reseek,
-               possible performance improvement (nkeywal)
-   HBASE-4420  MasterObserver preMove() and postMove() should throw
-               IOException instead of UnknownRegionException
-   HBASE-4419  Resolve build warning messages (Praveen Patibandia)
-   HBASE-4428  Two methods in CacheTestUtils don't call setDaemon() on the threads
-   HBASE-4400  .META. getting stuck if RS hosting it is dead and znode state is in
-               RS_ZK_REGION_OPENED (Ramkrishna)
-   HBASE-3421  Very wide rows -- 30M plus -- cause us OOME (Nate Putnam)
-   HBASE-4153  Handle RegionAlreadyInTransitionException in AssignmentManager
-               (Ramkrishna)
-   HBASE-4452  Possibility of RS opening a region though tickleOpening fails due to
-               znode version mismatch (Ramkrishna)
-   HBASE-4446  Rolling restart RSs scenario, regions could stay in OPENING state
-               (Ming Ma)
-   HBASE-4468  Wrong resource name in an error massage: webapps instead of
-               hbase-webapps (nkeywal)
-   HBASE-4472  MiniHBaseCluster.shutdown() doesn't work if no active master
-   HBASE-4455  Rolling restart RSs scenario, -ROOT-, .META. regions are lost in
-               AssignmentManager (Ming Ma)
-   HBASE-4513  NOTICES.txt refers to Facebook for Thrift
-   HBASE-3130  [replication] ReplicationSource can't recover from session
-               expired on remote clusters (Chris Trezzo via JD)
-   HBASE-4212  TestMasterFailover fails occasionally (Gao Jinchao)
-   HBASE-4412  No need to retry scan operation on the same server in case of
-               RegionServerStoppedException (Ming Ma)
-   HBASE-4476  Compactions must fail if column tracker gets columns out of order
-               (Mikhail Bautin)
-   HBASE-4209  The HBase hbase-daemon.sh SIGKILLs master when stopping it
-               (Roman Shaposhnik)
-   HBASE-4496  HFile V2 does not honor setCacheBlocks when scanning (Lars and Mikhail)
-   HBASE-4531  hbase-4454 failsafe broke mvn site; back it out or fix
-               (Akash Ashok)
-   HBASE-4334  HRegion.get never validates row (Lars Hofhansl)
-   HBASE-4494  AvroServer:: get fails with NPE on a non-existent row
-               (Kay Kay)
-   HBASE-4481  TestMergeTool failed in 0.92 build 20
-   HBASE-4386  Fix a potential NPE in TaskMonitor (todd)
-   HBASE-4402  Retaining locality after restart broken
-   HBASE-4482  Race Condition Concerning Eviction in SlabCache (Li Pi)
-   HBASE-4547  TestAdmin failing in 0.92 because .tableinfo not found
-   HBASE-4540  OpenedRegionHandler is not enforcing atomicity of the operation
-               it is performing(Ram)
-   HBASE-4335  Splits can create temporary holes in .META. that confuse clients
-               and regionservers (Lars H)
-   HBASE-4555  TestShell seems passed, but actually errors seen in test output
-               file (Mingjie Lai)
-   HBASE-4582  Store.java cleanup (failing TestHeapSize and has warnings)
-   HBASE-4556  Fix all incorrect uses of InternalScanner.next(...) (Lars H)
-   HBASE-4078  Validate store files after flush/compaction
-   HBASE-3417  CacheOnWrite is using the temporary output path for block
-               names, need to use a more consistent block naming scheme (jgray)
-   HBASE-4551  Fix pom and some test cases to compile and run against
-               Hadoop 0.23 (todd)
-   HBASE-3446  ProcessServerShutdown fails if META moves, orphaning lots of
-               regions
-   HBASE-4589  CacheOnWrite broken in some cases because it can conflict
-               with evictOnClose (jgray)
-   HBASE-4579  CST.requestCompaction semantics changed, logs are now
-               spammed when too many store files
-   HBASE-4620  I broke the build when I submitted HBASE-3581 (Send length
-               of the rpc response)
-   HBASE-4621  TestAvroServer fails quite often intermittently (Akash Ashok)
-   HBASE-4378  [hbck] Does not complain about regions with startkey==endkey.
-               (Jonathan Hsieh)
-   HBASE-4459  HbaseObjectWritable code is a byte, we will eventually run out of codes
-   HBASE-4430  Disable TestSlabCache and TestSingleSizedCache temporarily to
-               see if these are cause of build box failure though all tests
-               pass (Li Pi)
-   HBASE-4510  Check and workaround usage of internal HDFS APIs in HBase
-               (Harsh)
-   HBASE-4595  HFilePrettyPrinter Scanned kv count always 0 (Matteo Bertozzi)
-   HBASE-4580  Some invalid zk nodes were created when a clean cluster restarts
-               (Gaojinchao)
-   HBASE-4588  The floating point arithmetic to validate memory allocation
-               configurations need to be done as integers (dhruba)
-   HBASE-4647  RAT finds about 40 files missing licenses
-   HBASE-4642  Add Apache License Header
-   HBASE-4591  TTL for old HLogs should be calculated from last modification time.
-   HBASE-4578  NPE when altering a table that has moving regions (gaojinchao)
-   HBASE-4070  Improve region server metrics to report loaded coprocessors to
-               master (Eugene Koontz via apurtell)
-   HBASE-3512  Shell support for listing currently loaded coprocessors (Eugene
-               Koontz via apurtell)
-   HBASE-4670  Fix javadoc warnings
-   HBASE-4367  Deadlock in MemStore flusher due to JDK internally synchronizing
-               on current thread
-   HBASE-4645  Edits Log recovery losing data across column families
-   HBASE-4634  "test.build.data" property overused leading to write data at the
-               wrong place (nkeywal)
-   HBASE-4388  Second start after migration from 90 to trunk crashes
-   HBASE-4685  TestDistributedLogSplitting.testOrphanLogCreation failing because
-               of ArithmeticException: / by zero.
-   HBASE-4300  Start of new-version master fails if old master's znode is
-               hanging around
-   HBASE-4679  Thrift null mutation error
-   HBASE-4304  requestsPerSecond counter stuck at 0 (Li Pi)
-   HBASE-4692  HBASE-4300 broke the build
-   HBASE-4641  Block cache can be mistakenly instantiated on Master (jgray)
-   HBASE-4687  regionserver may miss zk-heartbeats to master when replaying
-               edits at region open (prakash via jgray)
-   HBASE-4701  TestMasterObserver fails up on jenkins
-   HBASE-4700  TestSplitTransactionOnCluster fails on occasion when it tries
-               to move a region
-   HBASE-4613  hbase.util.Threads#threadDumpingIsAlive sleeps 1 second,
-               slowing down the shutdown by 0.5s
-   HBASE-4552  multi-CF bulk load is not atomic across column families (Jonathan Hsieh)
-   HBASE-4710  UnknownProtocolException should abort client retries
-   HBASE-4695  WAL logs get deleted before region server can fully flush
-               (gaojinchao)
-   HBASE-4708  Revert safemode related pieces of hbase-4510 (Harsh J)
-   HBASE-3515  [replication] ReplicationSource can miss a log after RS comes out of GC
-   HBASE-4713  Raise debug level to warn on ExecutionException in
-               HConnectionManager$HConnectionImplementation (Lucian George Iordache)
-   HBASE-4716  Improve locking for single column family bulk load
-   HBASE-4609  ThriftServer.getRegionInfo() is expecting old ServerName format, need to
-               use new Addressing class instead (Jonathan Gray)
-   HBASE-4719  HBase script assumes pre-Hadoop 0.21 layout of jar files
-               (Roman Shposhnik)
-   HBASE-4553  The update of .tableinfo is not atomic; we remove then rename
-   HBASE-4725  NPE in AM#updateTimers
-   HBASE-4745  LRU statistics thread should be a daemon
-   HBASE-4749  TestMasterFailover#testMasterFailoverWithMockedRITOnDeadRS
-               occasionally fails
-   HBASE-4753  org.apache.hadoop.hbase.regionserver.TestHRegionInfo#testGetSetOfHTD
-               throws NPE on trunk (nkeywal)
-   HBASE-4754  FSTableDescriptors.getTableInfoPath() should handle FileNotFoundException
-   HBASE-4740  [bulk load] the HBASE-4552 API can't tell if errors on region server are recoverable
-               (Jonathan Hsieh)
-   HBASE-4741  Online schema change doesn't return errors
-   HBASE-4734  [bulk load] Warn if bulk load directory contained no files
-   HBASE-4723  Loads of NotAllMetaRegionsOnlineException traces when starting
-               the master
-   HBASE-4511  There is data loss when master failovers
-   HBASE-4577  Region server reports storefileSizeMB bigger than
-               storefileUncompressedSizeMB (gaojinchao)
-   HBASE-4478  Improve AssignmentManager.handleRegion so that it can process certain ZK state
-               in the case of RS offline
-   HBASE-4777  Write back to client 'incompatible' if we show up with wrong version
-   HBASE-4775  Remove -ea from all but tests; enable it if you need it testing
-   HBASE-4784  Void return types not handled correctly for CoprocessorProtocol
-               methods
-   HBASE-4792  SplitRegionHandler doesn't care if it deletes the znode or not,
-               leaves the parent region stuck offline
-   HBASE-4793  HBase shell still using deprecated methods removed in HBASE-4436
-   HBASE-4801  alter_status shell prints sensible message at completion
-   HBASE-4796  Race between SplitRegionHandlers for the same region kills the master
-   HBASE-4816  Regionserver wouldn't go down because split happened exactly at same
-               time we issued bulk user region close call on our way out
-   HBASE-4815  Disable online altering by default, create a config for it
-   HBASE-4623  Remove @deprecated Scan methods in 0.90 from TRUNK and 0.92
-   HBASE-4842  [hbck] Fix intermittent failures on TestHBaseFsck.testHBaseFsck
-               (Jon Hsieh)
-   HBASE-4308  Race between RegionOpenedHandler and AssignmentManager (Ram)
-   HBASE-4857  Recursive loop on KeeperException in
-               AuthenticationTokenSecretManager/ZKLeaderManager
-   HBASE-4739  Master dying while going to close a region can leave it in transition
-               forever (Gao Jinchao)
-   HBASE-4855  SplitLogManager hangs on cluster restart due to batch.installed doubly counted
-   HBASE-4877  TestHCM failing sporadically on jenkins and always for me on an
-               ubuntu machine
-   HBASE-4878  Master crash when splitting hlog may cause data loss (Chunhui Shen)
-   HBASE-4945  NPE in HRegion.bulkLoadHFiles (Andrew P and Lars H)
-   HBASE-4942  HMaster is unable to start of HFile V1 is used (Honghua Zhu)
-   HBASE-4610  Port HBASE-3380 (Master failover can split logs of live servers) to 92/trunk
-   HBASE-4946  HTable.coprocessorExec (and possibly coprocessorProxy) does not work with
-               dynamically loaded coprocessors (Andrei Dragomir)
-   HBASE-5026  Add coprocessor hook to HRegionServer.ScannerListener.leaseExpired()
-   HBASE-4935  hbase 0.92.0 doesn't work going against 0.20.205.0, its packaged hadoop
-   HBASE-5078  DistributedLogSplitter failing to split file because it has edits for
-               lots of regions
-   HBASE-5077  SplitLogWorker fails to let go of a task, kills the RS
-   HBASE-5096  Replication does not handle deletes correctly. (Lars H)
-   HBASE-5103  Fix improper master znode deserialization (Jonathan Hsieh)
-   HBASE-5099  ZK event thread waiting for root region assignment may block server
-               shutdown handler for the region sever the root region was on (Jimmy)
-   HBASE-5100  Rollback of split could cause closed region to be opened again (Chunhui)
-   HBASE-4397  -ROOT-, .META. tables stay offline for too long in recovery phase after all RSs
-               are shutdown at the same time (Ming Ma)
-   HBASE-5094  The META can hold an entry for a region with a different server name from the one  
-               actually in the AssignmentManager thus making the region inaccessible. (Ram)
-   HBASE-5081  Distributed log splitting deleteNode races against splitLog retry (Prakash)
-   HBASE-4357  Region stayed in transition - in closing state (Ming Ma)
-   HBASE-5088  A concurrency issue on SoftValueSortedMap (Jieshan Bean and Lars H)
-   HBASE-5152  Region is on service before completing initialization when doing rollback of split,
-               it will affect read correctness (Chunhui)
-   HBASE-5137  MasterFileSystem.splitLog() should abort even if waitOnSafeMode() throws IOException(Ted)
-   HBASE-5121  MajorCompaction may affect scan's correctness (chunhui shen and Lars H)
-   HBASE-5143  Fix config typo in pluggable load balancer factory (Harsh J)
-   HBASE-5196  Failure in region split after PONR could cause region hole (Jimmy Xiang)
+** Improvement
+    * [HBASE-7849] - Provide administrative limits around bulkloads of files into a single region
+    * [HBASE-8076] - add better doc for HBaseAdmin#offline API.
+    * [HBASE-8604] - improve reporting of incorrect peer address in replication
+    * [HBASE-9501] - Provide throttling for replication
+    * [HBASE-9999] - Add support for small reverse scan
+    * [HBASE-10389] - Add namespace help info in table related shell commands
+    * [HBASE-10487] - Avoid allocating new KeyValue and according bytes-copying for appended kvs which don't have existing values
+    * [HBASE-10498] - Add new APIs to load balancer interface
+    * [HBASE-10511] - Add latency percentiles on PerformanceEvaluation
+    * [HBASE-10518] - DirectMemoryUtils.getDirectMemoryUsage spams when none is configured
+    * [HBASE-10570] - Allow overrides of Surefire secondPartForkMode and testFailureIgnore
+    * [HBASE-10589] - Reduce unnecessary TestRowProcessorEndpoint resource usage
+    * [HBASE-10592] - Refactor PerformanceEvaluation tool
+    * [HBASE-10597] - IOEngine#read() should return the number of bytes transferred
+    * [HBASE-10638] - Improve error message when there is no region server available for move
+    * [HBASE-10678] - Make verifyrep tool implement toolrunner
+    * [HBASE-10693] - Correct declarations of Atomic* fields from 'volatile' to 'final'
+    * [HBASE-10744] - AM#CloseRegion no need to retry on FailedServerException
 
-  TESTS
-   HBASE-4450  test for number of blocks read: to serve as baseline for expected
-               blocks read and for catching regressions (Kannan)
-   HBASE-4492  TestRollingRestart fails intermittently (Ted Yu and Ram)
-   HBASE-4512  JVMClusterUtil throwing wrong exception when master thread cannot be created (Ram)
-   HBASE-4479  TestMasterFailover failure in Hbase-0.92#17(Ram)
-   HBASE-4651  ConcurrentModificationException might be thrown in
-               TestHCM.testConnectionUniqueness (Jinchao)
-   HBASE-4518  TestServerCustomProtocol fails intermittently
-   HBASE-4790  Occasional TestDistributedLogSplitting failure (Jinchao)
-   HBASE-4864  TestMasterObserver#testRegionTransitionOperations occasionally
-               fails (Gao Jinchao)
-   HBASE-4868  TestOfflineMetaRebuildBase#testMetaRebuild occasionally fails
-               (Gao Jinchao)
-   HBASE-4874  Run tests with non-secure random, some tests hang otherwise (Lars H)
-   HBASE-5112  TestReplication#queueFailover flaky due to potentially
-               uninitialized Scan (Jimmy Xiang)
-   HBASE-5113  TestDrainingServer expects round robin region assignment but misses a
-               config parameter
-   HBASE-5105  TestImportTsv failed with hadoop 0.22 (Ming Ma)
+** New Feature
+    * [HBASE-8751] - Enable peer cluster to choose/change the ColumnFamilies/Tables it really want to replicate from a source cluster
 
-  IMPROVEMENTS
-   HBASE-3290  Max Compaction Size (Nicolas Spiegelberg via Stack)  
-   HBASE-3292  Expose block cache hit/miss/evict counts into region server
-               metrics
-   HBASE-2936  Differentiate between daemon & restart sleep periods
-   HBASE-3316  Add support for Java Serialization to HbaseObjectWritable
-               (Ed Kohlwey via Stack)
-   HBASE-1861  Multi-Family support for bulk upload tools
-   HBASE-3308  SplitTransaction.splitStoreFiles slows splits a lot
-   HBASE-3328  Added Admin API to specify explicit split points
-   HBASE-3377  Upgrade Jetty to 6.1.26
-   HBASE-3393  Update Avro gateway to use Avro 1.4.1 and the new
-               server.join() method (Jeff Hammerbacher via Stack)
-   HBASE-3433  KeyValue API to explicitly distinguish between deep & shallow
-               copies
-   HBASE-3522  Unbundle our RPC versioning; rather than a global for all 4
-               Interfaces -- region, master, region to master, and
-               coprocesssors -- instead version each individually
-   HBASE-3520  Update our bundled hadoop from branch-0.20-append to latest
-               (rpc version 43)
-   HBASE-3563  [site] Add one-page-only version of hbase doc
-   HBASE-3564  DemoClient.pl - a demo client in Perl
-   HBASE-3560  the hbase-default entry of "hbase.defaults.for.version" 
-               causes tests not to run via not-maven
-   HBASE-3513  upgrade thrift to 0.5.0 and use mvn version
-   HBASE-3533  Allow HBASE_LIBRARY_PATH env var to specify extra locations
-               of native lib
-   HBASE-3631  CLONE - HBase 2984 breaks ability to specify BLOOMFILTER &
-               COMPRESSION via shell
-   HBASE-3630  DemoClient.Java is outdated (Moaz Reyed via Stack)
-   HBASE-3618  Add to HBase book, 'schema' chapter - pre-creating regions and
-               key types (Doug Meil via Stack)
-   HBASE-2495  Allow record filtering with selected row key values in HBase
-               Export (Subbu M Iyer via Stack)
-   HBASE-3440  Clean out load_table.rb and make sure all roads lead to
-               completebulkload tool (Vidhyashankar Venkataraman via Stack)
-   HBASE-3653  Parallelize Server Requests on HBase Client
-   HBASE-3657  reduce copying of HRegionInfo's (Ted Yu via Stack)
-   HBASE-3422  Balancer will try to rebalance thousands of regions in one go;
-               needs an upper bound added (Ted Yu via Stack)
-   HBASE-3676  Update region server load for AssignmentManager through
-               regionServerReport() (Ted Yu via Stack)
-   HBASE-3468  Enhance checkAndPut and checkAndDelete with comparators
-   HBASE-3683  NMapInputFormat should use a different config param for
-               number of maps
-   HBASE-3673  Reduce HTable Pool Contention Using Concurrent Collections
-               (Karthick Sankarachary via Stack)
-   HBASE-3474  HFileOutputFormat to use column family's compression algorithm
-   HBASE-3541  REST Multi Gets (Elliott Clark via Stack)
-   HBASE-3052  Add ability to have multiple ZK servers in a quorum in
-               MiniZooKeeperCluster for test writing (Liyin Tang via Stack)
-   HBASE-3693  isMajorCompaction() check triggers lots of listStatus DFS RPC
-               calls from HBase (Liyin Tang via Stack)
-   HBASE-3717  deprecate HTable isTableEnabled() methods in favor of
-               HBaseAdmin methods (David Butler via Stack)
-   HBASE-3720  Book.xml - porting conceptual-view / physical-view sections of
-               HBaseArchitecture wiki (Doug Meil via Stack)
-   HBASE-3705  Allow passing timestamp into importtsv (Andy Sautins via Stack)
-   HBASE-3715  Book.xml - adding architecture section on client, adding section
-               on spec-ex under mapreduce (Doug Meil via Stack)
-   HBASE-3684  Support column range filter (Jerry Chen via Stack)
-   HBASE-3647  Distinguish read and write request count in region
-               (Ted Yu via Stack)
-   HBASE-3704  Show per region request count in table.jsp
-               (Ted Yu via Stack)
-   HBASE-3694  high multiput latency due to checking global mem store size
-               in a synchronized function (Liyin Tang via Stack)
-   HBASE-3710  Book.xml - fill out descriptions of metrics
-               (Doug Meil via Stack)
-   HBASE-3738  Book.xml - expanding Architecture Client section
-               (Doug Meil via Stack)
-   HBASE-3587  Eliminate use of read-write lock to guard loaded
-               coprocessor collection
-   HBASE-3729  Get cells via shell with a time range predicate
-               (Ted Yu via Stack)
-   HBASE-3764  Book.xml - adding 2 FAQs (SQL and arch question)
-   HBASE-3770  Make FilterList accept var arg Filters in its constructor
-               as a convenience (Erik Onnen via Stack)
-   HBASE-3769  TableMapReduceUtil is inconsistent with other table-related
-               classes that accept byte[] as a table name (Erik Onnen via Stack)
-   HBASE-3768  Add best practice to book for loading row key only
-               (Erik Onnen via Stack)
-   HBASE-3765  metrics.xml - small format change and adding nav to hbase
-               book metrics section (Doug Meil)
-   HBASE-3759  Eliminate use of ThreadLocals for CoprocessorEnvironment
-               bypass() and complete() 
-   HBASE-3701  revisit ArrayList creation (Ted Yu via Stack)
-   HBASE-3753  Book.xml - architecture, adding more Store info (Doug Meil)
-   HBASE-3784  book.xml - adding small subsection in architecture/client on
-               filters (Doug Meil)
-   HBASE-3785  book.xml - moving WAL into architecture section, plus adding
-               more description on what it does (Doug Meil)
-   HBASE-3699  Make RegionServerServices and MasterServices extend Server
-               (Erik Onnen)
-   HBASE-3757  Upgrade to ZK 3.3.3
-   HBASE-3609  Improve the selection of regions to balance; part 2 (Ted Yu)
-   HBASE-2939  Allow Client-Side Connection Pooling (Karthik Sankarachary)
-   HBASE-3798  [REST] Allow representation to elide row key and column key
-   HBASE-3812  Tidy up naming consistency and documentation in coprocessor
-               framework (Mingjie Lai)
-   HBASE-1512  Support aggregate functions (Himanshu Vashishtha)
-   HBASE-3796  Per-Store Enties in Compaction Queue
-   HBASE-3670  Fix error handling in get(List<Get> gets)
-               (Harsh J Chouraria)
-   HBASE-3835  Switch master and region server pages to Jamon-based templates
-   HBASE-3721  Speedup LoadIncrementalHFiles (Ted Yu)
-   HBASE-3855  Performance degradation of memstore because reseek is linear
-               (dhruba borthakur)
-   HBASE-3797  StoreFile Level Compaction Locking
-   HBASE-1476  Multithreaded Compactions
-   HBASE-3877  Determine Proper Defaults for Compaction ThreadPools
-   HBASE-3880  Make mapper function in ImportTSV plug-able (Bill Graham)
-   HBASE-2938  HBASE-2938 Add Thread-Local Behavior To HTable Pool
-               (Karthick Sankarachary)
-   HBASE-3811  Allow adding attributes to Scan (Alex Baranau)
-   HBASE-3841  HTable and HTableInterface docs are inconsistent with
-               one another (Harsh J Chouraria)
-   HBASE-2937  Facilitate Timeouts In HBase Client (Karthick Sankarachary)
-   HBASE-3921  Allow adding arbitrary blobs to Put (dhruba borthakur)
-   HBASE-3931  Allow adding attributes to Get
-   HBASE-3942  The thrift scannerOpen functions should support row caching
-               (Adam Worthington)
-   HBASE-2556  Add convenience method to HBaseAdmin to get a collection of
-               HRegionInfo objects for each table (Ming Ma)
-   HBASE-3952  Guava snuck back in as a dependency via hbase-3777
-   HBASE-3808  Implement Executor.toString for master handlers at least
-               (Brock Noland)
-   HBASE-3873  Mavenize Hadoop Snappy JAR/SOs project dependencies
-               (Alejandro Abdelnur)
-   HBASE-3941  "hbase version" command line should print version info
-               (Jolly Chen)
-   HBASE-3961  Add Delete.setWriteToWAL functionality (Bruno Dumon)
-   HBASE-3928  Some potential performance improvements to Bytes/KeyValue
-   HBASE-3982  Improvements to TestHFileSeek
-   HBASE-3940  HBase daemons should log version info at startup and possibly
-               periodically (Li Pi)
-   HBASE-3789  Cleanup the locking contention in the master
-   HBASE-3927  Display total uncompressed byte size of a region in web UI
-   HBASE-4011  New MasterObserver hook: post startup of active master
-   HBASE-3994  SplitTransaction has a window where clients can
-               get RegionOfflineException
-   HBASE-4010  HMaster.createTable could be heavily optimized
-   HBASE-3506  Ability to disable, drop and enable tables using regex expression
-               (Joey Echeverria via Ted Yu)
-   HBASE-3516  Coprocessors: add test cases for loading coprocessor jars
-               (Mingjie Lai via garyh)
-   HBASE-4036  Implementing a MultipleColumnPrefixFilter (Anirudh Todi)
-   HBASE-4048  [Coprocessors] Support configuration of coprocessor at load time
-   HBASE-3240  Improve documentation of importtsv and bulk loads.
-               (Aaron T. Myers via todd)
-   HBASE-4054  Usability improvement to HTablePool (Daniel Iancu)
-   HBASE-4079  HTableUtil - helper class for loading data (Doug Meil via Ted Yu)
-   HBASE-3871  Speedup LoadIncrementalHFiles by parallelizing HFile splitting
-   HBASE-4081  Issues with HRegion.compactStores methods (Ming Ma)
-   HBASE-3465  Hbase should use a HADOOP_HOME environment variable if available
-               (Alejandro Abdelnur)
-   HBASE-3899  enhance HBase RPC to support free-ing up server handler threads
-               even if response is not ready (Vlad Dogaru)
-   HBASE-4142  Advise against large batches in javadoc for HTable#put(List<Put>)
-   HBASE-4139  [stargate] Update ScannerModel with support for filter package
-               additions
-   HBASE-1938  Make in-memory table scanning faster (nkeywal)
-   HBASE-4143  HTable.doPut(List) should check the writebuffer length every so often
-               (Doug Meil via Ted Yu)
-   HBASE-3065  Retry all 'retryable' zk operations; e.g. connection loss (Liyin Tang)
-   HBASE-3810  Registering a coprocessor in HTableDescriptor should be easier
-               (Mingjie Lai via garyh)
-   HBASE-4158  Upgrade pom.xml to surefire 2.9 (Aaron Kushner & Mikhail)
-   HBASE-3899  Add ability for delayed RPC calls to set return value
-               immediately at call return. (Vlad Dogaru via todd)
-   HBASE-4169  FSUtils LeaseRecovery for non HDFS FileSystems (Lohit Vijayarenu)
-   HBASE-3807  Fix units in RS UI metrics (subramanian raghunathan)
-   HBASE-4193  Enhance RPC debug logging to provide more details on
-               call contents
-   HBASE-4190  Coprocessors: pull up some cp constants from cp package to
-               o.a.h.h.HConstants (Mingjie Lai)
-   HBASE-4227  Modify the webUI so that default values of column families are
-               not shown (Nileema Shingte)
-   HBASE-4229  Replace Jettison JSON encoding with Jackson in HLogPrettyPrinter
-               (Riley Patterson)
-   HBASE-4230  Compaction threads need names
-   HBASE-4236  Don't lock the stream while serializing the response (Benoit Sigoure)
-   HBASE-4237  Directly remove the call being handled from the map of outstanding RPCs
-               (Benoit Sigoure)
-   HBASE-4199  blockCache summary - backend (Doug Meil)
-   HBASE-4240  Allow Loadbalancer to be pluggable
-   HBASE-4244  Refactor bin/hbase help
-   HBASE-4241  Optimize flushing of the Memstore (Lars Hofhansl)
-   HBASE-4248  Enhancements for Filter Language exposing HBase filters through
-               the Thrift API (Anirudh Todi)
-   HBASE-3900  Expose progress of a major compaction in UI and/or in shell
-               (Brad Anderson)
-   HBASE-4291  Improve display of regions in transition in UI to be more
-               readable (todd)
-   HBASE-4281  Add facility to dump current state of all executors (todd)
-   HBASE-4275  RS should communicate fatal "aborts" back to the master (todd)
-   HBASE-4263  New config property for user-table only RegionObservers
-               (Lars Hofhansl)
-   HBASE-4257  Limit the number of regions in transitions displayed on
-               master webpage. (todd)
-   HBASE-1730  Online Schema Changes
-   HBASE-4206  jenkins hash implementation uses longs unnecessarily
-               (Ron Yang)
-   HBASE-3842  Refactor Coprocessor Compaction API
-   HBASE-4312  Deploy new hbase logo
-   HBASE-4327  Compile HBase against hadoop 0.22 (Joep Rottinghuis)
-   HBASE-4339  Improve eclipse documentation and project file generation
-               (Eric Charles)
-   HBASE-4342  Update Thrift to 0.7.0 (Moaz Reyad)
-   HBASE-4260  Expose a command to manually trigger an HLog roll
-               (ramkrishna.s.vasudevan)
-   HBASE-4347  Remove duplicated code from Put, Delete, Get, Scan, MultiPut
-               (Lars Hofhansl)
-   HBASE-4359  Show dead RegionServer names in the HMaster info page
-               (Harsh J)
-   HBASE-4287  If region opening fails, change region in transition into
-               a FAILED_OPEN state so that it can be retried quickly. (todd)
-   HBASE-4381  Refactor split decisions into a split policy class. (todd)
-   HBASE-4373  HBaseAdmin.assign() does not use force flag (Ramkrishna)
-   HBASE-4425  Provide access to RpcServer instance from RegionServerServices
-   HBASE-4411  When copying tables/CFs, allow CF names to be changed
-               (David Revell)
-   HBASE-4424  Provide coprocessors access to createTable() via 
-               MasterServices
-   HBASE-4432  Enable/Disable off heap cache with config (Li Pi)
-   HBASE-4434  seek optimization: don't do eager HFile Scanner
-               next() unless the next KV is needed
-               (Kannan Muthukkaruppan)
-   HBASE-4280  [replication] ReplicationSink can deadlock itself via handlers
-   HBASE-4014  Coprocessors: Flag the presence of coprocessors in logged
-               exceptions (Eugene Koontz)
-   HBASE-4449  LoadIncrementalHFiles should be able to handle CFs with blooms
-               (David Revell)
-   HBASE-4454  Add failsafe plugin to build and rename integration tests
-               (Jesse Yates)
-   HBASE-4499  [replication] Source shouldn't update ZK if it didn't progress
-               (Chris Trezzo via JD)
-   HBASE-2794  Utilize ROWCOL bloom filter if multiple columns within same family
-               are requested in a Get (Mikhail Bautin)
-   HBASE-4487  The increment operation can release the rowlock before sync-ing
-               the Hlog (dhruba borthakur)
-   HBASE-4526  special case for stopping master in hbase-daemon.sh is no longer
-               required (Roman Shaposhnik)
-   HBASE-4520  Better handling of Bloom filter type discrepancy between HFile
-               and CF config (Mikhail Bautin)
-   HBASE-4558  Refactor TestOpenedRegionHandler and TestOpenRegionHandler.(Ram)
-   HBASE-4558  Addendum for TestMasterFailover (Ram) - Breaks the build
-   HBASE-4568  Make zk dump jsp response faster
-   HBASE-4606  Remove spam in HCM and fix a list.size == 0
-   HBASE-3581  hbase rpc should send size of response
-   HBASE-4585  Avoid seek operation when current kv is deleted(Liyin Tang)
-   HBASE-4486  Improve Javadoc for HTableDescriptor (Akash Ashok)
-   HBASE-4604  hbase.client.TestHTablePool could start a single
-               cluster instead of one per method (nkeywal)
-   HBASE-3929  Add option to HFile tool to produce basic stats (Matteo
-               Bertozzi and todd via todd)
-   HBASE-4694  Some cleanup of log messages in RS and M
-   HBASE-4603  Uneeded sleep time for tests in
-               hbase.master.ServerManager#waitForRegionServers (nkeywal)
-   HBASE-4703  Improvements in tests (nkeywal)
-   HBASE-4611  Add support for Phabricator/Differential as an alternative code review tool
-   HBASE-3939  Some crossports of Hadoop IPC fixes
-   HBASE-4756  Enable tab-completion in HBase shell (Ryan Thiessen)
-   HBASE-4759  Migrate from JUnit 4.8.2 to JUnit 4.10 (nkeywal)
-   HBASE-4554  Allow set/unset coprocessor table attributes from shell
-               (Mingjie Lai)
-   HBASE-4779  TestHTablePool, TestScanWithBloomError, TestRegionSplitCalculator are
-               not tagged and TestPoolMap should not use TestSuite (N Keywal)
-   HBASE-4805  Allow better control of resource consumption in HTable (Lars H)
-   HBASE-4903  Return a result from RegionObserver.preIncrement
-               (Daniel Gómez Ferro via Lars H)
-   HBASE-4683  Always cache index and bloom blocks
+** Task
+    * [HBASE-10612] - Remove unnecessary dependency on org.eclipse.jdt:core
+    * [HBASE-10670] - HBaseFsck#connect() should use new connection
+    * [HBASE-10700] - IntegrationTestWithCellVisibilityLoadAndVerify should allow current user to be the admin
+    * [HBASE-10740] - Upgrade zookeeper to 3.4.6 release
 
-  TASKS
-   HBASE-3559  Move report of split to master OFF the heartbeat channel
-   HBASE-3573  Move shutdown messaging OFF hearbeat; prereq for fix of
-               hbase-1502
-   HBASE-3071  Graceful decommissioning of a regionserver
-   HBASE-3970  Address HMaster crash/failure half way through meta migration
-               (Subbu M Iyer)
-   HBASE-4013  Make ZooKeeperListener Abstract (Akash Ashok via Ted Yu)
-   HBASE-4025  Server startup fails during startup due to failure in loading
-               all table descriptors. (Subbu Iyer via Ted Yu)
-   HBASE-4017  BlockCache interface should be truly modular (Li Pi)
-   HBASE-4152  Rename o.a.h.h.regionserver.wal.WALObserver to
-               o.a.h.h.regionserver.wal.WALActionsListener
-   HBASE-4039  Users should be able to choose custom TableInputFormats without
-               modifying TableMapReduceUtil.initTableMapperJob() (Brock Noland)
-   HBASE-4185  Add doc for new hfilev2 format
-   HBASE-4315  RS requestsPerSecond counter seems to be off (subramanian raghunathan)
-   HBASE-4289  Move spinlock to SingleSizeCache rather than the slab allocator
-               (Li Pi)
-   HBASE-4296  Deprecate HTable[Interface].getRowOrBefore(...) (Lars Hofhansl)
-   HBASE-2195  Support cyclic replication (Lars Hofhansl)
-   HBASE-2196  Support more than one slave cluster (Lars Hofhansl)
-   HBASE-4429  Provide synchronous balanceSwitch()
-   HBASE-4437  Update hadoop in 0.92 (0.20.205?)
-   HBASE-4656  Note how dfs.support.append has to be enabled in 0.20.205.0
-               clusters
-   HBASE-4699  Cleanup the UIs
-   HBASE-4552  Remove trivial 0.90 deprecated code from 0.92 and trunk.
-               (Jonathan Hsieh)
-   HBASE-4714  Don't ship w/ icms enabled by default
-   HBASE-4747  Upgrade maven surefire plugin to 2.10
-   HBASE-4288  "Server not running" exception during meta verification causes RS abort
-   HBASE-4856  Upgrade zookeeper to 3.4.0 release
-   HBASE-5111  Upgrade zookeeper to 3.4.2 release
-   HBASE-5125  Upgrade hadoop to 1.0.0
+** Test
+    * [HBASE-10543] - Two rare test failures with TestLogsCleaner and TestSplitLogWorker
+    * [HBASE-10649] - TestMasterMetrics fails occasionally
+    * [HBASE-10764] - TestLoadIncrementalHFilesSplitRecovery#testBulkLoadPhaseFailure takes too long
 
-  NEW FEATURES
-   HBASE-2001  Coprocessors: Colocate user code with regions (Mingjie Lai via
-               Andrew Purtell)
-   HBASE-3287  Add option to cache blocks on hfile write and evict blocks on
-               hfile close
-   HBASE-3335  Add BitComparator for filtering (Nathaniel Cook via Stack)
-   HBASE-3260  Coprocessors: Add explicit lifecycle management
-   HBASE-3256  Coprocessors: Coprocessor host and observer for HMaster
-   HBASE-3345  Coprocessors: Allow observers to completely override base
-               function
-   HBASE-2824  A filter that randomly includes rows based on a configured
-               chance (Ferdy via Andrew Purtell)
-   HBASE-3455  Add memstore-local allocation buffers to combat heap
-               fragmentation in the region server. Enabled by default as of
-               0.91
-   HBASE-3257  Coprocessors: Extend server side API to include HLog operations
-               (Mingjie Lai via Andrew Purtell)
-   HBASE-3606  Create an package integration project (Eric Yang via Ryan)
-   HBASE-3488  Add CellCounter to count multiple versions of rows
-               (Subbu M. Iyer via Stack)
-   HBASE-1364  [performance] Distributed splitting of regionserver commit logs
-               (Prakash Khemani)
-   HBASE-3836  Add facility to track currently progressing actions and
-               workflows. (todd)
-   HBASE-3837  Show regions in transition on the master web page (todd)
-   HBASE-3839  Add monitoring of currently running tasks to the master and
-               RS web UIs
-   HBASE-3691  Add compressor support for 'snappy', google's compressor
-               (Nichole Treadway and Nicholas Telford)
-   HBASE-2233  Support both Hadoop 0.20 and 0.22
-   HBASE-3857  Change the HFile Format (Mikhail & Liyin)
-   HBASE-4114  Metrics for HFile HDFS block locality (Ming Ma)
-   HBASE-4176  Exposing HBase Filters to the Thrift API (Anirudh Todi)
-   HBASE-4221  Changes necessary to build and run against Hadoop 0.23
-               (todd)
-   HBASE-4071  Data GC: Remove all versions > TTL EXCEPT the last
-               written version (Lars Hofhansl)
-   HBASE-4242  Add documentation for HBASE-4071 (Lars Hofhansl)
-   HBASE-4027  Enable direct byte buffers LruBlockCache (Li Pi)
-   HBASE-4117  Slow Query Log and Client Operation Fingerprints
-               (Riley Patterson)
-   HBASE-4292  Add a debugging dump servlet to the master and regionserver
-               (todd)
-   HBASE-4057  Implement HBase version of "show processlist" (Riley Patterson)
-   HBASE-4219  Per Column Family Metrics
-   HBASE-4219  Addendum for failure of TestHFileBlock
-   HBASE-4377  [hbck] Offline rebuild .META. from fs data only
-               (Jonathan Hsieh)
-   HBASE-4298  Support to drain RS nodes through ZK (Aravind Gottipati)
-   HBASE-2742  Provide strong authentication with a secure RPC engine
-   HBASE-3025  Coprocessor based access control
 
-Release 0.90.7 - Unreleased
+Release 0.98.0 - 02/15/2014
 
-  BUG FIXES
-   HBASE-5271  Result.getValue and Result.getColumnLatest return the wrong column (Ghais Issa)
+** Sub-task
+    * [HBASE-4285] - partitions file created in user's home directory by importtsv
+    * [HBASE-5050] - [rest] SPNEGO-based authentication
+    * [HBASE-5995] - Fix and reenable TestLogRolling.testLogRollOnPipelineRestart
+    * [HBASE-6330] - TestImportExport has been failing against hadoop 0.23/2.0 profile
+    * [HBASE-6873] - Clean up Coprocessor loading failure handling
+    * [HBASE-6945] - Compilation errors when using non-Sun JDKs to build HBase-0.94
+    * [HBASE-7533] - Write an RPC Specification for 0.96
+    * [HBASE-7605] - TestMiniClusterLoadSequential fails in trunk build on hadoop 2
+    * [HBASE-7606] - TestJoinedScanners fails in trunk build on hadoop 2.0
+    * [HBASE-7615] - Add metrics for snapshots
+    * [HBASE-7636] - TestDistributedLogSplitting#testThreeRSAbort fails against hadoop 2.0
+    * [HBASE-7662] - [Per-KV security] Per cell ACLs stored in tags
+    * [HBASE-7663] - [Per-KV security] Visibility labels
+    * [HBASE-7679] - implement store file management for stripe compactions
+    * [HBASE-7680] - implement compaction policy for stripe compactions
+    * [HBASE-7747] - Import tools should use a combiner to merge Puts
+    * [HBASE-7801] - Allow a deferred sync option per Mutation.
+    * [HBASE-7807] - Introduce HRegionFileSystem and move region fs related code
+    * [HBASE-7808] - Refactor Store to use HRegionFileSystem
+    * [HBASE-7809] - Refactor Split/Merge to use HRegionFileSystem
+    * [HBASE-7841] - Parallelize offline snapshot in DisabledTableSnapshotHandler
+    * [HBASE-7905] - Add passing of optional cell blocks over rpc
+    * [HBASE-7934] - TableMapReduceUtil doesn't include all dependency jars in new modular build
+    * [HBASE-7938] - Add integration test for ImportTsv/LoadIncrementalHFiles workflow
+    * [HBASE-7944] - Replication leaks file reader resource & not reset currentNbOperations
+    * [HBASE-7967] - implement compactor for stripe compactions
+    * [HBASE-7975] - ImportTsv documentation update for table creation
+    * [HBASE-7995] - Export$Exporter could be replaced with IdentityTableMapper
+    * [HBASE-7996] - Clean up resource leak in MultiTableInputFormat
+    * [HBASE-8000] - create integration/perf tests for stripe compactions
+    * [HBASE-8006] - use FSUtils to get/set hbase.rootdir
+    * [HBASE-8008] - Fix DirFilter usage to be consistent
+    * [HBASE-8011] - Refactor ImportTsv
+    * [HBASE-8094] - TestTableInputFormatScan doesn't assert anything
+    * [HBASE-8101] - Cleanup: findbugs and javadoc warning fixes as well as making it illegal passing null row to Put/Delete, etc.
+    * [HBASE-8156] - Support for Namenode HA for non-idempotent operations
+    * [HBASE-8189] - Shell commands of online region merge
+    * [HBASE-8190] - Add documentation of region merges to the book
+    * [HBASE-8201] - OrderedBytes: an ordered encoding strategy
+    * [HBASE-8316] - JoinedHeap for non essential column families should reseek instead of seek
+    * [HBASE-8324] - TestHFileOutputFormat.testMRIncremental* fails against hadoop2 profile
+    * [HBASE-8342] - TestTableInputFormatScan#testScanFromConfiguration fails on hadoop2 profile
+    * [HBASE-8349] - TestLogRolling#TestLogRollOnDatanodeDeath hangs under hadoop2 profile
+    * [HBASE-8375] - Durability setting per table
+    * [HBASE-8392] - TestMetricMBeanBase#testGetAttribute is flakey under hadoop2 profile
+    * [HBASE-8408] - Implement namespace
+    * [HBASE-8409] - Security support for namespaces
+    * [HBASE-8424] - IntegrationTestImportTsv missing Apache License
+    * [HBASE-8429] - TestMetricsWALSourceImpl from hbase-hadoop2-compat module missing Apache license.
+    * [HBASE-8453] - TestImportExport failing again due to configuration issues
+    * [HBASE-8469] - [hadoop2] Several tests break because of HDFS-4305
+    * [HBASE-8477] - [hadoop2] TestTableInputFormatScan* fails intermittently with PrivilegedActionException
+    * [HBASE-8478] - HBASE-2231 breaks TestHRegion#testRecoveredEditsReplayCompaction under hadoop2 profile
+    * [HBASE-8497] - Protobuf WAL also needs a trailer 
+    * [HBASE-8528] - [hadoop2] TestMultiTableInputFormat always fails on hadoop with YARN-129 applied
+    * [HBASE-8583] - Create a new IntegrationTestBigLinkedListWithChaosMonkey
+    * [HBASE-8633] - Document namespaces in HBase book
+    * [HBASE-8643] - Do not log full classnames in logs, just the last two levels
+    * [HBASE-8657] - Miscellaneous log fixups for hbase-it; tidier logging, fix a few NPEs
+    * [HBASE-8661] - [rest] support REST over https
+    * [HBASE-8662] - [rest] support impersonation
+    * [HBASE-8693] - DataType: provide extensible type API
+    * [HBASE-8703] - [WINDOWS] Timed-out processes exit with non-zero code causing HealthChecker to report incorrectly
+    * [HBASE-8766] - [WINDOWS] bin/hbase.cmd zkcli is broken
+    * [HBASE-8774] - Add BatchSize and Filter to Thrift2
+    * [HBASE-8779] - Add mutateRow method support to Thrift2
+    * [HBASE-8819] - Port HBASE-5428 to Thrift 2
+    * [HBASE-8826] - Ensure HBASE-8695 is covered in Thrift 2
+    * [HBASE-8832] - Ensure HBASE-4658  is supported by Thrift 2
+    * [HBASE-8838] - [WINDOWS] FileLink assumptions are broken under NTFS
+    * [HBASE-8876] - Addendum to HBASE-8774 Add BatchSize and Filter to Thrift2 - Add BatchSize Test
+    * [HBASE-8890] - Fix Thrift 2 example class location
+    * [HBASE-8938] - Thrift2 does not close scanner instance
+    * [HBASE-8946] - Add a new function to Thrift 2 to open scanner, get results and close scanner
+    * [HBASE-8947] - Thrift 2 : Replace "bool writeToWAL" with "TDurability durability" 
+    * [HBASE-8948] - Bound table pool size in Thrift 2 server
+    * [HBASE-9045] - Support Dictionary based Tag compression in HFiles
+    * [HBASE-9073] - Up retries on TestSnapshotFromMaster; retries only once
+    * [HBASE-9078] - Downstream build including hbase-client fails because can't find com.sun.jdmk:jmxtools
+    * [HBASE-9091] - Update ByteRange to maintain consumer's position
+    * [HBASE-9110] - Meta region edits not recovered while migrating to 0.96.0
+    * [HBASE-9118] - Optimization in HFile V3 when no tags are present in a file
+    * [HBASE-9128] - Drop the '.' prefix from names under hbase.rootdir after namespaces goes in
+    * [HBASE-9130] - Invert the name of namespace commands to match the snapshots and replication form
+    * [HBASE-9136] - RPC side changes to have a different codec for server to client communication
+    * [HBASE-9137] - Add Tag dictionary in WAL compression
+    * [HBASE-9165] - Improvements to addDependencyJars
+    * [HBASE-9179] - TestSecureLoadIncrementalHFilesSplitRecovery hangs
+    * [HBASE-9187] - HBaseAdmin#testTableExists can go zombie
+    * [HBASE-9191] - Update Loadbalancer method to throw HBaseIOException
+    * [HBASE-9241] - Add cp hook before initialize variable set to true in master intialization
+    * [HBASE-9244] - Add CP hooks around StoreFileReader creation
+    * [HBASE-9246] - Remove ROOT_TABLEDESC, ROOT_REGIONINFO, and ROOT_TABLE_NAME
+    * [HBASE-9247] - Cleanup Key/KV/Meta/MetaKey Comparators
+    * [HBASE-9249] - Add cp hook before setting PONR in split
+    * [HBASE-9259] - Update hadoop versions grid in refguide adding hadoop-2.1.x and a note on hadoop-2.0.x versions
+    * [HBASE-9261] - Add cp hooks after {start|close}RegionOperation
+    * [HBASE-9262] - Make KeyValue.KEY_COMPARATOR default for HFile WriterFactory
+    * [HBASE-9263] - Add initialize method to load balancer interface
+    * [HBASE-9276] - List tables API should filter with isSystemTable
+    * [HBASE-9277] - REST should use listTableNames to list tables
+    * [HBASE-9279] - Thrift should use listTableNames to list tables
+    * [HBASE-9317] - Define timeout period for TestHBaseFsck#testSplitDaughtersNotInMeta
+    * [HBASE-9359] - Convert KeyValue to Cell in hbase-client module - Result/Put/Delete, ColumnInterpreter
+    * [HBASE-9379] - Doc that localfs is not durable
+    * [HBASE-9477] - Add deprecation compat shim for Result#raw and Result#list for 0.96
+    * [HBASE-9478] - Make Cell @interfaceAudience.public and evolving.
+    * [HBASE-9487] - create_namespace with property value throws error
+    * [HBASE-9489] - Add cp hooks in online merge before and after setting PONR
+    * [HBASE-9493] - Rename CellUtil#get*Array to CellUtil#clone*
+    * [HBASE-9516] - Mark hbase-common classes missing @InterfaceAudience annotation as Private
+    * [HBASE-9517] - Include only InterfaceAudiencePublic elements in generated Javadoc
+    * [HBASE-9523] - Audit of hbase-common @InterfaceAudience.Public apis.
+    * [HBASE-9529] - Audit of hbase-client @InterfaceAudience.Public apis
+    * [HBASE-9546] - HFileContext should adopt Builder pattern
+    * [HBASE-9585] - Update javadoc builder in pom to exclude empty packages in user api javadoc
+    * [HBASE-9586] - Deprecate remove o.a.h.h.util.Keying class.
+    * [HBASE-9652] - Remove HServerLoad092
+    * [HBASE-9677] - Remove MasterAdmin and MasterMonitor protos; have MasterService provide these functions
+    * [HBASE-9684] - Remove MultiRowMutationProcessorMessages.proto
+    * [HBASE-9711] - Improve HBASE-9428 - avoid copying bytes for RegexFilter unless necessary
+    * [HBASE-9846] - Integration test and LoadTestTool support for cell ACLs
+    * [HBASE-9854] - initial documentation for stripe compactions
+    * [HBASE-9858] - Integration test and LoadTestTool support for cell Visibility
+    * [HBASE-9907] - Rig to fake a cluster so can profile client behaviors
+    * [HBASE-9917] - Fix it so Default Connection Pool does not spin up max threads even when not needed
+    * [HBASE-9941] - The context ClassLoader isn't set while calling into a coprocessor
+    * [HBASE-9997] - Add per KV security details to HBase book
+    * [HBASE-10035] - Fix Potential Resource Leak in IPCUtils
+    * [HBASE-10036] - Fix Potential Resource Leak in MetaReader
+    * [HBASE-10037] - Fix potential Resource Leak in EncodedDataBlock
+    * [HBASE-10038] - Fix potential Resource Leak in ZNodeCleaner
+    * [HBASE-10039] - Fix potential Resource Leak in RpcServer
+    * [HBASE-10043] - Fix Potential Resouce Leak in MultiTableInputFormatBase
+    * [HBASE-10094] - Add batching to HLogPerformanceEvaluation
+    * [HBASE-10110] - Fix Potential Resource Leak in StoreFlusher
+    * [HBASE-10124] - Make Sub Classes Static When Possible
+    * [HBASE-10143] - Clean up dead local stores in FSUtils
+    * [HBASE-10297] - LoadAndVerify Integration Test for cell visibility
+    * [HBASE-10391] - Deprecate KeyValue#getBuffer
+    * [HBASE-10550] - Register HBase tokens with ServiceLoader
 
-Release 0.90.6 - Unreleased
+** Bug
+    * [HBASE-3787] - Increment is non-idempotent but client retries RPC
+    * [HBASE-5356] - region_mover.rb can hang if table region it belongs to is deleted.
+    * [HBASE-5472] - LoadIncrementalHFiles loops forever if the target table misses a CF
+    * [HBASE-5946] - Thrift Filter Language documentation is inconsistent
+    * [HBASE-6031] - RegionServer does not go down while aborting
+    * [HBASE-6347] - -ROOT- and .META. are stale in table.jsp if they moved
+    * [HBASE-6915] - String and ConcurrentHashMap sizes change on jdk7; makes TestHeapSize fail
+    * [HBASE-7111] - hbase zkcli will not start if the zookeeper server chosen to connect to is unavailable
+    * [HBASE-7114] - Increment does not extend Mutation but probably should
+    * [HBASE-7122] - Proper warning message when opening a log file with no entries (idle cluster)
+    * [HBASE-7153] - print gc option in hbase-env.sh affects hbase zkcli
+    * [HBASE-7192] - Move TestHBase7051.java into TestAtomicOperation.java
+    * [HBASE-7226] - HRegion.checkAndMutate uses incorrect comparison result for <, <=, > and >=
+    * [HBASE-7255] - KV size metric went missing from StoreScanner.
+    * [HBASE-7296] - Add hbase.master.loadbalancer.class in the documentation
+    * [HBASE-7325] - Replication reacts slowly on a lightly-loaded cluster
+    * [HBASE-7380] - [replication] When transferring queues, check if the peer still exists before copying the znodes
+    * [HBASE-7391] - Review/improve HLog compression's memory consumption
+    * [HBASE-7401] - Remove warning message about running 'hbase migrate'
+    * [HBASE-7458] - TestReplicationWithCompression fails intermittently in both PreCommit and trunk builds
+    * [HBASE-7481] - Allow IOExceptions to be thrown from Filter methods
+    * [HBASE-7482] - Port HBASE-7442 HBase remote CopyTable not working when security enabled to trunk
+    * [HBASE-7488] - Implement HConnectionManager.locateRegions which is currently returning null
+    * [HBASE-7501] - Introduce MetaEditor method that both adds and deletes rows in .META. table
+    * [HBASE-7546] - Obtain a table read lock on region split operations
+    * [HBASE-7590] - Add a costless notifications mechanism from master to regionservers & clients
+    * [HBASE-7597] - TestHBaseFsck#testRegionShouldNotBeDeployed seems to be flaky
+    * [HBASE-7600] - TestAdmin.testCreateBadTables is failing occasionally
+    * [HBASE-7634] - Replication handling of changes to peer clusters is inefficient
+    * [HBASE-7639] - Enable online schema update by default 
+    * [HBASE-7700] - TestColumnSeeking is mathematically bound to fail
+    * [HBASE-7709] - Infinite loop possible in Master/Master replication
+    * [HBASE-7723] - Remove NameNode URI from ZK splitlogs
+    * [HBASE-7726] - Family Dir is not removed using modifyTable()
+    * [HBASE-7817] - Suggested JDWP debug options in hbase-env.sh are wrong
+    * [HBASE-7869] - Provide way to not start LogSyncer thread
+    * [HBASE-7871] - HBase can be stuck when closing regions concurrently 
+    * [HBASE-7876] - Got exception when manually triggers a split on an empty region
+    * [HBASE-7878] - recoverFileLease does not check return value of recoverLease
+    * [HBASE-7921] - TestHFileBlock.testGzipCompression should ignore the block checksum
+    * [HBASE-7933] - NPE in TableLockManager
+    * [HBASE-7940] - Upgrade version to 0.97-SNAPSHOT in pom.xml files
+    * [HBASE-7945] - Remove flaky TestCatalogTrackerOnCluster
+    * [HBASE-7947] - Custom compaction requests should have test for adding to wrong list
+    * [HBASE-7951] - TestNodeHealthCheckChore.testHealthChecker failed 0.95 build #3
+    * [HBASE-7953] - Some HFilePerformanceEvaluation tests might fail because of scanner.getValue when there is no more row
+    * [HBASE-7954] - Fix the retrying logic of memstore flushes to avoid extra sleep
+    * [HBASE-7955] - Remove log "ERROR snapshot.SnapshotFileCache: Snapshot directory doesn't exist"
+    * [HBASE-7956] - RegionCoprocessorRpcChannel should log rpc requests at TRACE level rather than DEBUG
+    * [HBASE-7957] - CloneSnapshotHandler.prepare() is not called by SnapshotManager
+    * [HBASE-7961] - truncate on disabled table should throw TableNotEnabledException.
+    * [HBASE-7963] - HBase VerifyReplication not working when security enabled
+    * [HBASE-7966] - ACL tests fail on trunk (flaky)
+    * [HBASE-7968] - Packaging of Trunk and 0.95 does not create the dependent jars in the lib folder
+    * [HBASE-7969] - Rename HBaseAdmin#getCompletedSnapshots as HBaseAdmin#listSnapshots
+    * [HBASE-7980] - TestZKInterProcessReadWriteLock fails occasionally in QA test run
+    * [HBASE-7982] - TestReplicationQueueFailover* runs for a minute, spews 3/4million lines complaining 'Filesystem closed', has an NPE, and still passes?
+    * [HBASE-7986] - [REST] Make HTablePool size configurable
+    * [HBASE-7992] - provide pre/post region offline hooks for HMaster.offlineRegion()
+    * [HBASE-8002] - Make TimeOut Management for Assignment optional in master and regionservers
+    * [HBASE-8003] - Threads#getBoundedCachedThreadPool harcodes the time unit to seconds
+    * [HBASE-8004] - Creating an existing table from Shell does not throw TableExistsException
+    * [HBASE-8005] - DemoClient.cpp   can not be built correctly
+    * [HBASE-8007] - Adopt TestLoadAndVerify from BigTop
+    * [HBASE-8012] - Reseek should position to the beginning of file for the first time it is invoked with a KV smaller than the first KV in file
+    * [HBASE-8017] - Upgrade hadoop 1 dependency to 1.1.2
+    * [HBASE-8018] - Add "Flaky Testcase Detector" tool into dev-tools
+    * [HBASE-8021] - TestSplitTransactionOnCluster.testShouldThrowIOExceptionIfStoreFileSizeIsEmptyAndShouldSuccessfullyExecuteRollback() fails consistently
+    * [HBASE-8022] - Site target fails
+    * [HBASE-8025] - zkcli fails when SERVER_GC_OPTS is enabled
+    * [HBASE-8027] - hbase-7994 redux; shutdown hbase-example unit tests
+    * [HBASE-8030] - znode  path of online region servers is hard coded in rolling_restart.sh
+    * [HBASE-8032] - TestNodeHealthCheckChore.testHealthChecker failed 0.95 build #36
+    * [HBASE-8033] - Break TestRestoreSnapshotFromClient into TestRestoreSnapshotFromClient and TestCloneSnapshotFromClient
+    * [HBASE-8036] - ProtobufUtil.multi behavior is inconsistent in case of errors
+    * [HBASE-8041] - WebUI doesn't display snapshots correctly
+    * [HBASE-8042] - Offline Meta Repair no longer points to the correct location
+    * [HBASE-8043] - Fix a few javadoc warnings...
+    * [HBASE-8044] - split/flush/compact/major_compact from hbase shell does not work for region key with \x format
+    * [HBASE-8050] - Small fix to book/hbase.tests.html
+    * [HBASE-8051] - 0.95 build failing on site goal: 'failed to get report for org.apache.maven.plugins:maven-project-info-reports-plugin: Could not find goal 'dependency-info''
+    * [HBASE-8052] - TestHBaseFsck#testQuarantineMissingFamdir fails sporadically
+    * [HBASE-8055] - Null check missing in StoreFile.Reader.getMaxTimestamp()
+    * [HBASE-8057] - RegionLoad needs a toString implementation
+    * [HBASE-8058] - Upgrade site plugin; fix assembly doc up on jenkins builds
+    * [HBASE-8060] - "Num compacting KVs" diverges from "num compacted KVs" over time
+    * [HBASE-8062] - Replace HBaseFsck.debugLsr() in TestFlushSnapshotFromClient with FSUtils.logFileSystemState()
+    * [HBASE-8067] - TestHFileArchiving.testArchiveOnTableDelete sometimes fails
+    * [HBASE-8068] - TestMasterMetricsWrapper failed in 0.95 #60 jenkins
+    * [HBASE-8069] - TestHLog is dependent on the execution order
+    * [HBASE-8096] - [replication] NPE while replicating a log that is acquiring a new block from HDFS 
+    * [HBASE-8097] - MetaServerShutdownHandler may potentially keep bumping up DeadServer.numProcessing
+    * [HBASE-8099] - ReplicationZookeeper.copyQueuesFromRSUsingMulti should not return any queues if it failed to execute.
+    * [HBASE-8108] - Add m2eclispe lifecycle mapping to hbase-common
+    * [HBASE-8112] - Deprecate HTable#batch(final List<? extends Row>)
+    * [HBASE-8116] - TestSnapshotCloneIndependence fails in trunk builds intermittently
+    * [HBASE-8118] - TestTablePermission depends on the execution order
+    * [HBASE-8119] - Optimize StochasticLoadBalancer
+    * [HBASE-8122] - TestAccessController depends on the execution order
+    * [HBASE-8123] - Replace HashMap/HashSet with TreeMap/TreeSet where byte[] is used as key
+    * [HBASE-8130] - initialize TableLockManager before initializing AssignmentManager
+    * [HBASE-8131] - Create table handler needs to handle failure cases.
+    * [HBASE-8133] - avoid assign for disabling table regions(OPENING/PENDING_OPEN) in SSH
+    * [HBASE-8135] - Mutation should implement HeapSize
+    * [HBASE-8138] - Using [packed=true] for repeated field of primitive numeric types (types which use the varint, 32-bit, or 64-bit wire types)
+    * [HBASE-8140] - TableMapReduceUtils#addDependencyJar fails when nested inside another MR job
+    * [HBASE-8142] - Sporadic TestZKProcedureControllers failures on trunk
+    * [HBASE-8143] - HBase on Hadoop 2 with local short circuit reads (ssr) causes OOM 
+    * [HBASE-8144] - Limit number of attempts to assign a region
+    * [HBASE-8146] - IntegrationTestBigLinkedList does not work on distributed setup
+    * [HBASE-8151] - Decode memstoreTS in HFileReaderV2 only when necessary
+    * [HBASE-8158] - Backport HBASE-8140 "TableMapReduceUtils#addDependencyJar fails when nested inside another MR job"
+    * [HBASE-8160] - HMaster#move doesn't check if master initialized
+    * [HBASE-8161] - setting blocking file count on table level doesn't work
+    * [HBASE-8162] - Fix import of hbase-default.xml into refguide; broke
+    * [HBASE-8164] - TestTableLockManager fails intermittently in trunk builds
+    * [HBASE-8165] - Move to Hadoop 2.1.0-beta from 2.0.x-alpha (WAS: Update our protobuf to 2.5 from 2.4.1)
+    * [HBASE-8166] - Avoid writing the memstoreTS into HFiles when possible
+    * [HBASE-8169] - TestMasterFailover#testMasterFailoverWithMockedRITOnDeadRS may fail due to regions randomly assigned to a RS
+    * [HBASE-8170] - HbaseAdmin.createTable cannot handle creating three regions
+    * [HBASE-8173] - HMaster#move wraps IOException in UnknownRegionException
+    * [HBASE-8175] - Include javadoc and book when site goal invoked
+    * [HBASE-8178] - IPCUtil produces a LOT of WARN log spew
+    * [HBASE-8179] - JSON formatting for cluster status is sort of broken
+    * [HBASE-8187] - trunk/0.95 tarball packaging
+    * [HBASE-8188] - Avoid unnecessary row compare in StoreScanner
+    * [HBASE-8191] - Documentation is not giving the right class name for offline merges.
+    * [HBASE-8192] - Logic errror causes infinite loop in HRegion.bulkLoadHFiles(List)
+    * [HBASE-8195] - hbase.table.archive.directory reference should be removed from hbase-default.xml
+    * [HBASE-8200] - Integration Test classes are not part of the default HBase classpath
+    * [HBASE-8203] - master ui should display region servers with host, port plus startcode
+    * [HBASE-8207] - Replication could have data loss when machine name contains hyphen "-"
+    * [HBASE-8208] - In some situations data is not replicated to slaves when deferredLogSync is enabled
+    * [HBASE-8213] - global authorization may lose efficacy 
+    * [HBASE-8222] - User class should implement equals() and hashCode()
+    * [HBASE-8229] - Replication code logs like crazy if a target table cannot be found.
+    * [HBASE-8231] - delete tests in table_tests.rb(TestShell) always running on empty table.
+    * [HBASE-8236] - Set finalName property in hbase-assembly else basename is hbase-assembly rather than hbase.
+    * [HBASE-8238] - xref docs missing from site gen
+    * [HBASE-8242] - Unable to start HBase 0.95.0RC0 out of the box because of ZK trying to access /var/folders/
+    * [HBASE-8252] - Regions by Region Server table in Master's table view needs styling
+    * [HBASE-8254] - Add lz4 to test compression util usage string
+    * [HBASE-8262] - Add testcase to verify HBASE-7876's empty region split semantics change
+    * [HBASE-8266] - Master cannot start if TableNotFoundException is thrown while partial table recovery
+    * [HBASE-8278] - Log message after Memstore flush is always with sequence id -1
+    * [HBASE-8279] - Performance Evaluation does not consider the args passed in case of more than one client
+    * [HBASE-8282] - User triggered flushes does not allow compaction to get triggered even if compaction criteria is met
+    * [HBASE-8285] - HBaseClient never recovers for single HTable.get() calls with no retries when regions move
+    * [HBASE-8287] - TestRegionMergeTransactionOnCluster failed in trunk build #4010
+    * [HBASE-8289] - TestThreads#testSleepWithoutInterrupt should not expect a bounded wait time
+    * [HBASE-8290] - TestHTableMultiplexer is flaky
+    * [HBASE-8293] - Move BigDecimalColumnInterpreter into hbase-client
+    * [HBASE-8295] - TestMasterFailover.testMasterFailoverWithMockedRITOnDeadRS is flaky.
+    * [HBASE-8299] - ExploringCompactionPolicy can get stuck in rare cases.
+    * [HBASE-8300] - TestSplitTransaction fails to delete files due to open handles left when region is split
+    * [HBASE-8303] - Increse the test timeout to 60s when they are less than 20s
+    * [HBASE-8305] - Too much logs in the some tests
+    * [HBASE-8312] - TestCompactionState - still timeouting
+    * [HBASE-8314] - HLogSplitter can retry to open a 0-length hlog file
+    * [HBASE-8317] - Seek returns wrong result with PREFIX_TREE Encoding
+    * [HBASE-8321] - Log split worker should heartbeat to avoid timeout when the hlog is under recovery
+    * [HBASE-8325] - ReplicationSource read a empty HLog throws EOFException
+    * [HBASE-8326] - mapreduce.TestTableInputFormatScan times out frequently
+    * [HBASE-8327] - Consolidate class loaders
+    * [HBASE-8334] - Enable essential column family support by default
+    * [HBASE-8336] - PooledHTable may be returned multiple times to the same pool
+    * [HBASE-8341] - RestoreSnapshotHandler.prepare() is not called by SnapshotManager  and TakeSnapshotHandler should first acquire the table lock
+    * [HBASE-8346] - Prefetching .META. rows in case only when useCache is set to true
+    * [HBASE-8351] - Minor typo in Bytes IllegalArgumentException throw
+    * [HBASE-8352] - Rename '.snapshot' directory
+    * [HBASE-8355] - BaseRegionObserver#pre(Compact|Flush|Store)ScannerOpen returns null
+    * [HBASE-8359] - Too much logs on HConnectionManager
+    * [HBASE-8360] - In HBaseClient#cancelConnections we should close fully the connection
+    * [HBASE-8366] - HBaseServer logs the full query.
+    * [HBASE-8373] - Update Rolling Restart documentation
+    * [HBASE-8374] - NullPointerException when launching the balancer due to unknown region location
+    * [HBASE-8377] - IntegrationTestBigLinkedList calculates wrap for linked list size incorrectly
+    * [HBASE-8379] - bin/graceful_stop.sh does not return the balancer to original state
+    * [HBASE-8380] - NPE in HBaseClient$Connection.readResponse
+    * [HBASE-8385] - [SNAPSHOTS]: Restore fails to restore snapshot of a deleted table
+    * [HBASE-8390] - Trunk/0.95 cannot simply compile against Hadoop 1.0
+    * [HBASE-8391] - StochasticLoadBalancer doesn't call needsBalance
+    * [HBASE-8393] - Testcase TestHeapSize#testMutations is wrong
+    * [HBASE-8396] - balancerSwitch making two zookeeper calls everytime.
+    * [HBASE-8402] - ScanMetrics depends on number of rpc calls to the server.
+    * [HBASE-8404] - Extra commas in LruBlockCache.logStats
+    * [HBASE-8406] - Fix rat check and rat warning in trunk
+    * [HBASE-8407] - Remove Async HBase from 0.95 and trunk.
+    * [HBASE-8413] - Snapshot verify region will always fail if the HFile has been archived
+    * [HBASE-8421] - hbase-0.95.0 tgz does not include lib/junit*.jar
+    * [HBASE-8422] - Master won't go down.  Stuck waiting on .META. to come on line.
+    * [HBASE-8425] - Per-region memstore size is missing in the new RS web UI
+    * [HBASE-8426] - Opening a region failed on "Metrics source RegionServer,sub=Regions already exists!"
+    * [HBASE-8427] - Apache Rat is incorrectly excluding test source files
+    * [HBASE-8431] - Fix missing headers
+    * [HBASE-8432] - a table with unbalanced regions will balance indefinitely with the 'org.apache.hadoop.hbase.master.DefaultLoadBalancer'
+    * [HBASE-8433] - CellComparator#compare returns incorrect result for faked KeyValue
+    * [HBASE-8436] - SeekBefore returns wrong result with PREFIX_TREE Encoding
+    * [HBASE-8437] - Clean up tmp coprocessor jars
+    * [HBASE-8449] - Refactor recoverLease retries and pauses informed by findings over in hbase-8389
+    * [HBASE-8451] - MetricsMBeanBase has concurrency issues in init 
+    * [HBASE-8456] - HBase Windows scripts fail when there's a blank space in JAVA_HOME
+    * [HBASE-8462] - Custom timestamps should not be allowed to be negative
+    * [HBASE-8464] - FastDiffEncoder - valueOffset calculation is incorrect
+    * [HBASE-8466] - Netty messages in the logs
+    * [HBASE-8468] - IntegrationTestImportTsv fails on a cluster
+    * [HBASE-8472] - mvn -Dhadoop.profile=2.0 -Dhadoop-two.version=2.0.5-SNAPSHOT fails because of Undef Class error wrt o.a.h.IdGenerator
+    * [HBASE-8483] - HConnectionManager can leak ZooKeeper connections when using deleteStaleConnection
+    * [HBASE-8488] - HBase transitive dependencies not being pulled in when building apps like Flume which depend on HBase
+    * [HBASE-8494] - TestRemoteAdmin#testClusterStatus should not assume 'requests' does not change
+    * [HBASE-8505] - References to split daughters should not be deleted separately from parent META entry
+    * [HBASE-8507] - HLog tool documentation should be updated to use FSHLog for trunk and 0.95.
+    * [HBASE-8509] - ZKUtil#createWithParents won't set data during znode creation when parent folder doesn't exit
+    * [HBASE-8510] - HBASE-8469 added a hdfs-site.xml file for tests but it gets included in the test jar
+    * [HBASE-8516] - FSUtils.create() fail with ViewFS
+    * [HBASE-8519] - Backup master will never come up if primary master dies during initialization
+    * [HBASE-8522] - Archived hfiles and old hlogs may be deleted immediately by HFileCleaner, LogCleaner in HMaster
+    * [HBASE-8525] - Use sleep multilier when choosing sinks in ReplicationSource
+    * [HBASE-8529] - checkOpen is missing from multi, mutate, get and multiGet etc.
+    * [HBASE-8530] - Refine error message from ExportSnapshot when there is leftover snapshot in target cluster
+    * [HBASE-8531] - TestZooKeeper fails in trunk/0.95 builds
+    * [HBASE-8532] - [Webui] Bootstrap based webui compatibility for IE and also fix some page format issues.
+    * [HBASE-8536] - Possible NullPointerException in ZKInterProcessLockBase#reapExpiredLocks
+    * [HBASE-8537] - Dead region server pulled in from ZK
+    * [HBASE-8539] - Double(or tripple ...) ZooKeeper listeners of the same type when Master recovers from ZK SessionExpiredException
+    * [HBASE-8540] - SnapshotFileCache logs too many times if snapshot dir doesn't exists
+    * [HBASE-8545] - Meta stuck in transition when it is assigned to a just restarted dead region sever 
+    * [HBASE-8547] - Fix java.lang.RuntimeException: Cached an already cached block
+    * [HBASE-8548] - postOpen hook called twice
+    * [HBASE-8555] - FilterList correctness may be affected by random ordering of sub-filter(list)
+    * [HBASE-8560] - TestMasterShutdown failing in trunk 0.95/trunk -- "Unable to get data of znode /hbase/meta-region-server because node does not exist (not an error)"
+    * [HBASE-8564] - TestMetricsRegionServer depends on test order
+    * [HBASE-8565] - stop-hbase.sh clean up: backup master
+    * [HBASE-8567] - TestDistributedLogSplitting#testLogReplayForDisablingTable fails on hadoop 2.0
+    * [HBASE-8568] - Test case TestDistributedLogSplitting#testWorkerAbort failed intermittently 
+    * [HBASE-8570] - CompactSplitThread logs a CompactSplitThread$CompactionRunner but it does not have a toString
+    * [HBASE-8577] - TestZooKeeper#testLogSplittingAfterMasterRecoveryDueToZKExpiry failed intermittently
+    * [HBASE-8579] - TestDelayedRpc falis from time to time
+    * [HBASE-8581] - rpc refactor dropped passing the operation timeout through to the rpcclient
+    * [HBASE-8582] - Possible NullPointerException in ZKInterProcessLockBase#visitLocks
+    * [HBASE-8586] - Revisit of hbase-8483, "HConnectionManager can leak ZooKeeper connections when using deleteStaleConnection"
+    * [HBASE-8592] - [documentation] some updates for the reference guide regarding recent questions on the ML
+    * [HBASE-8596] - [docs] Add docs about Region server "draining" mode
+    * [HBASE-8597] - compaction record (probably) can block WAL cleanup forever if region is closed without edits
+    * [HBASE-8600] - Bunch of log lines from QosFunction: Marking normal priority after
+    * [HBASE-8602] - Ugly stack trace just because regionserver comes up before master....
+    * [HBASE-8606] - Meta scanner is not closed
+    * [HBASE-8615] - HLog Compression may fail due to Hadoop fs input stream returning partial bytes
+    * [HBASE-8621] - More log edits; we log too much
+    * [HBASE-8622] - Remove ' You are currently running the HMaster without HDFS append support enabled. This may result in data loss. Please see the HBase wiki for details. ' from UI
+    * [HBASE-8624] - bin/local-{master-backup|regionservers}.sh doesn't take --config arg
+    * [HBASE-8627] - HBCK can not fix meta not assigned issue
+    * [HBASE-8631] - Meta Region First Recovery
+    * [HBASE-8634] - Fix potential null pointer dereference in HRegionServer and TableLockChecker
+    * [HBASE-8637] - IntegrationTestBigLinkedListWithChaosMonkey uses the wrong table name
+    * [HBASE-8639] - Poor performance of htable#getscanner in multithreaded environment due to DNS.getDefaultHost() being called in ScannerCallable#prepare()
+    * [HBASE-8640] - ServerName in master may not initialize with the configured ipc address of hbase.master.ipc.address
+    * [HBASE-8641] - IndexBuilder example : CF name of the src table is hard coded
+    * [HBASE-8649] - Private method HStore#createWriterInTmp(long) is never called
+    * [HBASE-8650] - HRegionServer#updateRecoveringRegionLastFlushedSequenceId(HRegion) makes inefficient use of keySet iterator instead of entrySet iterator
+    * [HBASE-8651] - Result of integer multiplication cast to long in HRegionFileSystem#sleepBeforeRetry()
+    * [HBASE-8652] - Number of compacting KVs is not reset at the end of compaction
+    * [HBASE-8654] - src assembly does not include hbase-hadoop2-compat module
+    * [HBASE-8658] - hbase clean is deaf to the --config DIR option
+    * [HBASE-8664] - Small fix ups for memory size outputs in UI
+    * [HBASE-8666] - META region isn't fully recovered during master initialization when META region recovery had chained failures
+    * [HBASE-8667] - Master and Regionserver not able to communicate if both bound to different network interfaces on the same machine.
+    * [HBASE-8672] - Create an Integration test for Bulk Loads
+    * [HBASE-8678] - Wrongly delete cells in some case which can not be deleted
+    * [HBASE-8680] - distributedLogReplay performance regression
+    * [HBASE-8684] - Table Coprocessor can't access external HTable by default
+    * [HBASE-8686] - Extra left brace in bin/hbase
+    * [HBASE-8689] - Cover all mutations rather than only Put while reporting for mutations not writing to WAL
+    * [HBASE-8695] - The HBase thrift service ignores XML configuration
+    * [HBASE-8698] - potential thread creation in MetaScanner.metaScan
+    * [HBASE-8699] - Parameter to DistributedFileSystem#isFileClosed should be of type Path
+    * [HBASE-8701] - distributedLogReplay need to apply wal edits in the receiving order of those edits
+    * [HBASE-8705] - RS holding META when restarted in a single node setup may hang infinitely without META assignment
+    * [HBASE-8706] - Some improvement in snapshot
+    * [HBASE-8710] - The balancer shouldn't try balancing one node
+    * [HBASE-8711] - Requests count is completely off
+    * [HBASE-8712] - HFileLinkCleaner (FSUtils.listStatus) logs too much if links do not exists
+    * [HBASE-8719] - Fix responseTooSlow formatting
+    * [HBASE-8723] - HBase Intgration tests are failing because of new defaults.
+    * [HBASE-8729] - distributedLogReplay may hang during chained region server failure
+    * [HBASE-8732] - HFileBlockDefaultEncodingContext isn't thread-safe but is used by all readers, breaks column encoding
+    * [HBASE-8733] - Update our hadoop2 in trunk and 0.95 to 2.0.5-alpha (We are currently 2.0.2)
+    * [HBASE-8741] - Scope sequenceid to the region rather than regionserver (WAS: Mutations on Regions in recovery mode might have same sequenceIDs)
+    * [HBASE-8742] - HTableDescriptor Properties not preserved when cloning
+    * [HBASE-8745] - Fix src assembly so includes top-level src dir
+    * [HBASE-8749] - Potential race condition between FSUtils.renameAndSetModifyTime() and HFile/LogCleaner
+    * [HBASE-8750] - MetaServerShutdownHandler stucks if .META. assignment fails in previous attempt
+    * [HBASE-8757] - ZK throws IllegalStateException
+    * [HBASE-8760] - possible loss of data in snapshot taken after region split
+    * [HBASE-8762] - Performance/operational penalty when calling HTable.get with a list of one Get
+    * [HBASE-8780] - A column Family can have VERSIONS less than zero 
+    * [HBASE-8781] - ImmutableBytesWritable constructor with another IBW as param need to consider the offset of the passed IBW
+    * [HBASE-8782] - Thrift2 can not parse values when using framed transport
+    * [HBASE-8783] - RSSnapshotManager.ZKProcedureMemberRpcs may be initialized with the wrong server name
+    * [HBASE-8786] - Creating a table with a Bloom filter on the shell is broken.
+    * [HBASE-8787] - Merged region endkey is incorrect if one region has null endkey
+    * [HBASE-8789] - Add max RPC version to meta-region-server zk node.
+    * [HBASE-8790] - NullPointerException thrown when stopping regionserver
+    * [HBASE-8791] - Precommit hadoopqa is broke since -r1491656
+    * [HBASE-8794] - DependentColumnFilter.toString() throws NullPointerException
+    * [HBASE-8795] - bin/hbase zkcli cannot take arguments anymore
+    * [HBASE-8797] - Prevent merging regions from moving during online merge
+    * [HBASE-8798] - Fix a minor bug in shell command with clone_snapshot table error
+    * [HBASE-8799] - TestAccessController#testBulkLoad failing on trunk/0.95
+    * [HBASE-8802] - totalCompactingKVs may overflow
+    * [HBASE-8811] - REST service ignores misspelled "check=" parameter, causing unexpected mutations
+    * [HBASE-8813] - Fix time b/w recoverLease invocations from HBASE 8449
+    * [HBASE-8814] - Possible NPE in split if a region has empty store files.
+    * [HBASE-8849] - CellCodec should write and read the memstoreTS/mvccVersion
+    * [HBASE-8853] - The client connection is not cut when receiving the failure notification
+    * [HBASE-8854] - TestScannersFromClientSide.testScanBatch failed with 'There should have room before prefetching is submitted'
+    * [HBASE-8856] - Crash when attempting split with DelimitedKeyPrefixRegionSplitPolicy
+    * [HBASE-8864] - Fix 2 javadoc warnings
+    * [HBASE-8867] - HLogUtils#getServerNameFromHLogDirectoryName does not take into account the -splitting extension
+    * [HBASE-8869] - incorrect javadoc for CompactionRequest.compareTo()
+    * [HBASE-8870] - Store.needsCompaction() should include minFilesToCompact
+    * [HBASE-8871] - The region server can crash at startup
+    * [HBASE-8874] - PutCombiner is skipping KeyValues while combining puts of same row during bulkload
+    * [HBASE-8875] - incorrect javadoc for EXCLUDE_FROM_MINOR_COMPACTION
+    * [HBASE-8877] - Reentrant row locks
+    * [HBASE-8879] - Client Scanner spams the logs if there are lots of scanners.
+    * [HBASE-8880] - Integration Tests shouldn't set the number or reties.
+    * [HBASE-8882] - Create an Integration Test to Test MTTR
+    * [HBASE-8899] - Could not open a region on a server where it is being closed
+    * [HBASE-8902] - IntegrationTestBulkLoad takes way too long
+    * [HBASE-8904] - Clean up IntegrationTestMTTR and add small features.
+    * [HBASE-8909] - HBASE-6170 broke "hbase.regionserver.lease.period" config, we should support it for BC
+    * [HBASE-8910] - HMaster.abortNow shouldn't try to become a master again if it was stopped
+    * [HBASE-8913] - Remove ".replogs" reference as we no longer use it
+    * [HBASE-8917] - Minor cleanup and fixes for POM
+    * [HBASE-8920] - TestZKBasedOpenCloseRegion.testReOpenRegion fails occasionally
+    * [HBASE-8924] - Master Can fail to come up after chaos monkey if the sleep time is too short.
+    * [HBASE-8930] - Filter evaluates KVs outside requested columns
+    * [HBASE-8933] - TestSplitTransactionOnCluster fails because "Region not moved off .META. server"
+    * [HBASE-8944] - Document workaround for MiniDFSCluster exceptions when running tests
+    * [HBASE-8952] - Missing error handling can cause RegionServer RPC thread to busy loop forever
+    * [HBASE-8955] - TestStochasticLoadBalancer timedout
+    * [HBASE-8956] - A couple of small misspellings thoughout the codebase.
+    * [HBASE-8957] - TestDrainingServer. testDrainingServerWithAbort fails
+    * [HBASE-8967] - Duplicate call to snapshotManager.stop() in HRegionServer
+    * [HBASE-8972] - TestCreateTableHandler.testMasterRestartAfterEnablingNodeIsCreated failed
+    * [HBASE-8975] - NPE/HTTP 500 when opening the master's web UI too early
+    * [HBASE-8981] - add a check on the ServerName parse
+    * [HBASE-8982] - Useless logs in  ipc.RpcClient$Connection(584): Not able to close an output stream
+    * [HBASE-8983] - HBaseConnection#deleteAllConnections does not always delete
+    * [HBASE-8985] - Not enough logging in SplitLogManager
+    * [HBASE-8987] - ProtobufUtil.toException doesn't handle plain RemoteException, gets a NoSuchMethodException
+    * [HBASE-8988] - Reuse the thread pool in the shell to not run out of threads
+    * [HBASE-8998] - TestSnapshotCloneIndependence.testOnlineSnapshotMetadataChangesIndependent fails
+    * [HBASE-9006] - RPC code requires cellBlockCodecClass even though one is defined by default
+    * [HBASE-9008] - Reenable TestReplicationKillSlaveRS.killOneSlaveRS
+    * [HBASE-9016] - Cleanup of HRegion (javadoc, unnecessary inits, unnecessary unboxing)
+    * [HBASE-9021] - Create a unit test for ReplicationHLogReaderManager
+    * [HBASE-9023] - TestIOFencing.testFencingAroundCompactionAfterWALSync occasionally fails
+    * [HBASE-9031] - ImmutableBytesWritable.toString() should downcast the bytes before converting to hex string
+    * [HBASE-9034] - hbase-daemon.sh swallows start up errors
+    * [HBASE-9035] - Incorrect example for using a scan stopRow in HBase book
+    * [HBASE-9036] - Few small code cleanup
+    * [HBASE-9038] - Compaction WALEdit gives NPEs with Replication enabled
+    * [HBASE-9044] - Merging regions throws NPE
+    * [HBASE-9048] - HCM throws NullPointerException under load
+    * [HBASE-9052] - Prevent split/merged region from assigning again
+    * [HBASE-9055] - HBaseAdmin#isTableEnabled() should return false for non-existent table 
+    * [HBASE-9060] - ExportSnapshot job fails if target path contains percentage character
+    * [HBASE-9079] - FilterList getNextKeyHint skips rows that should be included in the results
+    * [HBASE-9085] - Integration Tests fails because of bug in teardown phase where the cluster state is not being restored properly.
+    * [HBASE-9087] - Handlers being blocked during reads
+    * [HBASE-9088] - TestSplitLogManager.testMultipleResubmits fails
+    * [HBASE-9092] - OpenRegion could be ignored by mistake
+    * [HBASE-9096] - Disable split during log replay
+    * [HBASE-9097] - Set HBASE_CLASSPATH before rest of the classpath
+    * [HBASE-9099] - logReplay could trigger double region assignment
+    * [HBASE-9115] - HTableInterface.append operation may overwrites values
+    * [HBASE-9119] - hbase.mapreduce.hfileoutputformat.blocksize should configure with blocksize of a table
+    * [HBASE-9120] - ClassFinder logs errors that are not
+    * [HBASE-9138] - getHaseIntegrationTestingUtility() is misspelled
+    * [HBASE-9144] - Leases class has contention that's not needed
+    * [HBASE-9146] - TestHTablePool hangs when run as part of runMediumTests profile
+    * [HBASE-9151] - HBCK cannot fix when meta server znode deleted, this can happen if all region servers stopped and there are no logs to split.
+    * [HBASE-9152] - Not able to find HMaster and HRegionServer processes with grep by process name on ps result because of large classpath as argument.
+    * [HBASE-9156] - 2000ms timeout for some client calls
+    * [HBASE-9158] - Serious bug in cyclic replication
+    * [HBASE-9173] - replication_admin#get_peer_state(id) in ruby script pointing to undefined method `getPeerState'
+    * [HBASE-9174] - javac hangs compiling hbase-example module since namespaces went in
+    * [HBASE-9177] - Cluster UUID is not properly parsable after rewriting to PB.
+    * [HBASE-9181] - Fix javadoc warnings introduce by namespaces
+    * [HBASE-9182] - Allow non-admin users to list all table names
+    * [HBASE-9184] - Ignore zk assign event if region is not known in transition
+    * [HBASE-9185] - mvn site target fails when building with Maven 3.1
+    * [HBASE-9189] - IncreasingToUpperBoundRegionSplitPolicy.shouldSplit() should check all the stores before returning.
+    * [HBASE-9190] - Update scan.rb description to match the naming convention of META after namespace change
+    * [HBASE-9192] - IntegrationTestBigLinkedListWithChaosMonkey never exits if there is an error
+    * [HBASE-9195] - Fix TestFSHDFSUtils against java7 test re-ordering
+    * [HBASE-9197] - TestAdmin#testShouldCloseTheRegionBasedOnTheEncodedRegionName shuts down the namespaces table and never starts it up again
+    * [HBASE-9198] - RpcClient#call could hang
+    * [HBASE-9199] - Call duration is not accurate
+    * [HBASE-9200] - HFilePrettyPrinter finds incorrect largest row
+    * [HBASE-9204] - An Offline SplitParent Region can be assigned breaking split references
+    * [HBASE-9211] - "ERROR: undefined method `message' for nil:NilClass" in the shell on error
+    * [HBASE-9224] - Print out name of the method we do not support rather than throw NPE
+    * [HBASE-9226] - Thrift host and port are hardcoded in thrift2 DemoClient.java
+    * [HBASE-9230] - Fix the server so it can take a pure pb request param and return a pure pb result
+    * [HBASE-9232] - Fix javadoc warning and a few findbugs items.
+    * [HBASE-9233] - isTableAvailable() may be stuck if an offline parent was never assigned
+    * [HBASE-9234] - Rebuilding user regions should ignore system tables
+    * [HBASE-9236] - region_mover#getTable() should use TableName.toString() instead of Bytes.toString()
+    * [HBASE-9237] - Integration test cleanup after ChaosMonkey refactor
+    * [HBASE-9250] - Lease sleep time can throw an exception
+    * [HBASE-9251] - list_namespace_tables seems to fail
+    * [HBASE-9253] - Clean up IT test code
+    * [HBASE-9255] - TestAsyncProcess#testErrorsServers is flaky on suse linux
+    * [HBASE-9257] - TestAsyncProcess#testFailAndSuccess fails sometime due to a race condition
+    * [HBASE-9267] - StochasticLoadBalancer goes over its processing time limit
+    * [HBASE-9268] - Client doesn't recover from a stalled region server
+    * [HBASE-9269] - IntegrationTestBulkLoad fails because a public constructor is needed.
+    * [HBASE-9271] - Doc the major differences between 0.94 and 0.96; a distillation of release notes for those w/ limited attention
+    * [HBASE-9274] - After HBASE-8408 applied, temporary test files are being left in /tmp/hbase-<user>
+    * [HBASE-9278] - Reading Pre-namespace meta table edits kills the reader
+    * [HBASE-9281] - user_permission command encounters NullPointerException
+    * [HBASE-9283] - Struct and StructIterator should properly handle trailing nulls
+    * [HBASE-9285] - User who created table cannot scan the same table due to Insufficient permissions
+    * [HBASE-9289] - hbase-assembly pom should use project.parent.basedir
+    * [HBASE-9290] - Add logging in IntegrationTestBigLinkedList Verify reduce phase
+    * [HBASE-9296] - Update to bootstrap 3.0
+    * [HBASE-9298] - ns checker runs too frequently; too much mention in master logs
+    * [HBASE-9301] - Default hbase.dynamic.jars.dir to hbase.rootdir/jars
+    * [HBASE-9302] - Column family and qualifier should be allowed to be set as null in grant shell command
+    * [HBASE-9303] - Snapshot restore of table which splits after snapshot was taken encounters 'Region is not online'
+    * [HBASE-9307] - HalfStoreFileReader needs to handle the faked key else compactions go into infinite loops
+    * [HBASE-9308] - Fix precommit javadoc warnings
+    * [HBASE-9309] - The links in the backup masters template are bad
+    * [HBASE-9310] - Remove slop for Stochastic load balancer
+    * [HBASE-9312] - Lower StochasticLoadBalancer's default max run time 
+    * [HBASE-9318] - Procedure#waitForLatch may not throw error even there is one
+    * [HBASE-9319] - Apply 'HBASE-7685 Closing socket connection can't be removed from SecureClient' to trunk
+    * [HBASE-9320] - Up timeouts on NamespaceUpgrades timeouts
+    * [HBASE-9321] - Contention getting the current user in RpcClient$Connection.writeRequest
+    * [HBASE-9322] - Contention on the SoftValueSortedMap with multiple clients
+    * [HBASE-9323] - TestHRegionOnCluster fails
+    * [HBASE-9326] - ServerName is created using getLocalSocketAddress, breaks binding to the wildcard address. Revert HBASE-8640
+    * [HBASE-9327] - retryTime log is confusing
+    * [HBASE-9328] - Table web UI is corrupted sometime
+    * [HBASE-9329] - SnapshotManager should check for directory existance before throwing a warning.
+    * [HBASE-9332] - OrderedBytes does not decode Strings correctly
+    * [HBASE-9337] - shell 'user_permission' throws no method 'toStringBinary' for (o.a.h.h.TableName) 
+    * [HBASE-9338] - Test Big Linked List fails on Hadoop 2.1.0
+    * [HBASE-9340] - revoke 'user' throws ArrayIndexOutOfBoundsException
+    * [HBASE-9344] - RegionServer not shutting down upon KeeperException in open region
+    * [HBASE-9346] - HBCK should provide an option to check if regions boundaries are the same in META and in stores.
+    * [HBASE-9348] - TerminatedWrapper error decoding, skipping skippable types
+    * [HBASE-9350] - In ChaosMonkey, MoveRegionsOfTableAction throws UnknownRegionException
+    * [HBASE-9353] - HTable returned by MetaReader#getMetaHTable() is not closed in MetaEditor#addRegionToMeta()
+    * [HBASE-9364] - Get request with multiple columns returns partial results
+    * [HBASE-9366] - TestHTraceHooks.testTraceCreateTable ConcurrentModificationException up in htrace lib
+    * [HBASE-9372] - Restore HConstants.META_TABLE_NAME as deprecated
+    * [HBASE-9375] - [REST] Querying row data gives all the available versions of a column
+    * [HBASE-9380] - StoreFile.Reader is not being closed on memstore flush
+    * [HBASE-9382] - replicateWALEntry doesn't use the replication handlers
+    * [HBASE-9384] - [WINDOWS] Using file://{hbase.tmp.dir}/hbase for hbase.rootdir causes illegal argument exception on windows
+    * [HBASE-9386] - [WINDOWS] Small improvements to .cmd scripts
+    * [HBASE-9387] - Region could get lost during assignment
+    * [HBASE-9388] - [replication] ZK Dump prints the raw PBUF for the HLog positions
+    * [HBASE-9390] - coprocessors observers are not called during a recovery with the new log replay algorithm
+    * [HBASE-9391] - Compilation problem in AccessController with JDK 6
+    * [HBASE-9394] - [replication] size accounting is completely off in the source
+    * [HBASE-9400] - [UI] Catalog tables section isn't aligned
+    * [HBASE-9402] - initCause() uses wrong exception in ProtobufLogReader#readNext(HLog$Entry)
+    * [HBASE-9411] - Increment / decrement of rpcCount in RpcServer#Connection is not protected by synchronization
+    * [HBASE-9412] - Startup scripts create 2 .out files.
+    * [HBASE-9413] - WebUI says ".META." table but table got renames to "hbase:meta". Meed to update the UI.
+    * [HBASE-9414] - start-hbase.cmd doesn't need the execute flag.
+    * [HBASE-9418] - REST server web UI has some dead links
+    * [HBASE-9419] - Add more informative client column to Integration Test Linked List
+    * [HBASE-9420] - Math.max() on syncedTillHere lacks synchronization
+    * [HBASE-9421] - Provide better error message when dropping non-existent namespace
+    * [HBASE-9423] - Log splitting should not start till HDFS out of safe mode
+    * [HBASE-9425] - Starting a LocalHBaseCluster when 2181 is occupied results in "Too many open files"
+    * [HBASE-9428] - Regex filters are at least an order of magnitude slower since 0.94.3
+    * [HBASE-9430] - Memstore heapSize calculation - DEEP_OVERHEAD is incorrect
+    * [HBASE-9433] - OpenRegionHandler uses different assignment timeout
+    * [HBASE-9434] - hbck tries to sideline file to root dir
+    * [HBASE-9435] - Fix jersey serialization/deserialization of json objects
+    * [HBASE-9436] - hbase.regionserver.handler.count default: 5, 10, 25, 30? pick one
+    * [HBASE-9437] - hbase.regionserver.checksum.verify default: true or false
+    * [HBASE-9439] - shell command list shows something not meaningful
+    * [HBASE-9442] - HLogKey(walKey) constructor needs to be either removed, deprecated or fixed
+    * [HBASE-9446] - saveVersion.sh spit pushd: not found popd: not found
+    * [HBASE-9449] - document how to use shell enhancements from HBASE-5548
+    * [HBASE-9450] - TestDistributedLogSplitting fails
+    * [HBASE-9451] - Meta remains unassigned when the meta server crashes with the ClusterStatusListener set
+    * [HBASE-9452] - Simplify the configuration of the multicast notifier
+    * [HBASE-9453] - make dev-support/generate-hadoopX-poms.sh have exec perms.
+    * [HBASE-9454] - HBaseAdmin#unassign() has incorrect @param argument
+    * [HBASE-9457] - Master could fail start if region server with system table is down
+    * [HBASE-9460] - Fix HLogPerformanceEvaluation so runs against localfs
+    * [HBASE-9461] - Some doc and cleanup in RPCServer
+    * [HBASE-9462] - HBaseAdmin#isTableEnabled() should throw exception for non-existent table
+    * [HBASE-9463] - Fix comments around alter tables
+    * [HBASE-9468] - Previous active master can still serves RPC request when it is trying recovering expired zk session
+    * [HBASE-9471] - htrace synchronized on getInstance
+    * [HBASE-9474] - Cleanup of hbase script usage
+    * [HBASE-9475] - Fix pom warnings found by new m2eclipse
+    * [HBASE-9476] - Yet more master log cleanup
+    * [HBASE-9480] - Regions are unexpectedly made offline in certain failure conditions
+    * [HBASE-9482] - Do not enforce secure Hadoop for secure HBase
+    * [HBASE-9485] - TableOutputCommitter should implement recovery if we don't want jobs to start from 0 on RM restart
+    * [HBASE-9486] - NPE in HTable.close() with AsyncProcess
+    * [HBASE-9492] - hdfs-site.xml is not excluded from the it-test jar
+    * [HBASE-9497] - Old .META. .tableinfo file kills HMaster
+    * [HBASE-9498] - NPE in HBaseAdmin if master not running
+    * [HBASE-9502] - HStore.seekToScanner should handle magic value
+    * [HBASE-9508] - Restore some API mistakenly removed in client, mapred*, and common
+    * [HBASE-9509] - Fix HFile V1 Detector to handle AccessControlException for non-existant files
+    * [HBASE-9510] - Namespace operations should throw clean exceptions
+    * [HBASE-9511] - LZ4 codec retrieval executes redundant code
+    * [HBASE-9512] - Regions can't get out InRecovery state sometimes when turn off distributeLogReplay and restart a cluster
+    * [HBASE-9514] - Prevent region from assigning before log splitting is done
+    * [HBASE-9519] - fix NPE in EncodedScannerV2.getFirstKeyInBlock()
+    * [HBASE-9521] - clean clearBufferOnFail behavior and deprecate it
+    * [HBASE-9525] - "Move" region right after a region split is dangerous
+    * [HBASE-9533] - List of dependency jars for MR jobs is hard-coded and does not include netty, breaking MRv1 jobs
+    * [HBASE-9534] - Short-Circuit Coprocessor HTable access when on the same server
+    * [HBASE-9536] - Fix minor javadoc warnings
+    * [HBASE-9539] - Handle post namespace snapshot files  when checking for HFile V1 
+    * [HBASE-9547] - Surefire steals focus on mac osx
+    * [HBASE-9548] - Cleanup SnapshotTestingUtils
+    * [HBASE-9549] - KeyValue#parseColumn(byte[]) does not handle empty qualifier
+    * [HBASE-9550] - IntegrationTestBigLinkedList used to be able to run on pseudo-distributed clusters
+    * [HBASE-9551] - HBaseTestingUtility#createPreSplitLoadTestTable double close HBaseAdmin
+    * [HBASE-9554] - TestOfflineMetaRebuildOverlap#testMetaRebuildOverlapFail fails due to NPE
+    * [HBASE-9555] - Reset loadbalancer back to StochasticLoadBalancer
+    * [HBASE-9557] - strange dependencies for hbase-client
+    * [HBASE-9558] - PerformanceEvaluation is in hbase-server, and create a dependency to MiniDFSCluster
+    * [HBASE-9561] - hbase-server-tests.jar contains a test mapred-site.xml
+    * [HBASE-9563] - Autorestart doesn't work if zkcleaner fails
+    * [HBASE-9565] - LocalityRegionPicker was mistakenly commented out
+    * [HBASE-9569] - TestHLog is broken
+    * [HBASE-9579] - Sanity check visiblity and audience for server-side modules.
+    * [HBASE-9581] - Few tests broken since HBASE-9551
+    * [HBASE-9590] - TableEventHandler#reOpenAllRegions() should close the HTable instance
+    * [HBASE-9597] - Create hbase-thrift module
+    * [HBASE-9598] - Non thread safe increment of task.unforcedResubmits in SplitLogManager#resubmit()
+    * [HBASE-9600] - TestColumnSchemaModel and TestTableSchemaModel test cases are failing with IBM IBM Java 6
+    * [HBASE-9602] - Cluster can't start when log splitting at startup time and the master's web UI is refreshed a few times
+    * [HBASE-9603] - IsRestoreSnapshotDoneResponse has wrong default causing restoreSnapshot() to be async
+    * [HBASE-9609] - AsyncProcess doesn't increase all the counters when trying to limit the per region flow.
+    * [HBASE-9610] - TestThriftServer.testAll failing
+    * [HBASE-9612] - Ability to batch edits destined to different regions
+    * [HBASE-9632] - Put the shell in a maven sub module (hbase-shell) instead of hbase-server
+    * [HBASE-9633] - Partial reverse of HBASE-9533
+    * [HBASE-9639] - SecureBulkLoad dispatches file load requests to all Regions
+    * [HBASE-9640] - Increment of loadSequence in CoprocessorHost#loadInstance() is thread-unsafe 
+    * [HBASE-9642] - AM ZK Workers stuck doing 100% CPU on HashMap.put
+    * [HBASE-9645] - Regionserver halt because of HLog's "Logic Error Snapshot seq id from earlier flush still present!"
+    * [HBASE-9647] - Add a test in TestAsyncProcess to check the number of threads created
+    * [HBASE-9649] - HFilePrettyPrinter should not throw a NPE if FirstKey or LastKey is null.
+    * [HBASE-9650] - Per region metrics are not showing up for system tables.
+    * [HBASE-9653] - Add compaction metrics to trunk
+    * [HBASE-9659] - some integration tests can no longer be run using maven
+    * [HBASE-9660] - Release source tarball should contain ./dev-support contents.
+    * [HBASE-9662] - PerformanceEvaluation input do not handle tags properties
+    * [HBASE-9663] - PerformanceEvaluation does not properly honor specified table name parameter
+    * [HBASE-9670] - Client pause should be 100ms everywhere
+    * [HBASE-9672] - LoadTestTool NPE's when -num_tables is given, but -tn is not
+    * [HBASE-9676] - AsyncProcess can create more tasks than hbase.client.max.total.tasks
+    * [HBASE-9685] - IntegrationTestMTTR should stop on RetriesExhaustedException
+    * [HBASE-9687] - ClassNotFoundException is thrown when ExportSnapshot runs against hadoop cluster where HBase is not installed on the same node as resourcemanager
+    * [HBASE-9688] - Fix javadoc warning in HConnectionManager class javadoc
+    * [HBASE-9694] - HBaseTestingUtility.createTable infinite loop
+    * [HBASE-9695] - Some never used local variables cleanup.
+    * [HBASE-9696] - Master recovery ignores online merge znode
+    * [HBASE-9697] - ZKDataMigrator should exit on table(s) null check.
+    * [HBASE-9698] - HBCK does not handle tables with no regions left
+    * [HBASE-9699] - For Downstreamers using HBaseTestingUtility is hard.
+    * [HBASE-9700] - remove htrace-zipkin from the runtime dependencies
+    * [HBASE-9706] - Improve detection of secure ZooKeeper
+    * [HBASE-9709] - LogReplay throws NPE when no KVs to be replayed in a WALEdit
+    * [HBASE-9710] - Use the region name, not the encoded name, when region is not on current server
+    * [HBASE-9718] - Add a test scope dependency on org.slf4j:slf4j-api to hbase-client
+    * [HBASE-9723] - TestAsyncProcess#testFailAndSuccess & testThreadCreation are flaky on SUSE
+    * [HBASE-9724] - Failed region split is not handled correctly by AM
+    * [HBASE-9727] - HBase Rest Server - DELETE scanner operation is a no-op
+    * [HBASE-9728] - generate-hadoopX-poms.sh examples is wrong.
+    * [HBASE-9730] - Exceptions in multi operations are not handled correctly
+    * [HBASE-9732] - Static AtomicLong updated in StoreFileScanner every (re)seek
+    * [HBASE-9735] - region_mover.rb uses the removed HConnection.getZooKeeperWatcher() method
+    * [HBASE-9737] - Corrupt HFile cause resource leak leading to Region Server OOM
+    * [HBASE-9743] - RollingBatchRestartRsAction aborts if timeout
+    * [HBASE-9745] - Append HBASE_CLASSPATH to end of Java classpath and use another env var for prefix
+    * [HBASE-9747] - PrefixFilter with OR condition gives wrong results
+    * [HBASE-9748] - Address outstanding comments raised for HBASE-9696
+    * [HBASE-9751] - Excessive  readpoints checks in StoreFileScanner
+    * [HBASE-9753] - Excessive readpoint checks in MemstoreScanner
+    * [HBASE-9754] - Eliminate threadlocal from MVCC code
+    * [HBASE-9755] - Cannot run classes in hbase-server tests jar from command line 
+    * [HBASE-9759] - Prevent random number collision in IntegrationTestBulkLoad
+    * [HBASE-9761] - Put copy constructor should clone the operation attributes also
+    * [HBASE-9765] - TestImportTsv.testBulkOutputWithTsvImporterTextMapper() may not be working correctly
+    * [HBASE-9766] - HFileV3 - Optional tags write and read is not working as expected
+    * [HBASE-9768] - Two issues in AsyncProcess
+    * [HBASE-9770] - HFilePerformanceEvaluation is using the wrong Comparator
+    * [HBASE-9773] - Master aborted when hbck asked the master to assign a region that was already online
+    * [HBASE-9776] - Test Load And Verify Fails with TableNotEnabledException
+    * [HBASE-9785] - Fix heap size reporting in HRegion
+    * [HBASE-9786] - [hbck]: hbck -metaonly incorrectly reports inconsistent regions after HBASE-9698 fix
+    * [HBASE-9788] - [WINDOWS] Update rest server class name
+    * [HBASE-9791] - MR initializes scanner twice
+    * [HBASE-9792] - Region states should update last assignments when a region is opened.
+    * [HBASE-9793] - Offline a region before it's closed could cause double assignment
+    * [HBASE-9796] - npe in RegionServerCallable
+    * [HBASE-9798] - Include dependency hamcrest-core
+    * [HBASE-9807] - block encoder unnecessarily copies the key for each reseek
+    * [HBASE-9808] - org.apache.hadoop.hbase.rest.PerformanceEvaluation is out of sync with org.apache.hadoop.hbase.PerformanceEvaluation
+    * [HBASE-9810] - Global memstore size will be calculated wrongly if replaying recovered edits throws exception
+    * [HBASE-9813] - Log splitting doesn't prevent RS creating new hlog file
+    * [HBASE-9816] - Address review comments in HBASE-8496
+    * [HBASE-9821] - Scanner id could collide
+    * [HBASE-9822] - IntegrationTestLazyCfLoading failed occasionally in a secure enviroment
+    * [HBASE-9838] - Fix javadoc warning in ImportTsv#TsvParser ctor
+    * [HBASE-9843] - Various fixes in client code
+    * [HBASE-9848] - Make regionserver Canary exit with different exit codes
+    * [HBASE-9849] - [REST] Forbidden schema delete in read only mode
+    * [HBASE-9850] - Issues with UI for table compact/split operation completion. After split/compaction operation using UI, the page is not automatically redirecting back using IE8/Firefox.
+    * [HBASE-9856] - Fix some findbugs Performance Warnings
+    * [HBASE-9859] - Canary Shouldn't go off if the table being read from is disabled
+    * [HBASE-9862] - manage error per server and per region in the protobuffed client
+    * [HBASE-9863] - Intermittently TestZooKeeper#testRegionAssignmentAfterMasterRecoveryDueToZKExpiry hangs in admin#createTable() call
+    * [HBASE-9865] - Reused WALEdits in replication may cause RegionServers to go OOM
+    * [HBASE-9868] - Remove some array copy, especially around protobuf
+    * [HBASE-9869] - Optimize HConnectionManager#getCachedLocation
+    * [HBASE-9870] - HFileDataBlockEncoderImpl#diskToCacheFormat uses wrong format
+    * [HBASE-9871] - PB issue : Increment attributes are not getting passed to server
+    * [HBASE-9872] - ModifyTable does not  modify the attributes of a newly modified/changed ColumnDescriptor
+    * [HBASE-9874] - Append and Increment operation drops Tags
+    * [HBASE-9885] - Avoid some Result creation in protobuf conversions
+    * [HBASE-9886] - Optimize ServerName#compareTo
+    * [HBASE-9890] - MR jobs are not working if started by a delegated user
+    * [HBASE-9893] - Incorrect assert condition in OrderedBytes decoding
+    * [HBASE-9895] - 0.96 Import utility can't import an exported file from 0.94
+    * [HBASE-9900] - Fix unintended byte[].toString in AccessController
+    * [HBASE-9901] - Add a toString in HTable, fix a log in AssignmentManager
+    * [HBASE-9902] - Region Server is starting normally even if clock skew is more than default 30 seconds(or any configured). -> Regionserver node time is greater than master node time
+    * [HBASE-9903] - Remove the jamon generated classes from the findbugs analysis
+    * [HBASE-9906] - Restore snapshot fails to restore the meta edits sporadically  
+    * [HBASE-9908] - [WINDOWS] Fix filesystem / classloader related unit tests
+    * [HBASE-9909] - TestHFilePerformance should not be a unit test, but a tool
+    * [HBASE-9915] - Performance: isSeeked() in EncodedScannerV2 always returns false
+    * [HBASE-9918] - MasterAddressTracker & ZKNamespaceManager ZK listeners are missed after master recovery
+    * [HBASE-9926] - Scanner doesn't check if a region is available
+    * [HBASE-9947] - Add CM action for online compression algorithm change
+    * [HBASE-9949] - Fix the race condition between Compaction and StoreScanner.init
+    * [HBASE-9952] - Snapshot restore may fail due to NullPointerException
+    * [HBASE-9956] - Remove keyLength cache from KeyValue
+    * [HBASE-9957] - [WINDOWS] TestNamespaceUpgrade fails on windows
+    * [HBASE-9958] - Remove some array copy, change lock scope in locateRegion
+    * [HBASE-9959] - Remove some array copy - server side
+    * [HBASE-9960] - Fix javadoc for CellUtil#tagsIterator()
+    * [HBASE-9961] - [WINDOWS] Multicast should bind to local address
+    * [HBASE-9962] - Improve tag iteration
+    * [HBASE-9970] - HBase BulkLoad, table is creating with the timestamp key also as a column to the table. 
+    * [HBASE-9973] - [ACL]: Users with 'Admin' ACL permission will lose permissions after upgrade to 0.96.x from 0.94.x or 0.92.x
+    * [HBASE-9975] - Not starting ReplicationSink when using custom implementation for the ReplicationSink.
+    * [HBASE-9976] - Don't create duplicated TableName objects
+    * [HBASE-9978] - The client retries even if the method is not present on the server
+    * [HBASE-9982] - TestClientNoCluster should use random numbers
+    * [HBASE-9983] - Lower the memory footprint of HRegionLocation
+    * [HBASE-9987] - Remove some synchronisation points in HConnectionManager
+    * [HBASE-9988] - DOn't use HRI#getEncodedName in the client
+    * [HBASE-9989] - Add a test on get in TestClientNoCluster
+    * [HBASE-9992] - [hbck] Refactor so that arbitrary -D cmdline options are included 
+    * [HBASE-9995] - Not stopping ReplicationSink when using custom implementation for the ReplicationSink
+    * [HBASE-10004] - Some fixes for scoping sequence Ids to region level
+    * [HBASE-10005] - TestVisibilityLabels fails occasionally
+    * [HBASE-10011] - Fix some findbugs in the client
+    * [HBASE-10012] - Hide ServerName constructor
+    * [HBASE-10013] - Enhance the message about ZK when there is an exception
+    * [HBASE-10014] - HRegion#doMiniBatchMutation rollbacks the memstore even if there is nothing to rollback.
+    * [HBASE-10015] - Replace intrinsic locking with explicit locks in StoreScanner
+    * [HBASE-10026] - HBaseAdmin#createTable could fail if region splits too fast
+    * [HBASE-10029] - Proxy created by HFileSystem#createReorderingProxy() should properly close when connecting to HA namenode
+    * [HBASE-10030] - [JDK8] Erasure of PoolMap#remove(K,V) conflicts with superclass method
+    * [HBASE-10032] - [JDK8] ConcurrentSkipListMap class size changed
+    * [HBASE-10045] - HMaster's clear command could conflict with JMX ports
+    * [HBASE-10046] - Unmonitored HBase service could accumulate Status objects and OOM
+    * [HBASE-10050] - graceful_stop.sh syntax error
+    * [HBASE-10051] - rolling-restart.sh have old value of "zookeeper.znode.unassiged" config causing infinite loop
+    * [HBASE-10053] - ProtobufUtil#toMutationNoData interface change causes downstream project build break
+    * [HBASE-10056] - region_status.rb not adopted to 0.96 api
+    * [HBASE-10057] - TestRestoreFlushSnapshotFromClient and TestRestoreSnapshotFromClient fail to finish occasionally
+    * [HBASE-10061] - TableMapReduceUtil.findOrCreateJar calls updateMap(null, ) resulting in thrown NPE
+    * [HBASE-10069] - Potential duplicate calls to log#appendNoSync() in HRegion#doMiniBatchMutation()
+    * [HBASE-10072] - Regenerate ClientProtos after HBASE-4811
+    * [HBASE-10073] - Revert HBASE-9718 (Add a test scope dependency on org.slf4j:slf4j-api to hbase-client)
+    * [HBASE-10079] - Race in TableName cache
+    * [HBASE-10084] - [WINDOWS] bin\hbase.cmd should allow whitespaces in java.library.path and classpath
+    * [HBASE-10085] - Some regions aren't re-assigned after a cluster restarts
+    * [HBASE-10087] - Store should be locked during a memstore snapshot
+    * [HBASE-10090] - Master could hang in assigning meta
+    * [HBASE-10098] - [WINDOWS] pass in native library directory from hadoop for unit tests
+    * [HBASE-10099] - javadoc warning introduced by LabelExpander 188: warning - @return tag has no arguments 
+    * [HBASE-10101] - testOfflineRegionReAssginedAfterMasterRestart times out sometimes.
+    * [HBASE-10103] - TestNodeHealthCheckChore#testRSHealthChore: Stoppable must have been stopped
+    * [HBASE-10107] - [JDK7] TestHBaseSaslRpcClient.testHBaseSaslRpcClientCreation failing on Jenkins
+    * [HBASE-10108] - NullPointerException thrown while use Canary with '-regionserver' option
+    * [HBASE-10111] - Verify that a snapshot is not corrupted before restoring it
+    * [HBASE-10112] - Hbase rest query params for maxVersions and maxValues are not parsed
+    * [HBASE-10114] - _scan_internal() in table.rb should accept argument that specifies reverse scan
+    * [HBASE-10120] - start-hbase.sh doesn't respect --config in non-distributed mode
+    * [HBASE-10125] - KeyValue(Cell c) copy constructor doesn't copy tags data
+    * [HBASE-10137] - GeneralBulkAssigner with retain assignment plan can be used in EnableTableHandler to bulk assign the regions
+    * [HBASE-10138] - incorrect or confusing test value is used in block caches
+    * [HBASE-10142] - TestLogRolling#testLogRollOnDatanodeDeath test failure
+    * [HBASE-10146] - Bump HTrace version to 2.04
+    * [HBASE-10148] - [VisibilityController] Tolerate regions in recovery
+    * [HBASE-10149] - TestZKPermissionsWatcher.testPermissionsWatcher test failure
+    * [HBASE-10155] - HRegion isRecovering state is wrongly coming in postOpen hook
+    * [HBASE-10161] - [AccessController] Tolerate regions in recovery
+    * [HBASE-10163] - Example Thrift DemoClient is flaky
+    * [HBASE-10176] - Canary#sniff() should close the HTable instance
+    * [HBASE-10178] - Potential null object dereference in TablePermission#equals()
+    * [HBASE-10179] - HRegionServer underreports readRequestCounts by 1 under certain conditions
+    * [HBASE-10182] - Potential null object deference in AssignmentManager#handleRegion()
+    * [HBASE-10186] - region_mover.rb broken because ServerName constructor is changed to private
+    * [HBASE-10187] - AccessController#preOpen - Include 'labels' table also into special tables list.
+    * [HBASE-10193] - Cleanup HRegion if one of the store fails to open at region initialization
+    * [HBASE-10194] - [Usability]: Instructions in CompactionTool no longer accurate because of namespaces
+    * [HBASE-10195] - "mvn site" build failed with OutOfMemoryError
+    * [HBASE-10196] - Enhance HBCK to understand the case after online region merge
+    * [HBASE-10198] - Add a note on how to Import 0.94 exported file to a 0.96 cluster or onwards
+    * [HBASE-10207] - ZKVisibilityLabelWatcher : Populate the labels cache on startup
+    * [HBASE-10210] - during master startup, RS can be you-are-dead-ed by master in error
+    * [HBASE-10215] - TableNotFoundException should be thrown after removing stale znode in ETH
+    * [HBASE-10219] - HTTPS support for HBase in RegionServerListTmpl.jamon
+    * [HBASE-10220] - Put all test service principals into the superusers list
+    * [HBASE-10221] - Region from coprocessor invocations can be null on failure
+    * [HBASE-10223] - [VisibilityController] cellVisibility presence check on Delete mutation is wrong
+    * [HBASE-10225] - Bug in calls to RegionObsever.postScannerFilterRow
+    * [HBASE-10226] - [AccessController] Namespace grants not always checked
+    * [HBASE-10231] - Potential NPE in HBaseFsck#checkMetaRegion()
+    * [HBASE-10232] - Remove native profile from hbase-shell
+    * [HBASE-10233] - VisibilityController is too chatty at DEBUG level
+    * [HBASE-10249] - TestReplicationSyncUpTool fails because failover takes too long
+    * [HBASE-10260] - Canary Doesn't pick up Configuration properly.
+    * [HBASE-10264] - [MapReduce]: CompactionTool in mapred mode is missing classes in its classpath
+    * [HBASE-10267] - TestNamespaceCommands occasionally fails
+    * [HBASE-10268] - TestSplitLogWorker occasionally fails
+    * [HBASE-10272] - Cluster becomes nonoperational if the node hosting the active Master AND ROOT/META table goes offline
+    * [HBASE-10274] - MiniZookeeperCluster should close ZKDatabase when shutdown ZooKeeperServers
+    * [HBASE-10284] - Build broken with svn 1.8
+    * [HBASE-10292] - TestRegionServerCoprocessorExceptionWithAbort fails occasionally
+    * [HBASE-10298] - TestIOFencing occasionally fails
+    * [HBASE-10304] - Running an hbase job jar: IllegalAccessError: class com.google.protobuf.ZeroCopyLiteralByteString cannot access its superclass com.google.protobuf.LiteralByteString
+    * [HBASE-10307] - IntegrationTestIngestWithEncryption assumes localhost cluster
+    * [HBASE-10310] - ZNodeCleaner session expired for /hbase/master
+    * [HBASE-10315] - Canary shouldn't exit with 3 if there is no master running.
+    * [HBASE-10318] - generate-hadoopX-poms.sh expects the version to have one extra '-'
+    * [HBASE-10319] - HLog should roll periodically to allow DN decommission to eventually complete.
+    * [HBASE-10320] - Avoid ArrayList.iterator() ExplicitColumnTracker
+    * [HBASE-10321] - CellCodec has broken the 96 client to 98 server compatibility
+    * [HBASE-10322] - Strip tags from KV while sending back to client on reads
+    * [HBASE-10326] - Super user should be able scan all the cells irrespective of the visibility labels
+    * [HBASE-10329] - Fail the writes rather than proceeding silently to prevent data loss when AsyncSyncer encounters null writer and its writes aren't synced by other Asyncer
+    * [HBASE-10332] - Missing .regioninfo file during daughter open processing
+    * [HBASE-10333] - Assignments are not retained on a cluster start
+    * [HBASE-10334] - RegionServer links in table.jsp is broken
+    * [HBASE-10335] - AuthFailedException in zookeeper may block replication forever
+    * [HBASE-10337] - HTable.get() uninteruptible
+    * [HBASE-10338] - Region server fails to start with AccessController coprocessor if installed into RegionServerCoprocessorHost
+    * [HBASE-10339] - Mutation::getFamilyMap method was lost in 98
+    * [HBASE-10349] - Table became unusable when master balanced its region after table was dropped
+    * [HBASE-10365] - HBaseFsck should clean up connection properly when repair is completed
+    * [HBASE-10366] - 0.94 filterRow() may be skipped in 0.96(or onwards) code
+    * [HBASE-10370] - Compaction in out-of-date Store causes region split failure
+    * [HBASE-10371] - Compaction creates empty hfile, then selects this file for compaction and creates empty hfile and over again
+    * [HBASE-10375] - hbase-default.xml hbase.status.multicast.address.port does not match code
+    * [HBASE-10384] - Failed to increment serveral columns in one Increment
+    * [HBASE-10400] - [hbck] Continue if region dir missing on region merge attempt
+    * [HBASE-10401] - [hbck] perform overlap group merges in parallel
+    * [HBASE-10412] - Distributed log replay : Cell tags getting missed
+    * [HBASE-10422] - ZeroCopyLiteralByteString.zeroCopyGetBytes has an unusable prototype and conflicts with AsyncHBase
+    * [HBASE-10426] - user_permission in security.rb calls non-existent UserPermission#getTable method
+    * [HBASE-10429] - Make Visibility Controller to throw a better msg if it is of type RegionServerCoprocessor
+    * [HBASE-10431] - Rename com.google.protobuf.ZeroCopyLiteralByteString
+    * [HBASE-10433] - SecureProtobufWALReader does not handle unencrypted WALs if configured to encrypt
+    * [HBASE-10434] - Store Tag compression information for a WAL in its header
+    * [HBASE-10435] - Lower the log level of Canary region server match
+    * [HBASE-10438] - NPE from LRUDictionary when size reaches the max init value
+    * [HBASE-10442] - prepareDelete() isn't called before doPreMutationHook for a row deletion case
+    * [HBASE-10443] - IndexOutOfBoundExceptions when processing compressed tags in HFile
+    * [HBASE-10447] - Memstore flusher scans storefiles also when the scanner heap gets reset
+    * [HBASE-10448] - ZKUtil create and watch methods don't set watch in some cases
+    * [HBASE-10449] - Wrong execution pool configuration in HConnectionManager
+    * [HBASE-10454] - Tags presence file info can be wrong in HFiles when PrefixTree encoding is used
+    * [HBASE-10455] - cleanup InterruptedException management
+    * [HBASE-10456] - Balancer should not run if it's just turned off.
+    * [HBASE-10460] - Return value of Scan#setSmall() should be void
+    * [HBASE-10461] - table.close() in TableEventHandler#reOpenAllRegions() should be enclosed in finally block
+    * [HBASE-10467] - Restore HTableDescriptor#isDeferredLogFlush()
+    * [HBASE-10470] - Import generates huge log file while importing large amounts of data
+    * [HBASE-10477] - Regression from HBASE-10337
+    * [HBASE-10506] - Fail-fast if client connection is lost before the real call be executed in RPC layer
 
-  BUG FIXES
-   HBASE-4970  Add a parameter so that keepAliveTime of Htable thread pool can be changed (gaojinchao)
-   HBASE-5060  HBase client is blocked forever (Jinchao)
-   HBASE-5009  Failure of creating split dir if it already exists prevents splits from happening further
-   HBASE-5041  Major compaction on non existing table does not throw error (Shrijeet)
-   HBASE-5327  Print a message when an invalid hbase.rootdir is passed (Jimmy Xiang)
+** Improvement
+    * [HBASE-2231] - Compaction events should be written to HLog
+    * [HBASE-3171] - Drop ROOT and instead store META location(s) directly in ZooKeeper
+    * [HBASE-4284] - document permissions that need to be set on importtsv output before completebulkload
+    * [HBASE-4360] - Maintain information on the time a RS went dead
+    * [HBASE-4654] - [replication] Add a check to make sure we don't replicate to ourselves
+    * [HBASE-5044] - Clarify solution for problem described on http://hbase.apache.org/book/trouble.mapreduce.html
+    * [HBASE-5577] - improve 'patch submission' section in HBase book
+    * [HBASE-5930] - Limits the amount of time an edit can live in the memstore.
+    * [HBASE-5945] - Reduce buffer copies in IPC server response path
+    * [HBASE-6295] - Possible performance improvement in client batch operations: presplit and send in background
+    * [HBASE-6580] - Deprecate HTablePool in favor of HConnection.getTable(...)
+    * [HBASE-6870] - HTable#coprocessorExec always scan the whole table 
+    * [HBASE-7181] - Merge documentation improvement
+    * [HBASE-7183] - print WARN message if hbase.replication.sizeOfLogQueue is too big
+    * [HBASE-7247] - Assignment performances decreased by 50% because of regionserver.OpenRegionHandler#tickleOpening
+    * [HBASE-7410] - [snapshots] add snapshot/clone/restore/export docs to ref guide
+    * [HBASE-7567] - [replication] Create an interface for replication peers
+    * [HBASE-7721] - Atomic multi-row mutations in META
+    * [HBASE-7745] - Import uses System.out.println instead of logging
+    * [HBASE-7790] - Refactor OpenRegionHandler so that the cleanup happens in one place - the finally block
+    * [HBASE-7803] - [REST] Support caching on scan
+    * [HBASE-7827] - Improve the speed of Hbase Thirft Batch mutation for deletes
+    * [HBASE-7843] - enable encapsulating compaction policy/compactor/store file manager interaction shennanigans
+    * [HBASE-7845] - optimize hfile index key
+    * [HBASE-7848] - Use ZK-based read/write lock to make flush-type snapshot robust against table enable/disable/alter
+    * [HBASE-7849] - Provide administrative limits around bulkloads of files into a single region
+    * [HBASE-7902] - deletes may be removed during minor compaction,  in non-standard compaction schemes [rename enums]
+    * [HBASE-7908] - Add jstack logs in hbase-common.sh when killing the server.
+    * [HBASE-7917] - Documentation for secure bulk load
+    * [HBASE-7930] - hbck should provide an option to fix .META. rows with empty REGIONINFO_QUALIFIER
+    * [HBASE-7952] - Remove update() and Improve ExplicitColumnTracker performance.
+    * [HBASE-7977] - Online merge should acquire table lock
+    * [HBASE-7979] - Adding some utility methods in org.apache.hadoop.hbase.util.Bytes
+    * [HBASE-8001] - Avoid unnecessary lazy seek
+    * [HBASE-8031] - Adopt goraci as an Integration test
+    * [HBASE-8059] - Enhance test-patch.sh so that patch can specify hadoop-2.0 as the default profile
+    * [HBASE-8063] - Filter HFiles based on first/last key
+    * [HBASE-8066] - Provide Admin.isTableAvailable() for a given table along with splitkeys
+    * [HBASE-8077] - Configure the job name in ImportTsv
+    * [HBASE-8080] - refactor default compactor to make its parts easier to reuse
+    * [HBASE-8117] - Remove redundant byte conversion methods from HConstants
+    * [HBASE-8137] - Add failed to open/close region state
+    * [HBASE-8148] - Allow IPC to bind on a specific address
+    * [HBASE-8152] - Avoid creating empty reference file when splitkey is outside the key range of a store file
+    * [HBASE-8205] - HBCK support for table locks
+    * [HBASE-8218] - Pass HTable as parameter to methods of AggregationClient
+    * [HBASE-8235] - Adding inmemory CF attribute to LoadTest and PerformanceEvaluation tool
+    * [HBASE-8240] - CompoundConfiguration should implement Iterable
+    * [HBASE-8271] - Book updates for changes to GC options in shell scripts
+    * [HBASE-8272] - make compaction checker frequency configurable per table/cf
+    * [HBASE-8284] - Allow String Offset(s) in ColumnPaginationFilter for bookmark based pagination
+    * [HBASE-8301] - Document for hbase.rpc.timeout
+    * [HBASE-8322] - Re-enable hbase checksums by default
+    * [HBASE-8339] - Make sure the StochasticLoadBalancer doesn't run a cost function when not needed
+    * [HBASE-8345] - Add all available resources in o.a.h.h.rest.RootResource and VersionResource to o.a.h.h.rest.client.RemoteAdmin
+    * [HBASE-8350] - enable ChaosMonkey to run commands as different users
+    * [HBASE-8367] - LoadIncrementalHFiles does not return an error code nor throw Exception when failures occur due to timeouts
+    * [HBASE-8383] - Support lib/*jar inside coprocessor jar
+    * [HBASE-8420] - Port  HBASE-6874  Implement prefetching for scanners from 0.89-fb
+    * [HBASE-8438] - Extend bin/hbase to print a "mapreduce classpath"
+    * [HBASE-8439] - [replication] Remove ReplicationZookeeper class
+    * [HBASE-8461] - Provide the ability to delete multiple snapshots through single command
+    * [HBASE-8465] - Auto-drop rollback snapshot for snapshot restore
+    * [HBASE-8470] - Data file used by TestReference should be excluded from Apache Rat check
+    * [HBASE-8471] - Server-side, remove convertion from pb type to client type before we call method
+    * [HBASE-8485] - Retry to open a HLog on more exceptions 
+    * [HBASE-8573] - Store last flushed sequence id for each store of region for Distributed Log Replay
+    * [HBASE-8599] - HLogs in ZK are not cleaned up when replication lag is minimal
+    * [HBASE-8608] - Do an edit of logs.. we log too much.
+    * [HBASE-8609] - Make the CopyTable support startRow, stopRow options
+    * [HBASE-8613] - Improve logging when BindException is received at startup time.
+    * [HBASE-8617] - Introducing a new config to disable writes during recovering 
+    * [HBASE-8618] - Master is providing dead RegionServer ServerName's to the balancer
+    * [HBASE-8625] - Dependency version upgrade
+    * [HBASE-8685] - [REST] Minor fix to XMLSchema.xsd and ScannerModel
+    * [HBASE-8690] - Reduce unnecessary getFileStatus hdfs calls in TTL hfile and hlog cleanners
+    * [HBASE-8692] - [AccessController] Restrict HTableDescriptor enumeration
+    * [HBASE-8702] - Make WALEditCodec pluggable
+    * [HBASE-8704] - Log the table name in ServerCallable.prepare.
+    * [HBASE-8737] - [replication] Change replication RPC to use cell blocks
+    * [HBASE-8740] - Generate unique table names in TestAccessController
+    * [HBASE-8754] - Log the client IP/port of the balancer invoker
+    * [HBASE-8755] - A new write thread model for HLog to improve the overall HBase write throughput
+    * [HBASE-8768] - Improve bulk load performance by moving key value construction from map phase to reduce phase.
+    * [HBASE-8778] - Region assigments scan table directory making them slow for huge tables
+    * [HBASE-8785] - revise zookeeper session timeout setting
+    * [HBASE-8809] - Include deletes in the scan (setRaw) method does not respect the time range or the filter
+    * [HBASE-8812] - Avoid a wide line on the HMaster webUI if we have many ZooKeeper servers
+    * [HBASE-8847] - Filter.transform() always applies unconditionally, even when combined in a FilterList
+    * [HBASE-8861] - Remove ReplicationState completely
+    * [HBASE-8884] - Pluggable RpcScheduler
+    * [HBASE-8915] - protobuf message style
+    * [HBASE-8918] - Removes redundant identifiers from interfaces
+    * [HBASE-8921] - [thrift2] Add GenericOptionsParser to Thrift 2 server
+    * [HBASE-8961] - Make TestReplicationQueueFailover less integration-y by splitting it up
+    * [HBASE-8986] - Replace hardcoded special file/dir names with the relative HConstant
+    * [HBASE-9033] - Add tracing to ReplicationSource and enable it in tests
+    * [HBASE-9077] - Make Web ui Fluid width
+    * [HBASE-9101] - Addendum to pluggable RpcScheduler
+    * [HBASE-9103] - Print lines that are longer than allowed in HadoopQA output.
+    * [HBASE-9121] - Update HTrace to 2.00 and add new example usage.
+    * [HBASE-9126] - Make HFile MIN VERSION as 2
+    * [HBASE-9208] - ReplicationLogCleaner slow at large scale
+    * [HBASE-9221] - Provide interface for getting a User in the client
+    * [HBASE-9243] - Add more useful statistics in the HFile tool
+    * [HBASE-9248] - Place holders for tags in 0.96 to accommodate tags in 0.98
+    * [HBASE-9273] - Consolidate isSystemTable checking
+    * [HBASE-9313] - NamespaceJanitor is spammy when the namespace table moves
+    * [HBASE-9314] - Dropping a table always prints a TableInfoMissingException in the master log
+    * [HBASE-9330] - Refactor PE to create HTable the correct way
+    * [HBASE-9333] - hbase.hconnection.threads.max should not be configurable else you get RejectedExecutionException
+    * [HBASE-9343] - Implement stateless scanner for Stargate
+    * [HBASE-9347] - Support for enabling servlet filters for REST service
+    * [HBASE-9369] - Add support for 1- and 2-byte integers in OrderedBytes and provide types
+    * [HBASE-9371] - Eliminate log spam when tailing files
+    * [HBASE-9373] - [replication] data loss because replication doesn't expect partial reads
+    * [HBASE-9385] - Log HBase Master command line arguments on startup
+    * [HBASE-9438] - Enhance hbase shell un/assign to take encoded region name
+    * [HBASE-9443] - ReplicationProtbufUtil.toHLogEntries needs to be either removed or deprecated
+    * [HBASE-9467] - write can be totally blocked temporarily by a write-heavy region
+    * [HBASE-9488] - Improve performance for small scan
+    * [HBASE-9494] - Cleanup inconsistencies in protobuf message and rpc names
+    * [HBASE-9518] - getFakedKey() improvement
+    * [HBASE-9520] - shortcut split asap while requested splitPoint equals with region's startKey
+    * [HBASE-9524] - Multi row get does not return any results even if any one of the rows specified in the query is missing and improve exception handling
+    * [HBASE-9560] - bin/hbase clean --cleanAll should not skip data cleaning if in local mode
+    * [HBASE-9570] - With AccessDeniedException, HBase shell would be better to just display the error message to be user friendly
+    * [HBASE-9594] - Add reference documentation on changes made by HBASE-7634 (Replication handling of peer cluster changes)
+    * [HBASE-9605] - Allow AggregationClient to skip specifying column family for row count aggregate
+    * [HBASE-9606] - Apply small scan to meta scan where rowLimit is low
+    * [HBASE-9654] - Optimize HStore#getRowKeyAtOrBefore() when exact match is found
+    * [HBASE-9656] - Remove decimal places from Requests Per Second stats
+    * [HBASE-9661] - Consistent log severity level guards and statements 
+    * [HBASE-9667] - NullOutputStream removed from Guava 15
+    * [HBASE-9686] - More temporary test files are being left in /tmp/hbase-<user>
+    * [HBASE-9689] - Support using OperationAttributes through shell script
+    * [HBASE-9701] - Make SLEEP_TIME in IntegrationTestMTTR configurable
+    * [HBASE-9703] - DistributedHBaseCluster should not throw exceptions, but do a best effort restore
+    * [HBASE-9714] - add scan logging to IntegrationTestLoadAndVerify
+    * [HBASE-9716] - LoadTestTool should provide default min and max settings to the data generator
+    * [HBASE-9744] - Set io.serializations correctly in HFileOutputFormat.configureIncrementalLoad
+    * [HBASE-9749] - Custom threadpool for Coprocessor obtained HTables
+    * [HBASE-9750] - Add retries around Action server stop/start
+    * [HBASE-9771] - [WebUI] Humanize store and blockcache statistics on RS
+    * [HBASE-9772] - Normalize new client default values
+    * [HBASE-9784] - Switch to Hadoop-2.2 
+    * [HBASE-9831] - 'hbasefsck.numthreads' property isn't passed to hbck via cmdline -D option
+    * [HBASE-9832] - Add MR support for Visibility labels
+    * [HBASE-9855] - evictBlocksByHfileName improvement for bucket cache
+    * [HBASE-9866] - Support the mode where REST server authorizes proxy users
+    * [HBASE-9867] - Save on array copies with a subclass of LiteralByteString
+    * [HBASE-9882] - Support Append Operation with thrift
+    * [HBASE-9884] - Add Thrift and REST support for Visibility Labels
+    * [HBASE-9892] - Add info port to ServerName to support multi instances in a node
+    * [HBASE-9924] - Avoid potential filename conflict in region_mover.rb
+    * [HBASE-9931] - Optional setBatch for CopyTable to copy large rows in batches
+    * [HBASE-9963] - Remove the ReentrantReadWriteLock in the MemStore
+    * [HBASE-9998] - Fix javadoc warnings induced by commits
+    * [HBASE-10001] - Add a coprocessor to help testing the performances without taking into account the i/o
+    * [HBASE-10007] - PerformanceEvaluation: Add sampling and latency collection to randomRead test
+    * [HBASE-10010] - eliminate the put latency spike on the new log file beginning
+    * [HBASE-10020] - Add maven compile-protobuf profile
+    * [HBASE-10021] - Fix the REC_CATCH_EXCEPTION warning under hbase-thrift
+    * [HBASE-10022] - Fix the HE_EQUALS_USE_HASHCODE warning under hbase-hadoop1-compat
+    * [HBASE-10023] - Fix/Suppress all the 10 findbug warnings under hbase-common
+    * [HBASE-10024] - Add an interface to create put with immutable arrays
+    * [HBASE-10048] - Add hlog number metric in regionserver
+    * [HBASE-10049] - Small improvments in region_mover.rb
+    * [HBASE-10062] - Reconsider storing plaintext length in the encrypted block header
+    * [HBASE-10065] - Stronger validation of key unwrapping
+    * [HBASE-10066] - Use ByteArrayOutputStream#writeTo where appropriate
+    * [HBASE-10116] - SlabCache metrics improvements
+    * [HBASE-10157] - Provide CP hook post log replay
+    * [HBASE-10164] - Allow heapsize of different units to be passed as HBASE_HEAPSIZE
+    * [HBASE-10173] - Need HFile version check in security coprocessors
+    * [HBASE-10175] - 2-thread ChaosMonkey steps on its own toes
+    * [HBASE-10213] - Add read log size per second metrics for replication source
+    * [HBASE-10228] - Support setCellVisibility and setAuthorizations in Shell
+    * [HBASE-10229] - Support OperationAttributes in Increment and Append in Shell
+    * [HBASE-10239] - Improve determinism and debugability of TestAccessController
+    * [HBASE-10252] - Don't write back to WAL/memstore when Increment amount is zero (mostly for query rather than update intention)
+    * [HBASE-10263] - make LruBlockCache single/multi/in-memory ratio user-configurable and provide preemptive mode for in-memory type block
+    * [HBASE-10323] - Auto detect data block encoding in HFileOutputFormat
+    * [HBASE-10324] - refactor deferred-log-flush/Durability related interface/code/naming to align with changed semantic of the new write thread model
+    * [HBASE-10331] - Insure security tests use SecureTestUtil methods for grants
+    * [HBASE-10344] - Improve write performance by ignoring sync to hdfs when an asyncer's writes have been synced by other asyncer
+    * [HBASE-10346] - Add Documentation for stateless scanner
+    * [HBASE-10368] - Add Mutation.setWriteToWAL() back to 0.98
+    * [HBASE-10395] - endTime won't be set in VerifyReplication if startTime is not set
+    * [HBASE-10423] - Report back the message of split or rollback failure to the master
+    * [HBASE-10430] - Support compressTags in shell for enabling tag encoding
+    * [HBASE-10457] - Print corrupted file information in SnapshotInfo tool without -file option
 
-Release 0.90.5 - Released
+** New Feature
+    * [HBASE-1936] - ClassLoader that loads from hdfs; useful adding filters to classpath without having to restart services
+    * [HBASE-4210] - Allow coprocessor to interact with batches per region sent from a client
+    * [HBASE-4811] - Support reverse Scan
+    * [HBASE-6104] - Require EXEC permission to call coprocessor endpoints
+    * [HBASE-6222] - Add per-KeyValue Security
+    * [HBASE-7006] - [MTTR] Improve Region Server Recovery Time - Distributed Log Replay
+    * [HBASE-7244] - Provide a command or argument to startup, that formats znodes if provided
+    * [HBASE-7403] - Online Merge
+    * [HBASE-7415] - [snapshots] Add task information to snapshot operation
+    * [HBASE-7525] - A canary monitoring program specifically for regionserver
+    * [HBASE-7544] - Transparent table/CF encryption
+    * [HBASE-7667] - Support stripe compaction
+    * [HBASE-7826] - Improve Hbase Thrift v1 to return results in sorted order
+    * [HBASE-7842] - Add compaction policy that explores more storefile groups
+    * [HBASE-7875] - introduce a compaction switch in HBase Shell
+    * [HBASE-8163] - MemStoreChunkPool: An improvement for JAVA GC when using MSLAB
+    * [HBASE-8369] - MapReduce over snapshot files
+    * [HBASE-8372] - Provide mutability to CompoundConfiguration
+    * [HBASE-8415] - DisabledRegionSplitPolicy
+    * [HBASE-8496] - Implement tags and the internals of how a tag should look like
+    * [HBASE-8504] - HTable.getRegionsInRange() should provide a non-cached API
+    * [HBASE-8663] - a HBase Shell command to list the tables replicated from current cluster
+    * [HBASE-8753] - Provide new delete flag which can delete all cells under a column-family which have designated timestamp
+    * [HBASE-9047] - Tool to handle finishing replication when the cluster is offline
+    * [HBASE-9299] - Generate the protobuf classes with hadoop-maven-plugin
+    * [HBASE-9630] - Add thread which detects JVM pauses like HADOOP's
+    * [HBASE-9631] - add murmur3 hash
+    * [HBASE-9985] - Add HBase shell command to start/stop tracing
+    * [HBASE-10119] - Allow HBase coprocessors to clean up when they fail
+    * [HBASE-10416] - Improvements to the import flow
 
-  BUG FIXES
-   HBASE-4160  HBase shell move and online may be unusable if region name
-               or server includes binary-encoded data (Jonathan Hsieh)
-   HBASE-4168  A client continues to try and connect to a powered down
-               regionserver (Anirudh Todi)
-   HBASE-4196  TableRecordReader may skip first row of region (Ming Ma)
-   HBASE-4170  createTable java doc needs to be improved (Mubarak Seyed)
-   HBASE-4144  RS does not abort if the initialization of RS fails
-               (ramkrishna.s.vasudevan)
-   HBASE-4148  HFileOutputFormat doesn't fill in TIMERANGE_KEY metadata
-               (Jonathan Hsieh)
-   HBASE-4159  HBaseServer - IPC Reader threads are not daemons (Douglas
-               Campbell)
-   HBASE-4095  Hlog may not be rolled in a long time if checkLowReplication's
-               request of LogRoll is blocked (Jieshan Bean)
-   HBASE-4253  TestScannerTimeOut.test3686a and TestHTablePool.
-               testReturnDifferentTable() failure because of using new
-               HTable(tablename) (ramkrishna.s.vasudevan)
-   HBASE-4124  ZK restarted while a region is being assigned, new active HM
-               re-assigns it but the RS warns 'already online on this server'
-               (Gaojinchao)
-   HBASE-4294  HLogSplitter sleeps with 1-second granularity (todd)
-   HBASE-4270  IOE ignored during flush-on-close causes dataloss
-   HBASE-4180  HBase should check the isSecurityEnabled flag before login
-   HBASE-4325  Improve error message when using STARTROW for meta scans
-               (Jonathan Hsieh)
-   HBASE-4238  CatalogJanitor can clear a daughter that split before
-               processing its parent
-   HBASE-4445  Not passing --config when checking if distributed mode or not
-   HBASE-4453  TestReplication failing up on builds.a.o because already
-               running zk with new format root servername
-   HBASE-4387  Error while syncing: DFSOutputStream is closed
-               (Lars Hofhansl)
-   HBASE-4295  rowcounter does not return the correct number of rows in
-               certain circumstances (David Revell)
-   HBASE-4515  User.getCurrent() can fail to initialize the current user
-   HBASE-4473  NPE when executors are down but events are still coming in
-   HBASE-4537  TestUser imports breaking build against secure Hadoop
-   HBASE-4501  [replication] Shutting down a stream leaves recovered
-               sources running
-   HBASE-4563  When error occurs in this.parent.close(false) of split,
-               the split region cannot write or read (bluedavy via Lars H)
-   HBASE-4570. Fix a race condition that could cause inconsistent results
-               from scans during concurrent writes. (todd and Jonathan Jsieh
-               via todd)
-   HBASE-4562  When split doing offlineParentInMeta encounters error, it'll
-               cause data loss (bluedavy via Lars H)
-   HBASE-4800  Result.compareResults is incorrect (James Taylor and Lars H)
-   HBASE-4848  TestScanner failing because hostname can't be null
-   HBASE-4862  Splitting hlog and opening region concurrently may cause data loss
-               (Chunhui Shen)
-   HBASE-4773  HBaseAdmin may leak ZooKeeper connections (Xufeng)
+** Task
+    * [HBASE-7641] - Port HBASE-6669 'Add BigDecimalColumnInterpreter for doing aggregations using AggregationClient' to trunk
+    * [HBASE-7898] - Serializing Cells over RPC
+    * [HBASE-7994] - Disable unit tests under hbase-examples; they fail too often up on jenkins
+    * [HBASE-8054] - HBASE-7797 Use consistent package name dregs
+    * [HBASE-8090] - Versioning site; part two, publish 0.94 site and add link from main site
+    * [HBASE-8172] - Fix ./bin/*.rb scripts or remove them
+    * [HBASE-8219] - Align Offline Merge with Online Merge
+    * [HBASE-8224] - Publish hbase build against h1 and h2 adding '-hadoop1' or '-hadoop2' to version string
+    * [HBASE-8286] - Move site back up out of hbase-assembly; bad idea
+    * [HBASE-8296] - Add svn ignores to hbase-assembly
+    * [HBASE-8395] - Remove TestFromClientSide.testPoolBehavior
+    * [HBASE-8444] - Acknowledge that 0.95+ requires 1.0.3 hadoop at least.
+    * [HBASE-8574] - Add how to rename a table in the docbook 
+    * [HBASE-8591] - Doc Improvement: Replication blog
+    * [HBASE-8792] - Organize EventType Java Docs
+    * [HBASE-8796] - Add mention of new builds mailing list to site
+    * [HBASE-8829] - Improve failed TestMetaScanner assert message so can see where/why failure
+    * [HBASE-8960] - TestDistributedLogSplitting.testLogReplayForDisablingTable fails sometimes
+    * [HBASE-8962] - Clean up code and remove regular log splitting
+    * [HBASE-8978] - Restore TestLogRollAbort upon review
+    * [HBASE-9011] - Add timeouts to possibly silently failing tests
+    * [HBASE-9111] - Put back TestReplicationKill* except for the MasterRSCompressed one
+    * [HBASE-9135] - Upgrade hadoop 1 version to 1.2.1 which is stable
+    * [HBASE-9153] - Introduce/update a script to generate jdiff reports
+    * [HBASE-9193] - Make what Chaos monkey actions run configurable per test.
+    * [HBASE-9194] - Break HMaster metrics into multiple contexts
+    * [HBASE-9229] - Fix release warning
+    * [HBASE-9258] - HConnectionManager#getKeepAliveZooKeeperWatcher() should be public
+    * [HBASE-9295] - Allow test-patch.sh to detect TreeMap keyed by byte[] which doesn't use proper comparator
+    * [HBASE-9336] - Two css files raise release audit warning
+    * [HBASE-9341] - Document hbase.hstore.compaction.kv.max
+    * [HBASE-9342] - WebUI fixes after bootstrap 3.0 update
+    * [HBASE-9370] - Add logging to Schema change Chaos actions.
+    * [HBASE-9401] - Add getQualifierBufferShallowCopy to Cell Utility.
+    * [HBASE-9495] - Sanity check visiblity and audience for hbase-client and hbase-common apis.
+    * [HBASE-9505] - Enable replication by default
+    * [HBASE-9575] - Add script to automate much of the rc-making process
+    * [HBASE-9583] - add document for getShortMidpointKey
+    * [HBASE-9693] - Fix javadoc warnings
+    * [HBASE-9757] - Reenable fast region move in SlowDeterministicMonkey
+    * [HBASE-9758] - Log missing rows and their regions if ITBLL fails
+    * [HBASE-9837] - Forward port HBASE-9080 'Retain assignment should be used when re-enabling table(s)'
+    * [HBASE-9920] - Lower OK_FINDBUGS_WARNINGS in test-patch.properties
+    * [HBASE-9921] - stripe compaction - findbugs and javadoc issues, some improvements
+    * [HBASE-9954] - Incorporate HTTPS support for HBase
+    * [HBASE-9955] - Make hadoop2 the default and deprecate hadoop1
+    * [HBASE-9991] - Enhance test-patch.sh with post back of snippet of compilation error if any is detected
+    * [HBASE-9994] - ZeroCopyLiteralByteString.wrap() should be used in place of ByteString.copyFrom()
+    * [HBASE-10031] - Add a section on the transparent CF encryption feature to the manual
+    * [HBASE-10134] - Fix findbug warning in VisibilityController
+    * [HBASE-10159] - Replaced deprecated interface Closeable
+    * [HBASE-10183] - Need enforce a reserved range of system tag types
+    * [HBASE-10364] - Allow configuration option for parent znode in LoadTestTool
+    * [HBASE-10473] - Add utility for adorning http Context
 
-  IMPROVEMENT
-   HBASE-4205  Enhance HTable javadoc (Eric Charles)
-   HBASE-4222  Make HLog more resilient to write pipeline failures
-   HBASE-4293  More verbose logging in ServerShutdownHandler for meta/root
-               cases (todd)
-   HBASE-4276  AssignmentManager debug logs should be at INFO level for
-               META/ROOT regions (todd)
-   HBASE-4323  Add debug logging when AssignmentManager can't make a plan
-               for a region (todd)
-   HBASE-4313  Refactor TestHBaseFsck to make adding individual hbck tests
-               easier (Jonathan Hsieh)
-   HBASE-4272. Add -metaonly flag to hbck feature to only inspect and try
-               to repair META and ROOT. (todd)
-   HBASE-4321. Add a more comprehensive region split calculator for future use
-               in hbck. (Jonathan Hsieh)
-   HBASE-4384  Hard to tell what causes failure in CloseRegionHandler#getCurrentVersion
-               (Harsh J)
-   HBASE-4375  [hbck] Add region coverage visualization to hbck
-               (Jonathan Hsieh)
-   HBASE-4506  [hbck] Allow HBaseFsck to be instantiated without connecting
-               (Jonathan Hsieh)
-   HBASE-4509  [hbck] Improve region map output
-               (Jonathan Hsieh)
-   HBASE-4806  Fix logging message in HbaseObjectWritable
-               (Jonathan Hsieh via todd)
+** Test
+    * [HBASE-6715] - TestFromClientSide.testCacheOnWriteEvictOnClose is flaky
+    * [HBASE-7718] - TestClassLoading needs to consider runtime classpath in buildCoprocessorJar
+    * [HBASE-7770] - minor integration test framework fixes
+    * [HBASE-7960] - cleanup TestDir in TestHalfStoreFileReader
+    * [HBASE-8106] - Test to check replication log znodes move is done correctly
+    * [HBASE-8260] - create generic integration test for trunk and 94 that is more deterministic, can be run for longer and is less aggressive
+    * [HBASE-8306] - Enhance TestJoinedScanners with ability to specify various parameters
+    * [HBASE-8308] - Lower the number of expected regions in TestTableLockManager#testTableReadLock
+    * [HBASE-8320] - test-patch.sh should post back compilation error against hadoop 2.0
+    * [HBASE-8333] - TestTableLockManager#testDelete may occasionally fail due to lack of synchronization between test and handler thread
+    * [HBASE-8520] - TestIOFencing fails intermittently due to compaction kicking in too soon
+    * [HBASE-8534] - Fix coverage for org.apache.hadoop.hbase.mapreduce
+    * [HBASE-8535] - Test for zk leak does not account for unsynchronized access to zk watcher
+    * [HBASE-8543] - fix coverage org.apache.hadoop.hbase.rest.client
+    * [HBASE-8552] - fix coverage org.apache.hadoop.hbase.rest.filter 
+    * [HBASE-8556] - fix coverage  org.apache.hadoop.hbase.metrics.histogram
+    * [HBASE-8559] - increase unit-test coverage of package org.apache.hadoop.hbase.coprocessor
+    * [HBASE-8569] - Improve coverage in package org.apache.hadoop.hbase.security
+    * [HBASE-8575] - TestDistributedLogSplitting#testMarkRegionsRecoveringInZK fails intermittently due to lack of online region
+    * [HBASE-8611] - Improve test coverage in pkg org.apache.hadoop.hbase.mapred
+    * [HBASE-8646] - Intermittent TestIOFencing#testFencingAroundCompaction failure due to region getting stuck in compaction
+    * [HBASE-8668] - TestHLogSplit.generateHLog() does not use local variables for entries
+    * [HBASE-8816] - Add support of loading multiple tables into LoadTestTool
+    * [HBASE-8845] - Add integration test for split, online merge, and compaction
+    * [HBASE-8857] - TestGet#testDynamicFilter fails sometimes
+    * [HBASE-8860] - TestTableLockManager#testTableReadLock times out sometimes
+    * [HBASE-8907] - TestIOFencing.testFencingAroundCompaction fails sometimes
+    * [HBASE-8928] - Make ChaosMonkey & LoadTest tools extensible, to allow addition of more actions and policies.
+    * [HBASE-8934] - Fix bunch of flaky tests
+    * [HBASE-8941] - TestAccessController.testGlobalPermissionList failed with IndexOutOfBoundsException
+    * [HBASE-8954] - TestSplitLogWorker#testPreemptTask failed
+    * [HBASE-8984] - Test online snapshots with online merge
+    * [HBASE-8994] - Adding log to chaos monkey actions to show what're performed
+    * [HBASE-9017] - Consolidate ChaosMonkey's random objects
+    * [HBASE-9020] - Make hbase-it HBASE_HOME configurable
+    * [HBASE-9068] - Make hadoop 2 the default precommit for trunk
+    * [HBASE-9090] - cleanup snapshot tests setup/teardown code 
+    * [HBASE-9106] - Do not fail TestAcidGuarantees for exceptions on table flush
+    * [HBASE-9123] - Filter protobuf generated code from long line warning
+    * [HBASE-9155] - Enhance LoadTestTool to support updates
+    * [HBASE-9160] - TestNamespaceUpgrade fails on hadoop 2.1 due to existence of .snapshot directory in tar ball
+    * [HBASE-9161] - TestAssignmentManagerOnCluster.testSSHWhenDisablingTableRegionsInOpeningOrPendingOpenState could hang
+    * [HBASE-9217] - TestReplicationSmallTests#testDisableEnable fails intermittently
+    * [HBASE-9225] - Enable TRACE logging in TestReplicationBase
+    * [HBASE-9239] - TestStoreFileBlockCacheSummary#testBlockCacheSummary occasionally fails
+    * [HBASE-9287] - TestCatalogTracker depends on the execution order
+    * [HBASE-9315] - TestLruBlockCache.testBackgroundEvictionThread fails on suse
+    * [HBASE-9376] - TestDistributedLogSplitting creates a MiniCluster rooted at ~/hbase
+    * [HBASE-9441] - Intermittent TestRegionPlacement#testRegionPlacement failure
+    * [HBASE-9447] - TestHBaseFsck could hang sometime
+    * [HBASE-9458] - Intermittent TestFlushSnapshotFromClient#testTakeSnapshotAfterMerge failure
+    * [HBASE-9515] - Intermittent TestZKSecretWatcher#testKeyUpdate failure
+    * [HBASE-9544] - Remove TestAdmin#testIsEnabledOnNonexistentTable()
+    * [HBASE-9655] - IntegrationTestMTTR can loop forever on improperly configured clusters
+    * [HBASE-9664] - ArrayIndexOutOfBoundsException may be thrown in TestZKSecretWatcher
+    * [HBASE-9692] - TestOrderedBytes doesn't display the arrays correctly
+    * [HBASE-9720] - TestSplitTransactionOnCluster#testShutdownFixupWhenDaughterHasSplit occasionally times out
+    * [HBASE-9814] - TestRegionServerCoprocessorExceptionWithRemove mentions master in javadoc
+    * [HBASE-9827] - Intermittent TestLogRollingNoCluster#testContendedLogRolling failure
+    * [HBASE-9836] - Intermittent TestRegionObserverScannerOpenHook#testRegionObserverCompactionTimeStacking failure
+    * [HBASE-9851] - TestHBaseFsck.testQuarantineMissingHFile is flaky
+    * [HBASE-9860] - Intermittent TestHBaseFsck#testMissingRegionInfoQualifier failure due to NullPointerException
+    * [HBASE-9928] - TestHRegion should clean up test-data directory upon completion
+    * [HBASE-10008] - TestNamespaceCommands is flakey on jenkins
+    * [HBASE-10058] - Test for HBASE-9915 (avoid reading index blocks)
+    * [HBASE-10059] - TestSplitLogWorker#testMultipleTasks fails occasionally
+    * [HBASE-10130] - TestSplitLogManager#testTaskResigned fails sometimes
+    * [HBASE-10180] - TestByteBufferIOEngine#testByteBufferIOEngine occasionally fails
+    * [HBASE-10189] - Intermittent TestReplicationSyncUpTool failure
+    * [HBASE-10301] - TestAssignmentManagerOnCluster#testOpenCloseRacing fails intermittently
+    * [HBASE-10394] - Test for Replication with tags
+    * [HBASE-10406] - Column family option is not effective in IntegrationTestSendTraceRequests
+    * [HBASE-10408] - Intermittent TestDistributedLogSplitting#testLogReplayForDisablingTable failure
+    * [HBASE-10440] - integration tests fail due to nonce collisions
+    * [HBASE-10465] - TestZKPermissionsWatcher.testPermissionsWatcher fails sometimes
+    * [HBASE-10475] - TestRegionServerCoprocessorExceptionWithAbort may timeout due to concurrent lease removal
+    * [HBASE-10480] - TestLogRollPeriod#testWithEdits may fail due to insufficient waiting
 
-Release 0.90.4 - August 10, 2011
+** Umbrella
+    * [HBASE-8629] - More log edits: we log too much
+    * [HBASE-9945] - Coprocessor loading and execution improvements
 
-  BUG FIXES
-   HBASE-3878  Hbase client throws NoSuchElementException (Ted Yu)
-   HBASE-3881  Add disable balancer in graceful_stop.sh script
-   HBASE-3895  Fix order of parameters after HBASE-1511
-   HBASE-3874  ServerShutdownHandler fails on NPE if a plan has a random
-               region assignment
-   HBASE-3902  Add Bytes.toBigDecimal and Bytes.toBytes(BigDecimal)
-               (Vaibhav Puranik)
-   HBASE-3820  Splitlog() executed while the namenode was in safemode may
-               cause data-loss (Jieshan Bean)
-   HBASE-3905  HBaseAdmin.createTableAsync() should check for invalid split
-               keys (Ted Yu)
-   HBASE-3908  TableSplit not implementing "hashCode" problem (Daniel Iancu)
-   HBASE-3915  Binary row keys in hbck and other miscellaneous binary key
-               display issues
-   HBASE-3914  ROOT region appeared in two regionserver's onlineRegions at
-               the same time (Jieshan Bean)
-   HBASE-3934  MemStoreFlusher.getMemStoreLimit() doesn't honor defaultLimit
-               (Ted Yu)
-   HBASE-3946  The splitted region can be online again while the standby
-               hmaster becomes the active one (Jieshan Bean)
-   HBASE-3916  Fix the default bind address of ThriftServer to be wildcard
-               instead of localhost. (Li Pi)
-   HBASE-3985  Same Region could be picked out twice in LoadBalance
-               (Jieshan Bean)
-   HBASE-3987  Fix a NullPointerException on a failure to load Bloom filter data
-               (Mikhail Bautin)
-   HBASE-3948  Improve split/compact result page for RegionServer status page
-               (Li Pi)
-   HBASE-3988  Infinite loop for secondary master (Liyin Tang)
-   HBASE-3995  HBASE-3946 broke TestMasterFailover
-   HBASE-2077  NullPointerException with an open scanner that expired causing
-               an immediate region server shutdown -- part 2.
-   HBASE-4005  close_region bugs
-   HBASE-4028  Hmaster crashes caused by splitting log.
-               (gaojinchao via Ted Yu)
-   HBASE-4035  Fix local-master-backup.sh - parameter order wrong
-               (Lars George via Ted Yu)
-   HBASE-4020  "testWritesWhileGetting" unit test needs to be fixed.
-               (Vandana Ayyalasomayajula via Ted Yu)
-   HBASE-3984  CT.verifyRegionLocation isn't doing a very good check,
-               can delay cluster recovery
-   HBASE-4045  [replication] NPE in ReplicationSource when ZK is gone
-   HBASE-4034  HRegionServer should be stopped even if no META regions
-               are hosted by the HRegionServer (Akash Ashok)
-   HBASE-4033  The shutdown RegionServer could be added to
-               AssignmentManager.servers again (Jieshan Bean)
-   HBASE-4088  npes in server shutdown
-   HBASE-3872  Hole in split transaction rollback; edits to .META. need
-               to be rolled back even if it seems like they didn't make it
-   HBASE-4101  Regionserver Deadlock (ramkrishna.s.vasudevan)
-   HBASE-4115  HBase shell assign and unassign unusable if region name
-               includes binary-encoded data (Ryan Brush)
-   HBASE-4126  Make timeoutmonitor timeout after 30 minutes instead of 3
-   HBASE-4129  HBASE-3872 added a warn message 'CatalogJanitor: Daughter regiondir
-               does not exist' that is triggered though its often legit that daughter
-               is not present
-
-  IMPROVEMENT
-   HBASE-3882  hbase-config.sh needs to be updated so it can auto-detects the
-               sun jre provided by RHEL6 (Roman Shaposhnik)
-   HBASE-3920  HLog hbase.regionserver.flushlogentries no longer supported
-               (Dave Latham)
-   HBASE-3919  More places output binary data to text (Dave Latham)
-   HBASE-3873  HBase IRB shell: Don't pretty-print the output when stdout
-               isn't a TTY (Benoît Sigoure)
-   HBASE-3969  Outdated data can not be cleaned in time (Zhou Shuaifeng)
-   HBASE-3968  HLog Pretty Printer (Riley Patterson)
-
-Release 0.90.3 - May 19th, 2011
-
-  BUG FIXES
-   HBASE-3746  Clean up CompressionTest to not directly reference
-               DistributedFileSystem (todd)
-   HBASE-3734  HBaseAdmin creates new configurations in getCatalogTracker
-   HBASE-3756  Can't move META or ROOT from shell
-   HBASE-3740  hbck doesn't reset the number of errors when retrying
-   HBASE-3744  createTable blocks until all regions are out of transition
-               (Ted Yu via Stack)
-   HBASE-3750  HTablePool.putTable() should call releaseHTableInterface()
-               for discarded tables (Ted Yu via garyh)
-   HBASE-3755  Catch zk's ConnectionLossException and augment error
-               message with more help
-   HBASE-3722  A lot of data is lost when name node crashed (gaojinchao)
-   HBASE-3771  All jsp pages don't clean their HBA
-   HBASE-3685  when multiple columns are combined with TimestampFilter, only
-               one column is returned (Jerry Chen)
-   HBASE-3708  createAndFailSilent is not so silent; leaves lots of logging
-               in ensemble logs (Dmitriy Ryaboy)
-   HBASE-3783  hbase-0.90.2.jar exists in hbase root and in 'lib/'
-   HBASE-3539  Improve shell help to reflect all possible options
-               (Harsh J Chouraria)
-   HBASE-3817  HBase Shell has an issue accepting FILTER for the 'scan' command.
-               (Harsh J Chouraria)
-   HBASE-3634  Fix JavaDoc for put(List<Put> puts) in HTableInterface
-               (Harsh J Chouraria)
-   HBASE-3749  Master can't exit when open port failed (gaojinchao)
-   HBASE-3794  TestRpcMetrics fails on machine where region server is running
-               (Alex Newman)
-   HBASE-3741  Make HRegionServer aware of the regions it's opening/closing
-   HBASE-3597  ageOfLastAppliedOp should update after cluster replication
-               failures
-   HBASE-3821  "NOT flushing memstore for region" keep on printing for half
-               an hour (zhoushuaifeng)
-
-  IMPROVEMENTS
-   HBASE-3747  ReplicationSource should differanciate remote and local exceptions
-   HBASE-3652  Speed up tests by lowering some sleeps
-   HBASE-3767  Improve how HTable handles threads used for multi actions
-   HBASE-3795  Remove the "Cache hit for row" message
-   HBASE-3580  Remove RS from DeadServer when new instance checks in
-   HBASE-2470  Add Scan.setTimeRange() support in Shell (Harsh J Chouraria)
-   HBASE-3805  Log RegionState that are processed too late in the master
-   HBASE-3695  Some improvements to Hbck to test the entire region chain in
-                Meta and provide better error reporting (Marc Limotte)
-   HBASE-3813  Change RPC callQueue size from 'handlerCount *
-               MAX_QUEUE_SIZE_PER_HANDLER;'
-   HBASE-3860  HLog shouldn't create a new HBC when rolling
-
-  TASKS
-   HBASE-3748  Add rolling of thrift/rest daemons to graceful_stop.sh script
-   HBASE-3846  Set RIT timeout higher
-
-Release 0.90.2 - 20110408
-  
-  BUG FIXES
-   HBASE-3545  Possible liveness issue with MasterServerAddress in
-               HRegionServer getMaster (Greg Bowyer via Stack)
-   HBASE-3548  Fix type in documentation of pseudo distributed mode
-   HBASE-3553  HTable ThreadPoolExecutor does not properly initialize
-               for hbase.htable.threads.max threads
-               (Himanshu Vashishtha via garyh)
-   HBASE-3566  writeToWAL is not serialized for increment operation
-   HBASE-3576  MasterAddressTracker is registered to ZooKeeperWatcher twice
-   HBASE-3561  OPTS arguments are duplicated
-   HBASE-3572  memstore lab can leave half inited data structs (bad!)
-   HBASE-3589  test jar should not include mapred-queues.xml and
-               log4j.properties
-   HBASE-3593  DemoClient.cpp is outdated
-   HBASE-3591  completebulkload doesn't honor generic -D options
-   HBASE-3594  Rest server fails because of missing asm jar
-   HBASE-3582  Allow HMaster and HRegionServer to login from keytab
-               when on secure Hadoop
-   HBASE-3608  MemstoreFlusher error message doesnt include exception!
-   HBASE-1960  Master should wait for DFS to come up when creating
-               hbase.version; use alternate strategy for waiting for DNs
-   HBASE-3612  HBaseAdmin::isTableAvailable returns true when the table does
-               not exit
-   HBASE-3626  Update instructions in thrift demo files (Moaz Reyad via Stack)
-   HBASE-3633  ZKUtil::createSetData should only create a node when it
-               nonexists (Guanpeng Xu via Stack)
-   HBASE-3636  a bug about deciding whether this key is a new key for the ROWCOL
-               bloomfilter (Liyin Tang via Stack)
-   HBASE-3639  FSUtils.getRootDir should qualify path
-   HBASE-3648  [replication] failover is sloppy with znodes
-   HBASE-3613  NPE in MemStoreFlusher
-   HBASE-3650  HBA.delete can return too fast
-   HBASE-3659  Fix TestHLog to pass on newer versions of Hadoop
-   HBASE-3595  get_counter broken in shell
-   HBASE-3664  [replication] Adding a slave when there's none may kill the cluster
-   HBASE-3671  Split report before we finish parent region open; workaround
-               till 0.92; Race between split and OPENED processing
-   HBASE-3674  Treat ChecksumException as we would a ParseException splitting
-               logs; else we replay split on every restart
-   HBASE-3621  The timeout handler in AssignmentManager does an RPC while
-               holding lock on RIT; a big no-no (Ted Yu via Stack)
-   HBASE-3575  Update rename table script
-   HBASE-3687  Bulk assign on startup should handle a ServerNotRunningException
-   HBASE-3617  NoRouteToHostException during balancing will cause Master abort
-               (Ted Yu via Stack)
-   HBASE-3668  CatalogTracker.waitForMeta can wait forever and totally stall a RS
-   HBASE-3627  NPE in EventHandler when region already reassigned
-   HBASE-3660  HMaster will exit when starting with stale data in cached locations
-               such as -ROOT- or .META.
-   HBASE-3654  Weird blocking between getOnlineRegion and createRegionLoad
-               (Subbu M Iyer via Stack)
-   HBASE-3666  TestScannerTimeout fails occasionally
-   HBASE-3497  TableMapReduceUtil.initTableReducerJob broken due to setConf 
-               method in TableOutputFormat
-   HBASE-3686  ClientScanner skips too many rows on recovery if using scanner
-               caching (Sean Sechrist via Stack)
-
-  IMPROVEMENTS
-   HBASE-3542  MultiGet methods in Thrift
-   HBASE-3586  Improve the selection of regions to balance (Ted Yu via Andrew
-               Purtell)  
-   HBASE-3603  Remove -XX:+HeapDumpOnOutOfMemoryError autodump of heap option
-               on OOME
-   HBASE-3285  Hlog recovery takes too much time
-   HBASE-3623  Allow non-XML representable separator characters in the ImportTSV tool
-               (Harsh J Chouraria via Stack)
-   HBASE-3620  Make HBCK utility faster
-   HBASE-3625  improve/fix support excluding Tests via Maven -D property
-               (Alejandro Abdelnur via todd)
-   HBASE-3437  Support Explict Split Points from the Shell
-   HBASE-3448  RegionSplitter, utility class to manually split tables
-   HBASE-3610  Improve RegionSplitter performance
-   HBASE-3496  HFile CLI Improvements
-   HBASE-3596  [replication] Wait a few seconds before transferring queues
-   HBASE-3600  Update our jruby to 1.6.0
-   HBASE-3640  [replication] Transferring queues shouldn't be done inline with RS startup
-   HBASE-3658  Alert when heap is over committed (Subbu M Iyer via Stack)
-   HBASE-3681  Check the sloppiness of the region load before balancing (Ted Yu via JD)
-   HBASE-3703  hbase-config.sh needs to be updated so it can auto-detect
-               the sun jdk provided by RHEL6 (Bruno Mahe via todd)
-
-Release 0.90.1 - February 9th, 2011
-
-  NEW FEATURES
-   HBASE-3455  Add memstore-local allocation buffers to combat heap
-               fragmentation in the region server. Experimental / disabled
-               by default in 0.90.1
-  
-  BUG FIXES
-   HBASE-3445  Master crashes on data that was moved from different host
-   HBASE-3449  Server shutdown handlers deadlocked waiting for META
-   HBASE-3456  Fix hardcoding of 20 second socket timeout down in HBaseClient
-   HBASE-3476  HFile -m option need not scan key values
-               (Prakash Khemani via Lars George)
-   HBASE-3481  max seq id in flushed file can be larger than its correct value 
-               causing data loss during recovery
-   HBASE-3493  HMaster sometimes hangs during initialization due to missing
-               notify call (Bruno Dumon via Stack)
-   HBASE-3483  Memstore lower limit should trigger asynchronous flushes
-   HBASE-3494  checkAndPut implementation doesnt verify row param and writable 
-               row are the same
-   HBASE-3416  For intra-row scanning, the update readers notification resets
-               the query matcher and can lead to incorrect behavior
-   HBASE-3495  Shell is failing on subsequent split calls
-   HBASE-3502  Can't open region because can't open .regioninfo because
-               AlreadyBeingCreatedException
-   HBASE-3501  Remove the deletion limit in LogCleaner
-   HBASE-3500  Documentation update for replicatio
-   HBASE-3419  If re-transition to OPENING during log replay fails, server
-               aborts. Instead, should just cancel region open.
-   HBASE-3524  NPE from CompactionChecker
-   HBASE-3531  When under global memstore pressure, dont try to flush
-               unflushable regions.
-   HBASE-3550  FilterList reports false positives (Bill Graham via Andrew
-               Purtell)
-
-  IMPROVEMENTS
-   HBASE-3305  Allow round-robin distribution for table created with
-               multiple regions (ted yu via jgray)
-   HBASE-3508  LruBlockCache statistics thread should have a name
-   HBASE-3511  Allow rolling restart to apply to only RS or only masters
-   HBASE-3510  Add thread name for IPC reader threads
-   HBASE-3509  Add metric for flush queue length
-   HBASE-3517  Store build version in hbase-default.xml and verify at runtime
-
-Release 0.90.0 - January 19th, 2011
-  INCOMPATIBLE CHANGES
-   HBASE-1822  Remove the deprecated APIs
-   HBASE-1848  Fixup shell for HBASE-1822
-   HBASE-1854  Remove the Region Historian
-   HBASE-1930  Put.setTimeStamp misleading (doesn't change timestamp on
-               existing KeyValues, not copied in copy constructor)
-               (Dave Latham via Stack)
-   HBASE-1360  move up to Thrift 0.2.0 (Kay Kay and Lars Francke via Stack)
-   HBASE-2212  Refactor out lucene dependencies from HBase
-               (Kay Kay via Stack)
-   HBASE-2219  stop using code mapping for method names in the RPC
-   HBASE-1728  Column family scoping and cluster identification
-   HBASE-2099  Move build to Maven (Paul Smith via Stack)
-   HBASE-2260  Remove all traces of Ant and Ivy (Lars Francke via Stack)
-   HBASE-2255  take trunk back to hadoop 0.20
-   HBASE-2378  Bulk insert with multiple reducers broken due to improper
-               ImmutableBytesWritable comparator (Todd Lipcon via Stack)
-   HBASE-2392  Upgrade to ZooKeeper 3.3.0
-   HBASE-2294  Enumerate ACID properties of HBase in a well defined spec
-               (Todd Lipcon via Stack)
-   HBASE-2541  Remove transactional contrib (Clint Morgan via Stack)
-   HBASE-2542  Fold stargate contrib into core
-   HBASE-2565  Remove contrib module from hbase
-   HBASE-2397  Bytes.toStringBinary escapes printable chars
-   HBASE-2771  Update our hadoop jar to be latest from 0.20-append branch
-   HBASE-2803  Remove remaining Get code from Store.java,etc
-   HBASE-2553  Revisit IncrementColumnValue implementation in 0.22
-   HBASE-2692  Master rewrite and cleanup for 0.90
-               (Karthik Ranganathan, Jon Gray & Stack)
-   HBASE-2961  Close zookeeper when done with it (HCM, Master, and RS)
-   HBASE-2641  HBASE-2641 Refactor HLog splitLog, hbase-2437 continued;
-               break out split code as new classes
-               (James Kennedy via Stack)
-
-  BUG FIXES
-   HBASE-1791  Timeout in IndexRecordWriter (Bradford Stephens via Andrew
-               Purtell)
-   HBASE-1737  Regions unbalanced when adding new node (recommit)
-   HBASE-1792  [Regression] Cannot save timestamp in the future
-   HBASE-1793  [Regression] HTable.get/getRow with a ts is broken
-   HBASE-1698  Review documentation for o.a.h.h.mapreduce
-   HBASE-1798  [Regression] Unable to delete a row in the future
-   HBASE-1790  filters are not working correctly (HBASE-1710 HBASE-1807 too)
-   HBASE-1779  ThriftServer logged error if getVer() result is empty
-   HBASE-1778  Improve PerformanceEvaluation (Schubert Zhang via Stack)
-   HBASE-1751  Fix KeyValue javadoc on getValue for client-side
-   HBASE-1795  log recovery doesnt reset the max sequence id, new logfiles can
-               get tossed as 'duplicates'
-   HBASE-1794  recovered log files are not inserted into the storefile map
-   HBASE-1824  [stargate] default timestamp should be LATEST_TIMESTAMP
-   HBASE-1740  ICV has a subtle race condition only visible under high load
-   HBASE-1808  [stargate] fix how columns are specified for scanners
-   HBASE-1828  CompareFilters are broken from client-side
-   HBASE-1836  test of indexed hbase broken
-   HBASE-1838  [javadoc] Add javadoc to Delete explaining behavior when no
-               timestamp provided
-   HBASE-1821  Filtering by SingleColumnValueFilter bug
-   HBASE-1840  RowLock fails when used with IndexTable
-               (Keith Thomas via Stack)
-   HBASE-818   HFile code review and refinement (Schubert Zhang via Stack)
-   HBASE-1830  HbaseObjectWritable methods should allow null HBCs
-               for when Writable is not Configurable (Stack via jgray)
-   HBASE-1847  Delete latest of a null qualifier when non-null qualifiers
-               exist throws a RuntimeException 
-   HBASE-1850  src/examples/mapred do not compile after HBASE-1822
-   HBASE-1853  Each time around the regionserver core loop, we clear the
-               messages to pass master, even if we failed to deliver them
-   HBASE-1815  HBaseClient can get stuck in an infinite loop while attempting
-               to contact a failed regionserver
-   HBASE-1856  HBASE-1765 broke MapReduce when using Result.list()
-               (Lars George via Stack)
-   HBASE-1857  WrongRegionException when setting region online after .META.
-               split (Cosmin Lehane via Stack)
-   HBASE-1809  NPE thrown in BoundedRangeFileInputStream
-   HBASE-1859  Misc shell fixes patch (Kyle Oba via Stack)
-   HBASE-1865  0.20.0 TableInputFormatBase NPE
-   HBASE-1866  Scan(Scan) copy constructor does not copy value of
-               cacheBlocks
-   HBASE-1869  IndexedTable delete fails when used in conjunction with
-               RowLock (Keith Thomas via Stack)
-   HBASE-1858  Master can't split logs created by THBase (Clint Morgan via
-               Andrew Purtell)
-   HBASE-1871  Wrong type used in TableMapReduceUtil.initTableReduceJob()
-               (Lars George via Stack)
-   HBASE-1883  HRegion passes the wrong minSequenceNumber to
-               doReconstructionLog (Clint Morgan via Stack)
-   HBASE-1878  BaseScanner results can't be trusted at all (Related to
-               hbase-1784)
-   HBASE-1831  Scanning API must be reworked to allow for fully functional
-               Filters client-side
-   HBASE-1890  hbase-1506 where assignment is done at regionserver doesn't
-               work
-   HBASE-1889  ClassNotFoundException on trunk for REST
-   HBASE-1905  Remove unused config. hbase.hstore.blockCache.blockSize
-   HBASE-1906  FilterList of prefix and columnvalue not working properly with
-               deletes and multiple values
-   HBASE-1896  WhileMatchFilter.reset should call encapsulated filter reset
-   HBASE-1912  When adding a secondary index to an existing table, it will
-               cause NPE during re-indexing (Mingjui Ray Liao via Andrew
-               Purtell)
-   HBASE-1916  FindBugs and javac warnings cleanup
-   HBASE-1908  ROOT not reassigned if only one regionserver left
-   HBASE-1915  HLog.sync is called way too often, needs to be only called one
-               time per RPC
-   HBASE-1777  column length is not checked before saved to memstore
-   HBASE-1925  IllegalAccessError: Has not been initialized (getMaxSequenceId)
-   HBASE-1929  If hbase-default.xml is not in CP, zk session timeout is 10
-               seconds!
-   HBASE-1927  Scanners not closed properly in certain circumstances
-   HBASE-1934  NullPointerException in ClientScanner (Andrew Purtell via Stack)
-   HBASE-1946  Unhandled exception at regionserver (Dmitriy Lyfar via Stack)
-   HBASE-1682  IndexedRegion does not properly handle deletes
-               (Andrew McCall via Clint Morgan and Stack)
-   HBASE-1953  Overhaul of overview.html (html fixes, typos, consistency) -
-               no content changes (Lars Francke via Stack)
-   HBASE-1954  Transactional scans do not see newest put (Clint Morgan via
-               Stack)
-   HBASE-1919  code: HRS.delete seems to ignore exceptions it shouldnt
-   HBASE-1951  Stack overflow when calling HTable.checkAndPut() 
-               when deleting a lot of values
-   HBASE-1781  Weird behavior of WildcardColumnTracker.checkColumn(), 
-               looks like recursive loop
-   HBASE-1949  KeyValue expiration by Time-to-Live during major compaction is
-               broken (Gary Helmling via Stack)
-   HBASE-1957  Get-s can't set a Filter
-   HBASE-1928  ROOT and META tables stay in transition state (making the system
-               not usable) if the designated regionServer dies before the
-               assignment is complete (Yannis Pavlidis via Stack)
-   HBASE-1962  Bulk loading script makes regions incorrectly (loadtable.rb)
-   HBASE-1966  Apply the fix from site/ to remove the forrest dependency on
-               Java 5
-   HBASE-1967  [Transactional] client.TestTransactions.testPutPutScan fails
-               sometimes -- Temporary fix
-   HBASE-1841  If multiple of same key in an hfile and they span blocks, may
-               miss the earlier keys on a lookup
-               (Schubert Zhang via Stack)
-   HBASE-1977  Add ts and allow setting VERSIONS when scanning in shell
-   HBASE-1979  MurmurHash does not yield the same results as the reference C++
-               implementation when size % 4 >= 2 (Olivier Gillet via Andrew
-               Purtell)
-   HBASE-1999  When HTable goes away, close zk session in shutdown hook or
-               something...
-   HBASE-1997  zk tick time bounds maximum zk session time
-   HBASE-2003  [shell] deleteall ignores column if specified
-   HBASE-2018  Updates to .META. blocked under high MemStore load
-   HBASE-1994  Master will lose hlog entries while splitting if region has
-               empty oldlogfile.log (Lars George via Stack)
-   HBASE-2022  NPE in housekeeping kills RS
-   HBASE-2034  [Bulk load tools] loadtable.rb calls an undefined method
-               'descendingIterator' (Ching-Shen Chen via Stack)
-   HBASE-2033  Shell scan 'limit' is off by one
-   HBASE-2040  Fixes to group commit
-   HBASE-2047  Example command in the "Getting Started" 
-               documentation doesn't work (Benoit Sigoure via JD)
-   HBASE-2048  Small inconsistency in the "Example API Usage"
-               (Benoit Sigoure via JD)
-   HBASE-2044  HBASE-1822 removed not-deprecated APIs
-   HBASE-1960  Master should wait for DFS to come up when creating
-               hbase.version
-   HBASE-2054  memstore size 0 is >= than blocking -2.0g size
-   HBASE-2064  Cannot disable a table if at the same the Master is moving 
-               its regions around
-   HBASE-2065  Cannot disable a table if any of its region is opening 
-               at the same time
-   HBASE-2026  NPE in StoreScanner on compaction
-   HBASE-2072  fs.automatic.close isn't passed to FileSystem
-   HBASE-2075  Master requires HDFS superuser privileges due to waitOnSafeMode
-   HBASE-2077  NullPointerException with an open scanner that expired causing 
-               an immediate region server shutdown (Sam Pullara via JD)
-   HBASE-2078  Add JMX settings as commented out lines to hbase-env.sh
-               (Lars George via JD)
-   HBASE-2082  TableInputFormat is ignoring input scan's stop row setting
-               (Scott Wang via Andrew Purtell)
-   HBASE-2068  MetricsRate is missing "registry" parameter
-               (Lars George and Gary Helmling via Stack)
-   HBASE-2093  [stargate] RowSpec parse bug
-   HBASE-2114  Can't start HBase in trunk (JD and Kay Kay via JD)
-   HBASE-2115  ./hbase shell would not launch due to missing jruby dependency
-               (Kay Kay via JD)
-   HBASE-2101  KeyValueSortReducer collapses all values to last passed
-   HBASE-2119  Fix top-level NOTICES.txt file. Its stale.
-   HBASE-2120  [stargate] Unable to delete column families (Greg Lu via Andrew
-               Purtell)
-   HBASE-2123  Remove 'master' command-line option from PE
-   HBASE-2024  [stargate] Deletes not working as expected (Greg Lu via Andrew
-               Purtell)
-   HBASE-2122  [stargate] Initializing scanner column families doesn't work
-               (Greg Lu via Andrew Purtell)
-   HBASE-2124  Useless exception in HMaster on startup
-   HBASE-2127  randomWrite mode of PerformanceEvaluation benchmark program
-               writes only to a small range of keys (Kannan Muthukkaruppan
-               via Stack)
-   HBASE-2126  Fix build break - ec2 (Kay Kay via JD)
-   HBASE-2134  Ivy nit regarding checking with latest snapshots (Kay Kay via
-               Andrew Purtell)
-   HBASE-2138  unknown metrics type (Stack via JD)
-   HBASE-2137  javadoc warnings from 'javadoc' target (Kay Kay via Stack)
-   HBASE-2135  ant javadoc complains about missing classe (Kay Kay via Stack)
-   HBASE-2130  bin/* scripts - not to include lib/test/**/*.jar
-               (Kay Kay via Stack)
-   HBASE-2140  findbugs issues - 2 performance warnings as suggested by
-               findbugs (Kay Kay via Stack)
-   HBASE-2139  findbugs task in build.xml (Kay Kay via Stack)
-   HBASE-2147  run zookeeper in the same jvm as master during non-distributed
-               mode
-   HBASE-65    Thrift Server should have an option to bind to ip address
-               (Lars Francke via Stack)
-   HBASE-2146  RPC related metrics are missing in 0.20.3 since recent changes
-               (Gary Helmling via Lars George)
-   HBASE-2150  Deprecated HBC(Configuration) constructor doesn't call this()
-   HBASE-2154  Fix Client#next(int) javadoc
-   HBASE-2152  Add default jmxremote.{access|password} files into conf
-               (Lars George and Gary Helmling via Stack)
-   HBASE-2156  HBASE-2037 broke Scan - only a test for trunk
-   HBASE-2057  Cluster won't stop (Gary Helmling and JD via JD)
-   HBASE-2160  Can't put with ts in shell
-   HBASE-2144  Now does \x20 for spaces
-   HBASE-2163  ZK dependencies - explicitly add them until ZK artifacts are
-               published to mvn repository (Kay Kay via Stack)
-   HBASE-2164  Ivy nit - clean up configs (Kay Kay via Stack)
-   HBASE-2184  Calling HTable.getTableDescriptor().* on a full cluster takes
-               a long time (Cristian Ivascu via Stack)
-   HBASE-2193  Better readability of - hbase.regionserver.lease.period
-               (Kay Kay via Stack)
-   HBASE-2199  hbase.client.tableindexed.IndexSpecification, lines 72-73
-               should be reversed (Adrian Popescu via Stack)
-   HBASE-2224  Broken build: TestGetRowVersions.testGetRowMultipleVersions
-   HBASE-2129  ant tar build broken since switch to Ivy (Kay Kay via Stack)
-   HBASE-2226  HQuorumPeerTest doesnt run because it doesnt start with the
-               word Test
-   HBASE-2230  SingleColumnValueFilter has an ungaurded debug log message
-   HBASE-2258  The WhileMatchFilter doesn't delegate the call to filterRow()
-   HBASE-2259  StackOverflow in ExplicitColumnTracker when row has many columns
-   HBASE-2268  [stargate] Failed tests and DEBUG output is dumped to console
-               since move to Mavenized build 
-   HBASE-2276  Hbase Shell hcd() method is broken by the replication scope 
-               parameter (Alexey Kovyrin via Lars George)
-   HBASE-2244  META gets inconsistent in a number of crash scenarios
-   HBASE-2284  fsWriteLatency metric may be incorrectly reported 
-               (Kannan Muthukkaruppan via Stack)
-   HBASE-2063  For hfileoutputformat, on timeout/failure/kill clean up
-               half-written hfile (Ruslan Salyakhov via Stack)
-   HBASE-2281  Hbase shell does not work when started from the build dir
-               (Alexey Kovyrin via Stack)
-   HBASE-2293  CME in RegionManager#isMetaServer
-   HBASE-2261  The javadoc in WhileMatchFilter and it's tests in TestFilter
-               are not accurate/wrong
-   HBASE-2299  [EC2] mapreduce fixups for PE
-   HBASE-2295  Row locks may deadlock with themselves
-               (dhruba borthakur via Stack)
-   HBASE-2308  Fix the bin/rename_table.rb script, make it work again
-   HBASE-2307  hbase-2295 changed hregion size, testheapsize broke... fix it
-   HBASE-2269  PerformanceEvaluation "--nomapred" may assign duplicate random
-               seed over multiple testing threads (Tatsuya Kawano via Stack) 
-   HBASE-2287  TypeError in shell (Alexey Kovyrin via Stack)
-   HBASE-2023  Client sync block can cause 1 thread of a multi-threaded client
-               to block all others (Karthik Ranganathan via Stack)
-   HBASE-2305  Client port for ZK has no default (Suraj Varma via Stack)
-   HBASE-2323  filter.RegexStringComparator does not work with certain bytes
-               (Benoit Sigoure via Stack)
-   HBASE-2313  Nit-pick about hbase-2279 shell fixup, if you do get with
-               non-existant column family, throws lots of exceptions
-               (Alexey Kovyrin via Stack)
-   HBASE-2334  Slimming of Maven dependency tree - improves assembly build
-               speed (Paul Smith via Stack)
-   HBASE-2336  Fix build broken with HBASE-2334 (Lars Francke via Lars George)
-   HBASE-2283  row level atomicity (Kannan Muthukkaruppan via Stack)
-   HBASE-2355  Unsynchronized logWriters map is mutated from several threads in
-               HLog splitting (Todd Lipcon via Andrew Purtell)
-   HBASE-2358  Store doReconstructionLog will fail if oldlogfile.log is empty
-               and won't load region (Cosmin Lehene via Stack)
-   HBASE-2370  saveVersion.sh doesnt properly grab the git revision
-   HBASE-2373  Remove confusing log message of how "BaseScanner GET got
-               different address/startcode than SCAN"
-   HBASE-2361  WALEdit broke replication scope
-   HBASE-2365  Double-assignment around split
-   HBASE-2398  NPE in HLog.append when calling writer.getLength
-               (Kannan Muthukkaruppan via Stack)
-   HBASE-2410  spurious warnings from util.Sleeper
-   HBASE-2335  mapred package docs don't say zookeeper jar is a dependent
-   HBASE-2417  HCM.locateRootRegion fails hard on "Connection refused"
-   HBASE-2346  Usage of FilterList slows down scans
-   HBASE-2341  ZK settings for initLimit/syncLimit should not have been removed
-               from hbase-default.xml
-   HBASE-2439  HBase can get stuck if updates to META are blocked
-               (Kannan Muthukkaruppan via Stack)
-   HBASE-2451  .META. by-passes cache; BLOCKCACHE=>'false'
-   HBASE-2453  Revisit compaction policies after HBASE-2248 commit
-               (Jonathan Gray via Stack)
-   HBASE-2458  Client stuck in TreeMap,remove (Todd Lipcon via Stack)
-   HBASE-2460  add_table.rb deletes any tables for which the target table name
-               is a prefix (Todd Lipcon via Stack)
-   HBASE-2463  Various Bytes.* functions silently ignore invalid arguments
-               (Benoit Sigoure via Stack)
-   HBASE-2443  IPC client can throw NPE if socket creation fails
-               (Todd Lipcon via Stack)
-   HBASE-2447  LogSyncer.addToSyncQueue doesn't check if syncer is still
-               running before waiting (Todd Lipcon via Stack)
-   HBASE-2494  Does not apply new.name parameter to CopyTable
-               (Yoonsik Oh via Stack)
-   HBASE-2481  Client is not getting UnknownScannerExceptions; they are
-               being eaten (Jean-Daniel Cryans via Stack)
-   HBASE-2448  Scanner threads are interrupted without acquiring lock properly
-               (Todd Lipcon via Stack)
-   HBASE-2491  master.jsp uses absolute links to table.jsp. This broke when
-               master.jsp moved under webapps/master(Cristian Ivascu via Stack)
-   HBASE-2487  Uncaught exceptions in receiving IPC responses orphan clients
-               (Todd Lipcon via Stack)
-   HBASE-2497  ProcessServerShutdown throws NullPointerException for offline
-               regiond (Miklos Kurucz via Stack)
-   HBASE-2499  Race condition when disabling a table leaves regions in transition
-   HBASE-2489  Make the "Filesystem needs to be upgraded" error message more
-               useful (Benoit Sigoure via Stack)
-   HBASE-2482  regions in transition do not get reassigned by master when RS
-               crashes (Todd Lipcon via Stack)
-   HBASE-2513  hbase-2414 added bug where we'd tight-loop if no root available
-   HBASE-2503  PriorityQueue isn't thread safe, KeyValueHeap uses it that way
-   HBASE-2431  Master does not respect generation stamps, may result in meta
-               getting permanently offlined
-   HBASE-2515  ChangeTableState considers split&&offline regions as being served
-   HBASE-2544  Forward port branch 0.20 WAL to TRUNK
-   HBASE-2546  Specify default filesystem in both the new and old way (needed
-               if we are to run on 0.20 and 0.21 hadoop)
-   HBASE-1895  HConstants.MAX_ROW_LENGTH is incorrectly 64k, should be 32k      
-   HBASE-1968  Give clients access to the write buffer      
-   HBASE-2028  Add HTable.incrementColumnValue support to shell
-               (Lars George via Andrew Purtell)  
-   HBASE-2138  unknown metrics type
-   HBASE-2551  Forward port fixes that are in branch but not in trunk (part of
-               the merge of old 0.20 into TRUNK task) -- part 1.
-   HBASE-2474  Bug in HBASE-2248 - mixed version reads (not allowed by spec)
-   HBASE-2509  NPEs in various places, HRegion.get, HRS.close
-   HBASE-2344  InfoServer and hence HBase Master doesn't fully start if you
-               have HADOOP-6151 patch (Kannan Muthukkaruppan via Stack)
-   HBASE-2382  Don't rely on fs.getDefaultReplication() to roll HLogs
-               (Nicolas Spiegelberg via Stack)  
-   HBASE-2415  Disable META splitting in 0.20 (Todd Lipcon via Stack)
-   HBASE-2421  Put hangs for 10 retries on failed region servers
-   HBASE-2442  Log lease recovery catches IOException too widely
-               (Todd Lipcon via Stack)
-   HBASE-2457  RS gets stuck compacting region ad infinitum
-   HBASE-2562  bin/hbase doesn't work in-situ in maven
-               (Todd Lipcon via Stack)
-   HBASE-2449  Local HBase does not stop properly
-   HBASE-2539  Cannot start ZK before the rest in tests anymore
-   HBASE-2561  Scanning .META. while split in progress yields
-               IllegalArgumentException (Todd Lipcon via Stack)
-   HBASE-2572  hbase/bin/set_meta_block_caching.rb:72: can't convert
-               Java::JavaLang::String into String (TypeError) - little
-               issue with script
-   HBASE-2483  Some tests do not use ephemeral ports
-   HBASE-2573  client.HConnectionManager$TableServers logs non-printable
-               binary bytes (Benoît Sigoure via Stack)
-   HBASE-2576  TestHRegion.testDelete_mixed() failing on hudson
-   HBASE-2581  Bloom commit broke some tests... fix
-   HBASE-2582  TestTableSchemaModel not passing after commit of blooms
-   HBASE-2583  Make webapps work in distributed mode again and make webapps
-               deploy at / instead of at /webapps/master/master.jsp
-   HBASE-2590  Failed parse of branch element in saveVersion.sh
-   HBASE-2591  HBASE-2587 hardcoded the port that dfscluster runs on
-   HBASE-2519  StoreFileScanner.seek swallows IOEs (Todd Lipcon via Stack)
-   HBASE-2516  Ugly IOE when region is being closed; rather, should NSRE
-               (Daniel Ploeg via Stack)
-   HBASE-2589  TestHRegion.testWritesWhileScanning flaky on trunk
-               (Todd Lipcon via Stack)
-   HBASE-2590  Failed parse of branch element in saveVersion.sh
-               (Benoît Sigoure via Stack)
-   HBASE-2586  Move hbase webapps to a hbase-webapps dir (Todd Lipcon via
-               Andrew Purtell)
-   HBASE-2610  ValueFilter copy pasted javadoc from QualifierFilter
-   HBASE-2619  HBase shell 'alter' command cannot set table properties to False
-               (Christo Wilson via Stack)
-   HBASE-2621  Fix bad link to HFile documentation in javadoc
-               (Jeff Hammerbacher via Todd Lipcon)
-   HBASE-2371  Fix 'list' command in shell (Alexey Kovyrin via Todd Lipcon)
-   HBASE-2620  REST tests don't use ephemeral ports
-   HBASE-2635  ImmutableBytesWritable ignores offset in several cases
-   HBASE-2654  Add additional maven repository temporarily to fetch Guava
-   HBASE-2560  Fix IllegalArgumentException when manually splitting table
-               from web UI
-   HBASE-2657  TestTableResource is broken in trunk
-   HBASE-2662  TestScannerResource.testScannerResource broke in trunk
-   HBASE-2667  TestHLog.testSplit failing in trunk (Cosmin and Stack)
-   HBASE-2614  killing server in TestMasterTransitions causes NPEs and test deadlock
-   HBASE-2615  M/R on bulk imported tables
-   HBASE-2676  TestInfoServers should use ephemeral ports
-   HBASE-2616  TestHRegion.testWritesWhileGetting flaky on trunk
-   HBASE-2684  TestMasterWrongRS flaky in trunk
-   HBASE-2691  LeaseStillHeldException totally ignored by RS, wrongly named
-   HBASE-2703  ui not working in distributed context
-   HBASE-2710  Shell should use default terminal width when autodetection fails
-               (Kannan Muthukkaruppan via Todd Lipcon)
-   HBASE-2712  Cached region location that went stale won't recover if 
-               asking for first row
-   HBASE-2732  TestZooKeeper was broken, HBASE-2691 showed it
-   HBASE-2670  Provide atomicity for readers even when new insert has
-               same timestamp as current row.
-   HBASE-2733  Replacement of LATEST_TIMESTAMP with real timestamp was broken
-               by HBASE-2353.
-   HBASE-2734  TestFSErrors should catch all types of exceptions, not just RTE
-   HBASE-2738  TestTimeRangeMapRed updated now that we keep multiple cells with
-               same timestamp in MemStore
-   HBASE-2725  Shutdown hook management is gone in trunk; restore
-   HBASE-2740  NPE in ReadWriteConsistencyControl
-   HBASE-2752  Don't retry forever when waiting on too many store files
-   HBASE-2737  CME in ZKW introduced in HBASE-2694 (Karthik Ranganathan via JD)
-   HBASE-2756  MetaScanner.metaScan doesn't take configurations
-   HBASE-2656  HMaster.getRegionTableClosest should not return null for closed
-               regions
-   HBASE-2760  Fix MetaScanner TableNotFoundException when scanning starting at
-               the first row in a table.
-   HBASE-1025  Reconstruction log playback has no bounds on memory used
-   HBASE-2757  Fix flaky TestFromClientSide test by forcing region assignment
-   HBASE-2741  HBaseExecutorService needs to be multi-cluster friendly
-               (Karthik Ranganathan via JD)
-   HBASE-2769  Fix typo in warning message for HBaseConfiguration
-   HBASE-2768  Fix teardown order in TestFilter
-   HBASE-2763  Cross-port HADOOP-6833 IPC parameter leak bug
-   HBASE-2758  META region stuck in RS2ZK_REGION_OPENED state
-               (Karthik Ranganathan via jgray)
-   HBASE-2767  Fix reflection in tests that was made incompatible by HDFS-1209
-   HBASE-2617  Load balancer falls into pathological state if one server under
-               average - slop; endless churn
-   HBASE-2729  Interrupted or failed memstore flushes should not corrupt the
-               region
-   HBASE-2772  Scan doesn't recover from region server failure
-   HBASE-2775  Update of hadoop jar in HBASE-2771 broke TestMultiClusters
-   HBASE-2774  Spin in ReadWriteConsistencyControl eating CPU (load > 40) and
-               no progress running YCSB on clean cluster startup                     
-   HBASE-2785  TestScannerTimeout.test2772 is flaky
-   HBASE-2787  PE is confused about flushCommits
-   HBASE-2707  Can't recover from a dead ROOT server if any exceptions happens
-               during log splitting
-   HBASE-2501  Refactor StoreFile Code
-   HBASE-2806  DNS hiccups cause uncaught NPE in HServerAddress#getBindAddress
-               (Benoit Sigoure via Stack)
-   HBASE-2806  (small compile fix via jgray)
-   HBASE-2797  Another NPE in ReadWriteConsistencyControl
-   HBASE-2831  Fix '$bin' path duplication in setup scripts
-               (Nicolas Spiegelberg via Stack)
-   HBASE-2781  ZKW.createUnassignedRegion doesn't make sure existing znode is 
-               in the right state (Karthik Ranganathan via JD)
-   HBASE-2727  Splits writing one file only is untenable; need dir of recovered
-               edits ordered by sequenceid
-   HBASE-2843  Readd bloomfilter test over zealously removed by HBASE-2625 
-   HBASE-2846  Make rest server be same as thrift and avro servers
-   HBASE-1511  Pseudo distributed mode in LocalHBaseCluster
-               (Nicolas Spiegelberg via Stack)
-   HBASE-2851  Remove testDynamicBloom() unit test
-               (Nicolas Spiegelberg via Stack)
-   HBASE-2853  TestLoadIncrementalHFiles fails on TRUNK
-   HBASE-2854  broken tests on trunk         
-   HBASE-2859  Cleanup deprecated stuff in TestHLog (Alex Newman via Stack)
-   HBASE-2858  TestReplication.queueFailover fails half the time
-   HBASE-2863  HBASE-2553 removed an important edge case
-   HBASE-2866  Region permanently offlined
-   HBASE-2849  HBase clients cannot recover when their ZooKeeper session
-               becomes invalid (Benôit Sigoure via Stack)
-   HBASE-2876  HBase hbck: false positive error reported for parent regions
-               that are in offline state in meta after a split
-   HBASE-2815  not able to run the test suite in background because TestShell
-               gets suspended on tty output (Alexey Kovyrin via Stack)
-   HBASE-2852  Bloom filter NPE (pranav via jgray)
-   HBASE-2820  hbck throws an error if HBase root dir isn't on the default FS
-   HBASE-2884  TestHFileOutputFormat flaky when map tasks generate identical
-               data
-   HBASE-2890  Initialize RPC JMX metrics on startup (Gary Helmling via Stack)
-   HBASE-2755  Duplicate assignment of a region after region server recovery
-               (Kannan Muthukkaruppan via Stack)
-   HBASE-2892  Replication metrics aren't updated
-   HBASE-2461  Split doesn't handle IOExceptions when creating new region
-               reference files
-   HBASE-2871  Make "start|stop" commands symmetric for Master & Cluster
-               (Nicolas Spiegelberg via Stack)
-   HBASE-2901  HBASE-2461 broke build
-   HBASE-2823  Entire Row Deletes not stored in Row+Col Bloom
-               (Alexander Georgiev via Stack)
-   HBASE-2897  RowResultGenerator should handle NoSuchColumnFamilyException
-   HBASE-2905  NPE when inserting mass data via REST interface (Sandy Yin via
-               Andrew Purtell)
-   HBASE-2908  Wrong order of null-check [in TIF] (Libor Dener via Stack)
-   HBASE-2909  SoftValueSortedMap is broken, can generate NPEs
-   HBASE-2919  initTableReducerJob: Unused method parameter
-               (Libor Dener via Stack)
-   HBASE-2923  Deadlock between HRegion.internalFlushCache and close
-   HBASE-2927  BaseScanner gets stale HRegionInfo in some race cases
-   HBASE-2928  Fault in logic in BinaryPrefixComparator leads to
-               ArrayIndexOutOfBoundsException (pranav via jgray)
-   HBASE-2924  TestLogRolling doesn't use the right HLog half the time
-   HBASE-2931  Do not throw RuntimeExceptions in RPC/HbaseObjectWritable
-               code, ensure we log and rethrow as IOE
-               (Karthik Ranganathan via Stack)
-   HBASE-2915  Deadlock between HRegion.ICV and HRegion.close
-   HBASE-2920  HTable.checkAndPut/Delete doesn't handle null values
-   HBASE-2944  cannot alter bloomfilter setting for a column family from
-               hbase shell (Kannan via jgray)
-   HBASE-2948  bin/hbase shell broken (after hbase-2692)
-               (Sebastian Bauer via Stack)
-   HBASE-2954  Fix broken build caused by hbase-2692 commit
-   HBASE-2918  SequenceFileLogWriter doesnt make it clear if there is no
-               append by config or by missing lib/feature
-   HBASE-2799  "Append not enabled" warning should not show if hbase
-               root dir isn't on DFS
-   HBASE-2943  major_compact (and other admin commands) broken for .META.
-   HBASE-2643  Figure how to deal with eof splitting logs
-               (Nicolas Spiegelberg via Stack)
-   HBASE-2925  LRU of HConnectionManager.HBASE_INSTANCES breaks if
-               HBaseConfiguration is changed
-               (Robert Mahfoud via Stack)
-   HBASE-2964  Deadlock when RS tries to RPC to itself inside SplitTransaction
-   HBASE-1485  Wrong or indeterminate behavior when there are duplicate
-               versions of a column (pranav via jgray)
-   HBASE-2967  Failed split: IOE 'File is Corrupt!' -- sync length not being
-               written out to SequenceFile
-   HBASE-2969  missing sync in HTablePool.getTable()
-               (Guilherme Mauro Germoglio Barbosa via Stack)
-   HBASE-2973  NPE in LogCleaner
-   HBASE-2974  LoadBalancer ArithmeticException: / by zero
-   HBASE-2975  DFSClient names in master and RS should be unique
-   HBASE-2978  LoadBalancer IndexOutOfBoundsException
-   HBASE-2983  TestHLog unit test is mis-comparing an assertion
-               (Alex Newman via Todd Lipcon)
-   HBASE-2986  multi writable can npe causing client hang
-   HBASE-2979  Fix failing TestMultParrallel in hudson build
-   HBASE-2899  hfile.min.blocksize.size ignored/documentation wrong
-   HBASE-3006  Reading compressed HFile blocks causes way too many DFS RPC
-               calls severly impacting performance
-               (Kannan Muthukkaruppan via Stack)
-   HBASE-3010  Can't start/stop/start... cluster using new master
-   HBASE-3015  recovered.edits files not deleted if it only contain edits that
-               have already been flushed; hurts perf for all future opens of
-               the region
-   HBASE-3018  Bulk assignment on startup runs serially through the cluster
-               servers assigning in bulk to one at a time
-   HBASE-3023  NPE processing server crash in MetaReader. getServerUserRegions
-   HBASE-3024  NPE processing server crash in MetaEditor.addDaughter
-   HBASE-3026  Fixup of "missing" daughters on split is too aggressive
-   HBASE-3003  ClassSize constants dont use 'final'
-   HBASE-3002  Fix zookeepers.sh to work properly with strange JVM options
-   HBASE-3028  No basescanner means no GC'ing of split, offlined parent regions
-   HBASE-2989  [replication] RSM won't cleanup after locking if 0 peers
-   HBASE-2992  [replication] MalformedObjectNameException in ReplicationMetrics
-   HBASE-3037  When new master joins running cluster does "Received report from
-               unknown server -- telling it to STOP_REGIONSERVER.
-   HBASE-3039  Stuck in regionsInTransition because rebalance came in at same
-               time as a split
-   HBASE-3042  Use LO4J in SequenceFileLogReader
-               (Nicolas Spiegelberg via Stack)
-   HBASE-2995  Incorrect dependency on Log class from Jetty
-   HBASE-3038  WALReaderFSDataInputStream.getPos() fails if Filesize > MAX_INT
-               (Nicolas Spiegelberg via Stack)
-   HBASE-3047  If new master crashes, restart is messy
-   HBASE-3054  Remore TestEmptyMetaInfo; it doesn't make sense any more.
-   HBASE-3056  Fix ordering in ZKWatcher constructor to prevent weird race
-               condition
-   HBASE-3057  Race condition when closing regions that causes flakiness in
-               TestRestartCluster
-   HBASE-3058  Fix REST tests on trunk
-   HBASE-3068  IllegalStateException when new server comes online, is given
-               200 regions to open and 200th region gets timed out of regions
-               in transition
-   HBASE-3064  Long sleeping in HConnectionManager after thread is interrupted
-               (Bruno Dumon via Stack)
-   HBASE-2753  Remove sorted() methods from Result now that Gets are Scans
-   HBASE-3059  TestReadWriteConsistencyControl occasionally hangs (Hairong 
-               via Ryan)
-   HBASE-2906  [rest/stargate] URI decoding in RowResource
-   HBASE-3008  Memstore.updateColumnValue passes wrong flag to heapSizeChange
-               (Causes memstore size to go negative)
-   HBASE-3089  REST tests are broken locally and up in hudson
-   HBASE-3062  ZooKeeper KeeperException$ConnectionLossException is a
-               "recoverable" exception; we should retry a while on server
-               startup at least.
-   HBASE-3074  Zookeeper test failing on hudson
-   HBASE-3089  REST tests are broken locally and up in hudson
-   HBASE-3085  TestSchemaResource broken on TRUNK up on HUDSON
-   HBASE-3080  TestAdmin hanging on hudson
-   HBASE-3063  TestThriftServer failing in TRUNK
-   HBASE-3094  Fixes for miscellaneous broken tests
-   HBASE-3060  [replication] Reenable replication on trunk with unit tests
-   HBASE-3041  [replication] ReplicationSink shouldn't kill the whole RS when
-               it fails to replicate
-   HBASE-3044  [replication] ReplicationSource won't cleanup logs if there's
-               nothing to replicate
-   HBASE-3113  Don't reassign regions if cluster is being shutdown
-   HBASE-2933  Skip EOF Errors during Log Recovery
-               (Nicolas Spiegelberg via Stack)
-   HBASE-3081  Log Splitting & Replay: Distinguish between Network IOE and
-               Parsing IOE (Nicolas Spiegelberg via Stack)
-   HBASE-3098  TestMetaReaderEditor is broken in TRUNK; hangs
-   HBASE-3110  TestReplicationSink failing in TRUNK up on Hudson
-   HBASE-3101  bin assembly doesn't include -tests or -source jars
-   HBASE-3121  [rest] Do not perform cache control when returning results
-   HBASE-2669  HCM.shutdownHook causes data loss with
-               hbase.client.write.buffer != 0
-   HBASE-2985  HRegionServer.multi() no longer calls HRegion.put(List) when 
-               possible
-   HBASE-3031  CopyTable MR job named "Copy Table" in Driver
-   HBASE-2658  REST (stargate) TableRegionModel Regions need to be updated to
-               work w/ new region naming convention from HBASE-2531
-   HBASE-3140  Rest schema modification throw null pointer exception
-               (David Worms via Stack)
-   HBASE-2998  rolling-restart.sh shouldn't rely on zoo.cfg
-   HBASE-3145  importtsv fails when the line contains no data
-               (Kazuki Ohta via Todd Lipcon)
-   HBASE-2984  [shell] Altering a family shouldn't reset to default unchanged
-               attributes
-   HBASE-3143  Adding the tests' hbase-site.xml to the jar breaks some clients
-   HBASE-3139  Server shutdown processor stuck because meta not online
-   HBASE-3136  Stale reads from ZK can break the atomic CAS operations we
-               have in ZKAssign
-   HBASE-2753  Remove sorted() methods from Result now that Gets are Scans
-   HBASE-3147  Regions stuck in transition after rolling restart, perpetual
-               timeout handling but nothing happens
-   HBASE-3158  Bloom File Writes Broken if keySize is large
-               (Nicolas Spiegelberg via Stack)
-   HBASE-3155  HFile.appendMetaBlock() uses wrong comparator
-               (Nicolas Spiegelberg via Stack)
-   HBASE-3012  TOF doesn't take zk client port for remote clusters
-   HBASE-3159  Double play of OpenedRegionHandler for a single region
-               and assorted fixes around this + TestRollingRestart added
-   HBASE-3160  Use more intelligent priorities for PriorityCompactionQueue
-               (Nicolas Spiegelberg via Stack)
-   HBASE-3172  Reverse order of AssignmentManager and MetaNodeTracker in
-               ZooKeeperWatcher
-   HBASE-2406  Define semantics of cell timestamps/versions
-   HBASE-3175  Commit of HBASE-3160 broke TestPriorityCompactionQueue up on
-               hudson (nicolas via jgray)
-   HBASE-3163  If we timeout PENDING_CLOSE and send another closeRegion RPC,
-               need to handle NSRE from RS (comes as a RemoteException)
-   HBASE-3164  Handle case where we open META, ROOT has been closed but
-               znode location not deleted yet, and try to update META
-               location in ROOT
-   HBASE-2006  Documentation of hbase-site.xml parameters
-   HBASE-2672  README.txt should contain basic information like how to run
-               or build HBase
-   HBASE-3179  Enable ReplicationLogsCleaner only if replication is,
-               and fix its test
-   HBASE-3185  User-triggered compactions are triggering splits!
-   HBASE-1932  Encourage use of 'lzo' compression... add the wiki page to
-               getting started
-   HBASE-3151  NPE when trying to read regioninfo from .META.
-   HBASE-3191  FilterList with MUST_PASS_ONE and SCVF isn't working
-               (Stefan Seelmann via Stack)
-   HBASE-2471  Splitting logs, we'll make an output file though the
-               region no longer exists
-   HBASE-3095  Client needs to reconnect if it expires its zk session
-   HBASE-2935  Refactor "Corrupt Data" Tests in TestHLogSplit
-               (Alex Newman via Stack)
-   HBASE-3202  Closing a region, if we get a ConnectException, handle
-               it rather than abort
-   HBASE-3198  Log rolling archives files prematurely
-   HBASE-3203  We can get an order to open a region while shutting down
-               and it'll hold up regionserver shutdown
-   HBASE-3204  Reenable deferred log flush
-   HBASE-3195  [rest] Fix TestTransform breakage on Hudson
-   HBASE-3205  TableRecordReaderImpl.restart NPEs when first next is restarted
-   HBASE-3208  HLog.findMemstoresWithEditsOlderThan needs to look for edits
-               that are equal to too
-   HBASE-3141  Master RPC server needs to be started before an RS can check in
-   HBASE-3112  Enable and disable of table needs a bit of loving in new master
-   HBASE-3207  If we get IOException when closing a region, we should still
-               remove it from online regions and complete the close in ZK
-   HBASE-3199  large response handling: some fixups and cleanups
-   HBASE-3212  More testing of enable/disable uncovered base condition not in
-               place; i.e. that only one enable/disable runs at a time
-   HBASE-2898  MultiPut makes proper error handling impossible and leads to 
-   	       corrupted data
-   HBASE-3213  If do abort of backup master will get NPE instead of graceful
-               abort
-   HBASE-3214  TestMasterFailover.testMasterFailoverWithMockedRITOnDeadRS is
-               failing (Gary via jgray)
-   HBASE-3216  Move HBaseFsck from client to util
-   HBASE-3219  Split parents are reassigned on restart and on disable/enable
-   HBASE-3222  Regionserver region listing in UI is no longer ordered
-   HBASE-3221  Race between splitting and disabling
-   HBASE-3224  NPE in KeyValue$KVComparator.compare when compacting
-   HBASE-3233  Fix Long Running Stats
-   HBASE-3232  Fix KeyOnlyFilter + Add Value Length (Nicolas via Ryan)
-   HBASE-3235  Intermittent incrementColumnValue failure in TestHRegion 
-   	       (Gary via Ryan)
-   HBASE-3241  check to see if we exceeded hbase.regionserver.maxlogs limit is
-               incorrect (Kannan Muthukkaruppan via JD)
-   HBASE-3239  Handle null regions to flush in HLog.cleanOldLogs (Kannan
-               Muthukkaruppan via JD)
-   HBASE-3237  Split request accepted -- BUT CURRENTLY A NOOP
-   HBASE-3252  TestZooKeeperNodeTracker sometimes fails due to a race condition
-               in test notification (Gary Helmling via Andrew Purtell)
-   HBASE-3253  Thrift's missing from all the repositories in pom.xml
-   HBASE-3258  EOF when version file is empty
-   HBASE-3259  Can't kill the region servers when they wait on the master or
-               the cluster state znode
-   HBASE-3249  Typing 'help shutdown' in the shell shouldn't shutdown the cluster
-   HBASE-3262  TestHMasterRPCException uses non-ephemeral port for master
-   HBASE-3272  Remove no longer used options
-   HBASE-3269  HBase table truncate semantics seems broken as "disable" table
-               is now async by default
-   HBASE-3275  [rest] No gzip/deflate content encoding support
-   HBASE-3261  NPE out of HRS.run at startup when clock is out of sync
-   HBASE-3277  HBase Shell zk_dump command broken
-   HBASE-3267  close_region shell command breaks region
-   HBASE-3265  Regionservers waiting for ROOT while Master waiting for RegionServers
-   HBASE-3263  Stack overflow in AssignmentManager
-   HBASE-3234  hdfs-724 "breaks" TestHBaseTestingUtility multiClusters
-   HBASE-3286  Master passes IP and not hostname back to region server
-   HBASE-3297  If rows in .META. with no HRegionInfo cell, then hbck fails read
-               of .META.
-   HBASE-3294  WARN org.apache.hadoop.hbase.regionserver.Store: Not in set
-               (double-remove?) org.apache.hadoop.hbase.regionserver.StoreScanner@76607d3d
-   HBASE-3299  If failed open, we don't output the IOE
-   HBASE-3291  If split happens while regionserver is going down, we can stick open.
-   HBASE-3295  Dropping a 1k+ regions table likely ends in a client socket timeout
-               and it's very confusing
-   HBASE-3301  Treat java.net.SocketTimeoutException same as ConnectException
-               assigning/unassigning regions
-   HBASE-3296  Newly created table ends up disabled instead of assigned
-   HBASE-3304  Get spurious master fails during bootup
-   HBASE-3298  Regionserver can close during a split causing double assignment
-   HBASE-3309  " Not running balancer because dead regionserver processing" is a lie
-   HBASE-3314  [shell] 'move' is broken
-   HBASE-3315  Add debug output for when balancer makes bad balance
-   HBASE-3278  AssertionError in LoadBalancer
-   HBASE-3318  Split rollback leaves parent with writesEnabled=false
-   HBASE-3334  Refresh our hadoop jar because of HDFS-1520
-   HBASE-3347  Can't truncate/disable table that has rows in .META. that have empty
-               info:regioninfo column
-   HBASE-3321  Replication.join shouldn't clear the logs znode
-   HBASE-3352  enabling a non-existent table from shell prints no error
-   HBASE-3353  table.jsp doesn't handle entries in META without server info
-   HBASE-3351  ReplicationZookeeper goes to ZK every time a znode is modified
-   HBASE-3326  Replication state's znode should be created else it 
-               defaults to false
-   HBASE-3355  Stopping a stopped cluster leaks an HMaster
-   HBASE-3356  Add more checks in replication if RS is stopped
-   HBASE-3358  Recovered replication queue wait on themselves when terminating
-   HBASE-3359  LogRoller not added as a WAL listener when replication is enabled
-   HBASE-3360  ReplicationLogCleaner is enabled by default in 0.90 -- causes NPE
-   HBASE-3363  ReplicationSink should batch delete
-   HBASE-3365  EOFE contacting crashed RS causes Master abort
-   HBASE-3362  If .META. offline between OPENING and OPENED, then wrong server
-               location in .META. is possible
-   HBASE-3368  Split message can come in before region opened message; results
-               in 'Region has been PENDING_CLOSE for too long' cycle
-   HBASE-3366  WALObservers should be notified before the lock
-   HBASE-3367  Failed log split not retried
-   HBASE-3370  ReplicationSource.openReader fails to locate HLogs when they
-               aren't split yet
-   HBASE-3371  Race in TestReplication can make it fail
-   HBASE-3323  OOME in master splitting logs
-   HBASE-3374  Our jruby jar has *GPL jars in it; fix
-   HBASE-3343  Server not shutting down after losing log lease
-   HBASE-3381  Interrupt of a region open comes across as a successful open
-   HBASE-3386  NPE in TableRecordReaderImpl.restart
-   HBASE-3388  NPE processRegionInTransition(AssignmentManager.java:264)
-               doing rolling-restart.sh
-   HBASE-3383  [0.90RC1] bin/hbase script displays "no such file" warning on
-               target/cached_classpath.txt
-   HBASE-3344  Master aborts after RPC to server that was shutting down
-   HBASE-3408  AssignmentManager NullPointerException
-   HBASE-3402  Web UI shows two META regions
-   HBASE-3409  Failed server shutdown processing when retrying hlog split
-   HBASE-3412  HLogSplitter should handle missing HLogs
-   HBASE-3420  Handling a big rebalance, we can queue multiple instances of
-               a Close event; messes up state
-   HBASE-3423  hbase-env.sh over-rides HBASE_OPTS incorrectly (Ted Dunning via
-               Andrew Purtell)
-   HBASE-3407  hbck should pause between fixing and re-checking state
-   HBASE-3401  Region IPC operations should be high priority
-   HBASE-3430  hbase-daemon.sh should clean up PID files on process stop
-
-
-  IMPROVEMENTS
-   HBASE-1760  Cleanup TODOs in HTable
-   HBASE-1759  Ability to specify scanner caching on a per-scan basis
-               (Ken Weiner via jgray)
-   HBASE-1763  Put writeToWAL methods do not have proper getter/setter names
-               (second commit to fix compile error in hregion)
-   HBASE-1770  HTable.setWriteBufferSize does not flush the writeBuffer when
-               its size is set to a value lower than its current size.
-               (Mathias via jgray)
-   HBASE-1771  PE sequentialWrite is 7x slower because of
-               MemStoreFlusher#checkStoreFileCount
-   HBASE-1758  Extract interface out of HTable (Vaibhav Puranik via Andrew
-               Purtell)
-   HBASE-1776  Make rowcounter enum public
-   HBASE-1276  [testing] Upgrade to JUnit 4.x and use @BeforeClass
-               annotations to optimize tests
-   HBASE-1800  Too many ZK connections
-   HBASE-1819  Update to 0.20.1 hadoop and zk 3.2.1
-   HBASE-1820  Update jruby from 1.2 to 1.3.1
-   HBASE-1687  bin/hbase script doesn't allow for different memory settings
-               for each daemon type
-   HBASE-1823  Ability for Scanners to bypass the block cache
-   HBASE-1827  Add disabling block cache scanner flag to the shell
-   HBASE-1835  Add more delete tests
-   HBASE-1574  Client and server APIs to do batch deletes
-   HBASE-1833  hfile.main fixes
-   HBASE-1684  Backup (Export/Import) contrib tool for 0.20
-   HBASE-1860  Change HTablePool#createHTable from private to protected
-   HBASE-48    Bulk load tools
-   HBASE-1855  HMaster web application doesn't show the region end key in the
-               table detail page (Andrei Dragomir via Stack)
-   HBASE-1870  Bytes.toFloat(byte[], int) is marked private
-   HBASE-1874  Client Scanner mechanism that is used for HbaseAdmin methods
-               (listTables, tableExists), is very slow if the client is far
-               away from the HBase cluster (Andrei Dragomir via Stack)
-   HBASE-1879  ReadOnly transactions generate WAL activity (Clint Morgan via
-               Stack)
-   HBASE-1875  Compression test utility
-   HBASE-1832  Faster enable/disable/delete
-   HBASE-1481  Add fast row key only scanning
-   HBASE-1506  [performance] Make splits faster
-   HBASE-1722  Add support for exporting HBase metrics via JMX
-               (Gary Helming via Stack)
-   HBASE-1899  Use scanner caching in shell count
-   HBASE-1887  Update hbase trunk to latests on hadoop 0.21 branch so we can
-               all test sync/append
-   HBASE-1902  Let PerformanceEvaluation support setting tableName and compress
-               algorithm (Schubert Zhang via Stack)
-   HBASE-1885  Simplify use of IndexedTable outside Java API
-               (Kevin Patterson via Stack)
-   HBASE-1903  Enable DEBUG by default
-   HBASE-1907  Version all client writables
-   HBASE-1914  hlog should be able to set replication level for the log
-               indendently from any other files
-   HBASE-1537  Intra-row scanning
-   HBASE-1918  Don't do DNS resolving in .META. scanner for each row
-   HBASE-1756  Refactor HLog (changing package first)
-   HBASE-1926  Remove unused xmlenc jar from trunk
-   HBASE-1936  HLog group commit
-   HBASE-1921  When the Master's session times out and there's only one,
-               cluster is wedged
-   HBASE-1942  Update hadoop jars in trunk; update to r831142
-   HBASE-1943  Remove AgileJSON; unused
-   HBASE-1944  Add a "deferred log flush" attribute to HTD
-   HBASE-1945  Remove META and ROOT memcache size bandaid 
-   HBASE-1947  If HBase starts/stops often in less than 24 hours, 
-               you end up with lots of store files
-   HBASE-1829  Make use of start/stop row in TableInputFormat
-               (Lars George via Stack)
-   HBASE-1867  Tool to regenerate an hbase table from the data files
-   HBASE-1904  Add tutorial for installing HBase on Windows using Cygwin as
-               a test and development environment (Wim Van Leuven via Stack)
-   HBASE-1963  Output to multiple tables from Hadoop MR without use of HTable
-               (Kevin Peterson via Andrew Purtell)
-   HBASE-1975  SingleColumnValueFilter: Add ability to match the value of
-               previous versions of the specified column
-               (Jeremiah Jacquet via Stack)
-   HBASE-1971  Unit test the full WAL replay cycle
-   HBASE-1970  Export does one version only; make it configurable how many
-               it does
-   HBASE-1987  The Put object has no simple read methods for checking what
-               has already been added (Ryan Smith via Stack)
-   HBASE-1985  change HTable.delete(ArrayList) to HTable.delete(List)
-   HBASE-1958  Remove "# TODO: PUT BACK !!! "${HADOOP_HOME}"/bin/hadoop
-               dfsadmin -safemode wait"
-   HBASE-2011  Add zktop like output to HBase's master UI (Lars George via
-               Andrew Purtell)
-   HBASE-1995  Add configurable max value size check (Lars George via Andrew
-               Purtell)
-   HBASE-2017  Set configurable max value size check to 10MB
-   HBASE-2029  Reduce shell exception dump on console
-               (Lars George and J-D via Stack)
-   HBASE-2027  HConnectionManager.HBASE_INSTANCES leaks TableServers
-               (Dave Latham via Stack)
-   HBASE-2013  Add useful helpers to HBaseTestingUtility.java (Lars George
-               via J-D)
-   HBASE-2031  When starting HQuorumPeer, try to match on more than 1 address
-   HBASE-2043  Shell's scan broken
-   HBASE-2044  HBASE-1822 removed not-deprecated APIs
-   HBASE-2049  Cleanup HLog binary log output (Dave Latham via Stack)
-   HBASE-2052  Make hbase more 'live' when comes to noticing table creation,
-               splits, etc., for 0.20.3
-   HBASE-2059  Break out WAL reader and writer impl from HLog
-   HBASE-2060  Missing closing tag in mapreduce package info (Lars George via
-               Andrew Purtell)
-   HBASE-2028  Add HTable.incrementColumnValue support to shell (Lars George
-               via Andrew Purtell)
-   HBASE-2062  Metrics documentation outdated (Lars George via JD)
-   HBASE-2045  Update trunk and branch zk to just-release 3.2.2.
-   HBASE-2074  Improvements to the hadoop-config script (Bassam Tabbara via
-               Stack)
-   HBASE-2076  Many javadoc warnings
-   HBASE-2068  MetricsRate is missing "registry" parameter (Lars George via JD)
-   HBASE-2025  0.20.2 accessed from older client throws 
-               UndeclaredThrowableException; frustrates rolling upgrade
-   HBASE-2081  Set the retries higher in shell since client pause is lower
-   HBASE-1956  Export HDFS read and write latency as a metric
-   HBASE-2036  Use Configuration instead of HBaseConfiguration (Enis Soztutar
-               via Stack)
-   HBASE-2085  StringBuffer -> StringBuilder - conversion of references as
-               necessary (Kay Kay via Stack)
-   HBASE-2052  Upper bound of outstanding WALs can be overrun
-   HBASE-2086  Job(configuration,String) deprecated (Kay Kay via Stack)
-   HBASE-1996  Configure scanner buffer in bytes instead of number of rows
-               (Erik Rozendaal and Dave Latham via Stack)
-   HBASE-2090  findbugs issues (Kay Kay via Stack)
-   HBASE-2089  HBaseConfiguration() ctor. deprecated (Kay Kay via Stack)
-   HBASE-2035  Binary values are formatted wrong in shell
-   HBASE-2095  TIF shuold support more confs for the scanner (Bassam Tabbara
-               via Andrew Purtell)
-   HBASE-2107  Upgrading Lucene 2.2 to Lucene 3.0.0 (Kay Kay via Stack)
-   HBASE-2111  Move to ivy broke our being able to run in-place; i.e.
-               ./bin/start-hbase.sh in a checkout
-   HBASE-2136  Forward-port the old mapred package
-   HBASE-2133  Increase default number of client handlers
-   HBASE-2109  status 'simple' should show total requests per second, also 
-   	       the requests/sec is wrong as is
-   HBASE-2151  Remove onelab and include generated thrift classes in javadoc
-               (Lars Francke via Stack)
-   HBASE-2149  hbase.regionserver.global.memstore.lowerLimit is too low
-   HBASE-2157  LATEST_TIMESTAMP not replaced by current timestamp in KeyValue
-               (bulk loading)
-   HBASE-2153  Publish generated HTML documentation for Thrift on the website
-               (Lars Francke via Stack)
-   HBASE-1373  Update Thrift to use compact/framed protocol (Lars Francke via
-               Stack)
-   HBASE-2172  Add constructor to Put for row key and timestamp
-               (Lars Francke via Stack)
-   HBASE-2178  Hooks for replication
-   HBASE-2180  Bad random read performance from synchronizing
-               hfile.fddatainputstream
-   HBASE-2194  HTable - put(Put) , put(List<Put) code duplication (Kay Kay via
-               Stack)
-   HBASE-2185  Add html version of default hbase-site.xml (Kay Kay via Stack)
-   HBASE-2198  SingleColumnValueFilter should be able to find the column value
-               even when it's not specifically added as input on the sc
-               (Ferdy via Stack)
-   HBASE-2189  HCM trashes meta cache even when not needed
-   HBASE-2190  HRS should report to master when HMsg are available
-   HBASE-2209  Support of List [ ] in HBaseOutputWritable for serialization
-               (Kay Kay via Stack)
-   HBASE-2177  Add timestamping to gc logging option
-   HBASE-2066  Perf: parallelize puts
-   HBASE-2222  Improve log "Trying to contact region server Some server for
-               region, row 'ip_info_100,,1263329969690', but failed after
-               11 attempts".
-   HBASE-2220  Add a binary comparator that only compares up to the length
-               of the supplied byte array (Bruno Dumon via Stack)
-   HBASE-2211  Add a new Filter that checks a single column value but does not
-               emit it. (Ferdy via Stack)
-   HBASE-2241  Change balancer sloppyness from 0.1 to 0.3
-   HBASE-2250  typo in the maven pom
-   HBASE-2254  Improvements to the Maven POMs (Lars Francke via Stack)
-   HBASE-2262  ZKW.ensureExists should check for existence
-   HBASE-2264  Adjust the contrib apps to the Maven project layout 
-               (Lars Francke via Lars George)
-   HBASE-2245  Unnecessary call to syncWal(region); in HRegionServer 
-               (Benoit Sigoure via JD)
-   HBASE-2246  Add a getConfiguration method to HTableInterface
-               (Benoit Sigoure via JD)
-   HBASE-2282  More directories should be ignored when using git for
-               development (Alexey Kovyrin via Stack)
-   HBASE-2267  More improvements to the Maven build (Lars Francke via Stack)
-   HBASE-2174  Stop from resolving HRegionServer addresses to names using DNS
-               on every heartbeat (Karthik Ranganathan via Stack) 
-   HBASE-2302  Optimize M-R by bulk excluding regions - less InputSplit-s to
-               avoid traffic on region servers when performing M-R on a subset
-               of the table (Kay Kay via Stack) 
-   HBASE-2309  Add apache releases to pom (list of ) repositories
-               (Kay Kay via Stack)
-   HBASE-2279  Hbase Shell does not have any tests (Alexey Kovyrin via Stack)
-   HBASE-2314  [shell] Support for getting counters (Alexey Kovyrin via Stack)
-   HBASE-2324  Refactoring of TableRecordReader (mapred / mapreduce) for reuse
-               outside the scope of InputSplit / RecordReader (Kay Kay via
-               Stack)
-   HBASE-2313  Nit-pick about hbase-2279 shell fixup, if you do get with
-               non-existant column family, throws lots of exceptions
-               (Alexey Kovyrin via Stack)
-   HBASE-2331  [shell] count command needs a way to specify scan caching
-               (Alexey Kovyrin via Stack)
-   HBASE-2364  Ignore Deprecations during build (Paul Smith via Stack)
-   HBASE-2338  log recovery: deleted items may be resurrected
-               (Aravind Menon via Stack)
-   HBASE-2359  WALEdit doesn't implement HeapSize
-               (Kannan Muthukkaruppan via Stack)
-   HBASE-2348  [stargate] Stargate needs both JAR and WAR artifacts (Paul Smith
-               via Andrew Purtell)
-   HBASE-2389  HTable - delete / put unnecessary sync (Kay Kay via Stack)
-   HBASE-2385  Debug Message "Received report from unknown server" should be
-               INFO or WARN
-   HBASE-2374  TableInputFormat - Configurable parameter to add column families
-               (Kay Kay via Stack)
-   HBASE-2388  Give a very explicit message when we figure a big GC pause
-   HBASE-2270  Improve how we handle recursive calls in ExplicitColumnTracker 
-               and WildcardColumnTracker
-   HBASE-2402  [stargate] set maxVersions on gets
-   HBASE-2087  The wait on compaction because "Too many store files" 
-               holds up all flushing
-   HBASE-2252  Mapping a very big table kills region servers
-   HBASE-2412  [stargate] PerformanceEvaluation
-   HBASE-2419  Remove from RS logs the fat NotServingRegionException stack
-   HBASE-2286  [Transactional Contrib] Correctly handle or avoid cases where 
-               writes occur in same millisecond (Clint Morgan via J-D)
-   HBASE-2360  Make sure we have all the hadoop fixes in our our copy of its rpc
-               (Todd Lipcon via Stack)
-   HBASE-2423  Update 'Getting Started' for 0.20.4 including making
-               "important configurations more visiable"
-   HBASE-2435  HTablePool - method to release resources after use
-               (Kay Kay via Stack)
-   HBASE-1933  Upload Hbase jars to a public maven repository
-               (Kay Kay via Stack)
-   HBASE-2440  Master UI should check against known bad JDK versions and
-               warn the user (Todd Lipcon via Stack)
-   HBASE-2430  Disable frag display in trunk, let HBASE-2165 replace it
-   HBASE-1892  [performance] make hbase splits run faster
-   HBASE-2456  deleteChangedReaderObserver spitting warnings after HBASE-2248
-   HBASE-2452  Fix our Maven dependencies (Lars Francke via Stack)
-   HBASE-2490  Improve the javadoc of the client API for HTable
-               (Benoit Sigoure via Stack)
-   HBASE-2488  Master should warn more loudly about unexpected events
-               (Todd Lipcon via Stack)
-   HBASE-2393  ThriftServer instantiates a new HTable per request
-               (Bogdan DRAGU via Stack)
-   HBASE-2496  Less ArrayList churn on the scan path
-   HBASE-2414  Enhance test suite to be able to specify distributed scenarios
-   HBASE-2518  Kill all the trailing whitespaces in the code base
-               (Benoit Sigoure via Stack)
-   HBASE-2528  ServerManager.ServerMonitor isn't daemonized
-   HBASE-2537  Change ordering of maven repos listed in pom.xml to have
-               ibiblio first
-   HBASE-2540  Make QueryMatcher.MatchCode public (Clint Morgan via Stack)
-   HBASE-2524  Unresponsive region server, potential deadlock
-               (Todd Lipcon via Stack)
-   HBASE-2547  [mvn] assembly:assembly does not include hbase-X.X.X-test.jar
-               (Paul Smith via Stack)
-   HBASE-2037  The core elements of HBASE-2037: refactoring flushing, and adding 
-   	           configurability in which HRegion subclass is instantiated
-   HBASE-2248  Provide new non-copy mechanism to assure atomic reads in get and scan
-   HBASE-2523  Add check for licenses before rolling an RC, add to
-               how-to-release doc. and check for inlining a tool that does
-               this for us
-   HBASE-2234  HBASE-2234  Roll Hlog if any datanode in the write pipeline dies
-               (Nicolas Spiegelberg via Stack)
-   HBASE-2340  Add end-to-end test of sync/flush (Forward-port from branch)
-   HBASE-2555  Get rid of HColumnDescriptor.MAPFILE_INDEX_INTERVAL
-   HBASE-2520  Cleanup arrays vs Lists of scanners (Todd Lipcon via Stack)
-   HBASE-2551  Forward port fixes that are in branch but not in trunk (part
-               of the merge of old 0.20 into TRUNK task)
-   HBASE-2466  Improving filter API to allow for modification of keyvalue list 
-   	           by filter (Juhani Connolly via Ryan)
-   HBASE-2566  Remove 'lib' dir; it only has libthrift and that is being
-               pulled from http://people.apache.org/~rawson/repo/....
-   HBASE-2534  Recursive deletes and misc improvements to ZKW
-   HBASE-2577  Remove 'core' maven module; move core up a level
-   HBASE-2587  Coral where tests write data when running and make sure clean
-               target removes all written
-   HBASE-2580  Make the hlog file names unique
-   HBASE-2594  Narrow pattern used finding unit tests to run -- make it same
-               was we had in 0.20
-   HBASE-2538  Work on repository order in pom (adding fbmirror to top,
-               ibiblio on bottom)
-   HBASE-2613  Remove the code around MSG_CALL_SERVER_STARTUP
-   HBASE-2599  BaseScanner says "Current assignment of X is not valid" over
-               and over for same region
-   HBASE-2630  HFile should use toStringBinary in various places
-   HBASE-2632  Shell should autodetect terminal width
-   HBASE-2636  Upgrade Jetty to 6.1.24
-   HBASE-2437  Refactor HLog splitLog (Cosmin Lehene via Stack)
-   HBASE-2638  Speed up REST tests
-   HBASE-2653  Remove unused DynamicBloomFilter (especially as its tests are
-               failing hudson on occasion)
-   HBASE-2651  Allow alternate column separators to be specified for ImportTsv
-   HBASE-2661  Add test case for row atomicity guarantee
-   HBASE-2578  Add ability for tests to override server-side timestamp 
-   	           setting (currentTimeMillis) (Daniel Ploeg via Ryan Rawson)
-   HBASE-2558  Our javadoc overview -- "Getting Started", requirements, etc. --
-               is not carried across by mvn javadoc:javadoc target
-   HBASE-2618  Don't inherit from HConstants (Benoit Sigoure via Stack)
-   HBASE-2208  TableServers # processBatchOfRows - converts from List to [ ]
-               - Expensive copy 
-   HBASE-2694  Move RS to Master region open/close messaging into ZooKeeper
-   HBASE-2716  Make HBase's maven artifacts configurable with -D
-               (Alex Newman via Stack)
-   HBASE-2718  Update .gitignore for trunk after removal of contribs
-               (Lars Francke via Stack)
-   HBASE-2468  Improvements to prewarm META cache on clients
-               (Mingjie Lai via Stack)
-   HBASE-2353  Batch puts should sync HLog as few times as possible
-   HBASE-2726  Region Server should never abort without an informative log
-               message
-   HBASE-2724  Update to new release of Guava library
-   HBASE-2735  Make HBASE-2694 replication-friendly
-   HBASE-2683  Make it obvious in the documentation that ZooKeeper needs 
-               permanent storage
-   HBASE-2764  Force all Chore tasks to have a thread name
-   HBASE-2762  Add warning to master if running without append enabled
-   HBASE-2779  Build a -src tgz to sit beside our -bin tgz when you call
-               maven assembly:assembly
-   HBASE-2783  Quick edit of 'Getting Started' for development release 0.89.x
-   HBASE-2345  Add Test in 0.20 to Check for proper HDFS-200 append/sync support
-               (Nicolas Spiegelberg via JD)
-   HBASE-2786  TestHLog.testSplit hangs (Nicolas Spiegelberg via JD)
-   HBASE-2790  Purge apache-forrest from TRUNK
-   HBASE-2793  Add ability to extract a specified list of versions of a column 
-               in a single roundtrip (Kannan via Ryan)
-   HBASE-2828  HTable unnecessarily coupled with HMaster
-               (Nicolas Spiegelberg via Stack)
-   HBASE-2265  HFile and Memstore should maintain minimum and maximum timestamps
-               (Pranav via Ryan)
-   HBASE-2836  Speed mvn site building by removing generation of useless reports
-   HBASE-2808  Document the implementation of replication
-   HBASE-2517  During reads when passed the specified time range, seek to
-               next column (Pranav via jgray)
-   HBASE-2835  Update hadoop jar to head of branch-0.20-append to catch three
-               added patches
-   HBASE-2840  Remove the final remnants of the old Get code - the query matchers 
-               and other helper classes
-   HBASE-2845  Small edit of shell main help page cutting down some on white
-               space and text
-   HBASE-2850  slf4j version needs to be reconciled in pom: thrift wants 1.5.x
-               and hadoop/avro 1.4.x
-   HBASE-2865  Cleanup of LRU logging; its hard to read, uses custom MB'maker,
-               repeats info, too many numbers after the point, etc.
-   HBASE-2869  Regularize how we log sequenceids -- sometimes its myseqid,
-               other times its sequence id, etc.
-   HBASE-2873  Minor clean up in basescanner; fix a log and make deletes of
-               region processing run in order
-   HBASE-2830  NotServingRegionException shouldn't log a stack trace
-   HBASE-2874  Unnecessary double-synchronization in ZooKeeperWrapper
-               (Benoît Sigoure via Stack)
-   HBASE-2879  Offer ZK CLI outside of HBase Shell
-               (Nicolas Spiegelberg via Stack)
-   HBASE-2886  Add search box to site (Alex Baranau via Stack)
-   HBASE-2792  Create a better way to chain log cleaners
-               (Chongxin Li via Stack)
-   HBASE-2844  Capping the number of regions (Pranav Khaitan via Stack)
-   HBASE-2870  Add Backup CLI Option to HMaster (Nicolas Spiegelberg via Stack)
-   HBASE-2868  Do some small cleanups in org.apache.hadoop.hbase.regionserver.wal
-               (Alex Newman via Stack)
-   HBASE-1660  HBASE-1660 script to handle rolling restarts
-               (Nicolas Spiegelberg via Stack)
-   HBASE-1517  Implement inexpensive seek operations in HFile (Pranav via Ryan)
-   HBASE-2903  ColumnPrefix filtering (Pranav via Ryan)
-   HBASE-2904  Smart seeking using filters (Pranav via Ryan)
-   HBASE-2922  HLog preparation and cleanup are done under the updateLock, 
-               major slowdown
-   HBASE-1845  MultiGet, MultiDelete, and MultiPut - batched to the 
-               appropriate region servers (Marc Limotte via Ryan)
-   HBASE-2867  Have master show its address using hostname rather than IP
-   HBASE-2696  ZooKeeper cleanup and refactor
-   HBASE-2695  HMaster cleanup and refactor
-   HBASE-2692  Open daughters immediately on parent's regionserver
-   HBASE-2405  Close, split, open of regions in RegionServer are run by a single
-               thread only.
-   HBASE-1676  load balancing on a large cluster doesn't work very well
-   HBASE-2953  Edit of hbase-default.xml removing stale configs.
-   HBASE-2857  HBaseAdmin.tableExists() should not require a full meta scan
-   HBASE-2962  Add missing methods to HTableInterface (and HTable)
-               (Lars Francke via Stack)
-   HBASE-2942  Custom filters should not require registration in 
-               HBaseObjectWritable (Gary Helmling via Andrew Purtell)
-   HBASE-2976  Running HFile tool passing fully-qualified filename I get
-               'IllegalArgumentException: Wrong FS'
-   HBASE-2977  Refactor master command line to a new class
-   HBASE-2980  Refactor region server command line to a new class
-   HBASE-2988  Support alternate compression for major compactions
-   HBASE-2941  port HADOOP-6713 - threading scalability for RPC reads - to HBase
-   HBASE-2782  QOS for META table access
-   HBASE-3017  More log pruning
-   HBASE-3022  Change format of enum messages in o.a.h.h.executor package
-   HBASE-3001  Ship dependency jars to the cluster for all jobs
-   HBASE-3033  [replication] ReplicationSink.replicateEntries improvements
-   HBASE-3040  BlockIndex readIndex too slowly in heavy write scenario
-               (Andy Chen via Stack)
-   HBASE-3030  The return code of many filesystem operations are not checked
-               (dhruba borthakur via Stack)
-   HBASE-2646  Compaction requests should be prioritized to prevent blocking
-               (Jeff Whiting via Stack)
-   HBASE-3019  Make bulk assignment on cluster startup run faster
-   HBASE-3066  We don't put the port for hregionserver up into znode since
-               new master
-   HBASE-2825  Scans respect row locks
-   HBASE-3070  Add to hbaseadmin means of shutting down a regionserver
-   HBASE-2996  Fix and clean up Maven (Lars Francke via Stack)
-   HBASE-2917  Reseek directly to next row (Pranav Khaitan)
-   HBASE-2907  [rest/stargate] Improve error response when trying to create a
-               scanner on a nonexistant table
-   HBASE-3092  Replace deprecated "new HBaseConfiguration(...)" calls
-               (Lars Francke)
-   HBASE-2968  No standard family filter provided (Andrey Stepachev)
-   HBASE-3088  TestAvroServer and TestThriftServer broken because use same
-               table in all tests and tests enable/disable/delete
-   HBASE-3097  Merge in hbase-1200 doc on bloomfilters into hbase book
-   HBASE-2700  Test of: Handle master failover for regions in transition
-   HBASE-3115  HBaseClient wastes 1 TCP packet per RPC
-   HBASE-3076  Allow to disable automatic shipping of dependency jars
-               for mapreduce jobs (Bruno Dumon)
-   HBASE-3128  On assign, if ConnectException, reassign another server
-   HBASE-3133  Only log compaction requests when a request is actually added
-               to the queue
-   HBASE-3132  Print TimestampRange and BloomFilters in HFile pretty print
-   HBASE-2514  RegionServer should refuse to be assigned a region that use 
-   	       LZO when LZO isn't available
-   HBASE-3082  For ICV gets, first look in MemStore before reading StoreFiles
-               (prakash via jgray)
-   HBASE-3167  HBase Export: Add ability to export specific Column Family;
-               Turn Block Cache off during export; improve usage doc
-               (Kannan Muthukkaruppan via Stack)
-   HBASE-3102  Enhance HBase rMetrics for Long-running Stats
-               (Nicolas Spiegelberg via Stack)
-   HBASE-3169  NPE when master joins running cluster if a RIT references
-               a RS no longer present
-   HBASE-3174  Add ability for Get operations to enable/disable use of block
-               caching
-   HBASE-3162  Add TimeRange support into Increment to optimize for counters
-               that are partitioned on time
-   HBASE-2253  Show Block cache hit ratio for requests where
-               cacheBlocks=true
-   HBASE-3126  Force use of 'mv -f' when moving aside hbase logfiles
-   HBASE-3176  Remove compile warnings in HRegionServer
-   HBASE-3154  HBase RPC should support timeout (Hairong via jgray)
-   HBASE-3184  Xmx setting in pom to use for tests/surefire does not appear
-               to work
-   HBASE-3120  [rest] Content transcoding
-   HBASE-3181  Review, document, and fix up Regions-in-Transition timeout
-               logic
-   HBASE-3180  Review periodic master logging, especially ServerManager once
-               a minute
-   HBASE-3189  Stagger Major Compactions (Nicolas Spiegelberg via Stack)
-   HBASE-2564  [rest] Tests use deprecated foundation
-   HBASE-2819  hbck should have the ability to repair basic problems
-   HBASE-3200  Make is so can disable DEBUG logging on HConnectionImplemenation
-               without losing important messages
-   HBASE-3201  Add accounting of empty regioninfo_qualifier rows in meta to
-               hbasefsck.
-   HBASE-3048  unify code for major/minor compactions (Amit via jgray)
-   HBASE-3083  Major compaction check should use new timestamp meta
-               information in HFiles (rather than dfs timestamp) along with
-               TTL to allow major even if single file
-   HBASE-3194  HBase should run on both secure and vanilla versions of Hadoop 0.20
-               (Gary Helmling via Stack)
-   HBASE-3209  HBASE-3209 : New Compaction Algorithm
-               (Nicolas Spiegelberg via Stack)
-   HBASE-3168  Sanity date and time check when a region server joins the
-               cluster (Jeff Whiting and jgray)
-   HBASE-3090  Don't include hbase-default in conf/ assembly
-   HBASE-3161  Provide option for Stargate to only serve GET requests
-               (Bennett Neale via Stack)
-   HBASE-3218  Shell help cleanup/cosmetics/edit
-   HBASE-3079  Shell displaying uninformative exceptions
-   HBASE-3227  Edit of log messages before branching.
-   HBASE-3230  Refresh our hadoop jar and update zookeeper to
-               just-released 3.3.2
-   HBASE-3231  Update to zookeeper 3.3.2.
-   HBASE-3273  Set the ZK default timeout to 3 minutes
-   HBASE-3279  [rest] Filter for gzip content encoding that wraps both input
-               and output side.
-   HBASE-3223  Get VersionInfo for Running HBase Process
-               (Nicolas Spiegelberg via Stack)
-   HBASE-3303  Lower hbase.regionserver.handler.count from 25 back to 10
-   HBASE-2467  Concurrent flushers in HLog sync using HDFS-895
-   HBASE-3349  Pass HBase configuration to HttpServer
-   HBASE-3372  HRS shouldn't print a full stack for ServerNotRunningException
-   HBASE-3392  Update backport of InputSampler to reflect MAPREDUCE-1820
-   HBASE-3405  Allow HBaseRpcMetrics to register custom interface methods
-
-
-  NEW FEATURES
-   HBASE-1961  HBase EC2 scripts
-   HBASE-1982  [EC2] Handle potentially large and uneven instance startup times
-   HBASE-2009  [EC2] Support mapreduce
-   HBASE-2012  [EC2] LZO support
-   HBASE-2019  [EC2] remember credentials if not configured
-   HBASE-2080  [EC2] Support multivolume local instance storage
-   HBASE-2083  [EC2] HDFS DataNode no longer required on master
-   HBASE-2084  [EC2] JAVA_HOME handling broken
-   HBASE-2100  [EC2] Adjust fs.file-max
-   HBASE-2103  [EC2] pull version from build
-   HBASE-2131  [EC2] Mount data volumes as xfs, noatime
-   HBASE-1901  "General" partitioner for "hbase-48" bulk (behind the api, write
-               hfiles direct) uploader
-   HBASE-1433  Update hbase build to match core, use ivy, publish jars to maven
-               repo, etc. (Kay Kay via Stack)
-   HBASE-2129  Simple Master/Slave replication
-   HBASE-2070  Collect HLogs and delete them after a period of time
-   HBASE-2221  MR to copy a table
-   HBASE-2257  [stargate] multiuser mode
-   HBASE-2263  [stargate] multiuser mode: authenticator for zookeeper
-   HBASE-2273  [stargate] export metrics via Hadoop metrics, JMX, and zookeeper
-   HBASE-2274  [stargate] filter support: JSON descriptors
-   HBASE-2316  Need an ability to run shell tests w/o invoking junit
-               (Alexey Kovyrin via Stack)
-   HBASE-2327  [EC2] Allocate elastic IP addresses for ZK and master nodes
-   HBASE-2319  [stargate] multiuser mode: request shaping
-   HBASE-2403  [stargate] client HTable interface to REST connector
-   HBASE-2438  Addition of a Column Pagination Filter (Paul Kist via Stack)
-   HBASE-2473  Add to admin create table start and end key params and
-               desired number of regions
-   HBASE-2529  Make OldLogsCleaner easier to extend
-   HBASE-2527  Add the ability to easily extend some HLog actions
-   HBASE-2559  Set hbase.hregion.majorcompaction to 0 to disable
-   HBASE-1200  Add bloomfilters (Nicolas Spiegelberg via Stack)
-   HBASE-2588  Add easier way to ship HBase dependencies to MR cluster within Job
-   HBASE-1923  Bulk incremental load into an existing table
-   HBASE-2579  Add atomic checkAndDelete support (Michael Dalton via Stack)
-   HBASE-2400  new connector for Avro RPC access to HBase cluster
-               (Jeff Hammerbacher via Ryan Rawson)
-   HBASE-7     Provide a HBase checker and repair tool similar to fsck
-               (dhruba borthakur via Stack)
-   HBASE-2223  Handle 10min+ network partitions between clusters
-   HBASE-2862  Name DFSClient for Improved Debugging
-               (Nicolas Spiegelberg via Stack)
-   HBASE-2838  Replication metrics
-   HBASE-3000  Add "hbase classpath" command to dump classpath
-   HBASE-3043  'hbase-daemon.sh stop regionserver' should kill compactions
-               that are in progress
-               (Nicolas Spiegelberg via Stack)
-   HBASE-3073  New APIs for Result, faster implementation for some calls
-   HBASE-3053  Add ability to have multiple Masters LocalHBaseCluster for
-               test writing
-   HBASE-2201  JRuby shell for replication
-   HBASE-2946  Increment multiple columns in a row at once
-   HBASE-3013  Tool to verify data in two clusters
-   HBASE-2896  Retain assignment information between cluster
-               shutdown/startup
-   HBASE-3211  Key (Index) Only Fetches
-
-
-  OPTIMIZATIONS
-   HBASE-410   [testing] Speed up the test suite
-   HBASE-2041  Change WAL default configuration values
-   HBASE-2997  Performance fixes - profiler driven
-   HBASE-2450  For single row reads of specific columns, seek to the 
-   	       first column in HFiles rather than start of row
-	       (Pranav via Ryan, some Ryan)
-
-
-Release 0.20.0 - Tue Sep  8 12:53:05 PDT 2009
-  INCOMPATIBLE CHANGES
-   HBASE-1147  Modify the scripts to use Zookeeper
-   HBASE-1144  Store the ROOT region location in Zookeeper
-               (Nitay Joffe via Stack)
-   HBASE-1146  Replace the HRS leases with Zookeeper
-   HBASE-61    Create an HBase-specific MapFile implementation
-               (Ryan Rawson via Stack)
-   HBASE-1145  Ensure that there is only 1 Master with Zookeeper (Removes
-               hbase.master) (Nitay Joffe via Stack)
-   HBASE-1289  Remove "hbase.fully.distributed" option and update docs
-               (Nitay Joffe via Stack)
-   HBASE-1234  Change HBase StoreKey format
-   HBASE-1348  Move 0.20.0 targeted TRUNK to 0.20.0 hadoop
-               (Ryan Rawson and Stack)
-   HBASE-1342  Add to filesystem info needed to rebuild .META.
-   HBASE-1361  Disable bloom filters
-   HBASE-1367  Get rid of Thrift exception 'NotFound'
-   HBASE-1381  Remove onelab and bloom filters files from hbase
-   HBASE-1411  Remove HLogEdit.
-   HBASE-1357  If one sets the hbase.master to 0.0.0.0 non local regionservers
-               can't find the master
-   HBASE-1304  New client server implementation of how gets and puts are
-               handled (holstad, jgray, rawson, stack)
-   HBASE-1582  Translate ColumnValueFilter and RowFilterSet to the new
-               Filter interface (Clint Morgan and Stack)
-   HBASE-1599  Fix TestFilterSet, broken up on hudson (Jon Gray via Stack)
-   HBASE-1799  deprecate o.a.h.h.rest in favor of stargate
-
-  BUG FIXES
-   HBASE-1140  "ant clean test" fails (Nitay Joffe via Stack)
-   HBASE-1129  Master won't go down; stuck joined on rootScanner
-   HBASE-1136  HashFunction inadvertently destroys some randomness
-               (Jonathan Ellis via Stack)
-   HBASE-1138  Test that readers opened after a sync can see all data up to the
-               sync (temporary until HADOOP-4379 is resolved)
-   HBASE-1121  Cluster confused about where -ROOT- is
-   HBASE-1148  Always flush HLog on root or meta region updates
-   HBASE-1181  src/saveVersion.sh bails on non-standard Bourne shells
-               (e.g. dash) (K M via Jean-Daniel Cryans)
-   HBASE-1175  HBA administrative tools do not work when specifying region
-               name (Jonathan Gray via Andrew Purtell)
-   HBASE-1190  TableInputFormatBase with row filters scan too far (Dave
-               Latham via Andrew Purtell)
-   HBASE-1198  OOME in IPC server does not trigger abort behavior
-   HBASE-1209  Make port displayed the same as is used in URL for RegionServer
-               table in UI (Lars George via Stack)
-   HBASE-1217  add new compression and hfile blocksize to HColumnDescriptor
-   HBASE-859   HStoreKey needs a reworking
-   HBASE-1211  NPE in retries exhausted exception
-   HBASE-1233  Transactional fixes: Overly conservative scan read-set,
-               potential CME (Clint Morgan via Stack)
-   HBASE-1239  in the REST interface does not correctly clear the character
-               buffer each iteration-1185  wrong request/sec in the gui
-               reporting wrong (Brian Beggs via Stack)
-   HBASE-1245  hfile meta block handling bugs (Ryan Rawson via Stack)
-   HBASE-1238  Under upload, region servers are unable
-               to compact when loaded with hundreds of regions
-   HBASE-1247  checkAndSave doesn't Write Ahead Log
-   HBASE-1243  oldlogfile.dat is screwed, so is it's region
-   HBASE-1169  When a shutdown is requested, stop scanning META regions
-               immediately
-   HBASE-1251  HConnectionManager.getConnection(HBaseConfiguration) returns 
-               same HConnection for different HBaseConfigurations 
-   HBASE-1157, HBASE-1156 If we do not take start code as a part of region
-               server recovery, we could inadvertantly try to reassign regions
-               assigned to a restarted server with a different start code;
-               Improve lease handling
-   HBASE-1267  binary keys broken in trunk (again) -- part 2 and 3
-               (Ryan Rawson via Stack)
-   HBASE-1268  ZooKeeper config parsing can break HBase startup
-               (Nitay Joffe via Stack)
-   HBASE-1270  Fix TestInfoServers (Nitay Joffe via Stack)
-   HBASE-1277  HStoreKey: Wrong comparator logic (Evgeny Ryabitskiy)
-   HBASE-1275  TestTable.testCreateTable broken (Ryan Rawson via Stack)
-   HBASE-1274  TestMergeTable is broken in Hudson (Nitay Joffe via Stack)
-   HBASE-1283  thrift's package descrpition needs to update for start/stop
-               procedure (Rong-en Fan via Stack)
-   HBASE-1284  drop table drops all disabled tables
-   HBASE-1290  table.jsp either 500s out or doesnt list the regions (Ryan
-               Rawson via Andrew Purtell)
-   HBASE-1293  hfile doesn't recycle decompressors (Ryan Rawson via Andrew
-               Purtell)
-   HBASE-1150  HMsg carries safemode flag; remove (Nitay Joffe via Stack)
-   HBASE-1232  zookeeper client wont reconnect if there is a problem (Nitay
-               Joffe via Andrew Purtell)
-   HBASE-1303  Secondary index configuration prevents HBase from starting
-               (Ken Weiner via Stack)
-   HBASE-1298  master.jsp & table.jsp do not URI Encode table or region
-               names in links (Lars George via Stack)
-   HBASE-1310  Off by one error in Bytes.vintToBytes
-   HBASE-1202  getRow does not always work when specifying number of versions
-   HBASE-1324  hbase-1234 broke testget2 unit test (and broke the build)
-   HBASE-1321  hbase-1234 broke TestCompaction; fix and reenable
-   HBASE-1330  binary keys broken on trunk (Ryan Rawson via Stack)
-   HBASE-1332  regionserver carrying .META. starts sucking all cpu, drives load
-               up - infinite loop? (Ryan Rawson via Stack)
-   HBASE-1334  .META. region running into hfile errors (Ryan Rawson via Stack)
-   HBASE-1338  lost use of compaction.dir; we were compacting into live store
-               subdirectory
-   HBASE-1058  Prevent runaway compactions
-   HBASE-1292  php thrift's getRow() would throw an exception if the row does
-               not exist (Rong-en Fan via Stack)
-   HBASE-1340  Fix new javadoc warnings (Evgeny Ryabitskiy via Stack)
-   HBASE-1287  Partitioner class not used in TableMapReduceUtil
-               .initTableReduceJob() (Lars George and Billy Pearson via Stack)
-   HBASE-1320  hbase-1234 broke filter tests
-   HBASE-1355  [performance] Cache family maxversions; we were calculating on
-               each access
-   HBASE-1358  Bug in reading from Memcache method (read only from snapshot)
-               (Evgeny Ryabitskiy via Stack)
-   HBASE-1322  hbase-1234 broke TestAtomicIncrement; fix and reenable
-               (Evgeny Ryabitskiy and Ryan Rawson via Stack)
-   HBASE-1347  HTable.incrementColumnValue does not take negative 'amount'
-               (Evgeny Ryabitskiy via Stack)
-   HBASE-1365  Typo in TableInputFormatBase.setInputColums (Jon Gray via Stack)
-   HBASE-1279  Fix the way hostnames and IPs are handled
-   HBASE-1368  HBASE-1279 broke the build
-   HBASE-1264  Wrong return values of comparators for ColumnValueFilter
-               (Thomas Schneider via Andrew Purtell)
-   HBASE-1374  NPE out of ZooKeeperWrapper.loadZooKeeperConfig
-   HBASE-1336  Splitting up the compare of family+column into 2 different
-               compare 
-   HBASE-1377  RS address is null in master web UI
-   HBASE-1344  WARN IllegalStateException: Cannot set a region as open if it
-               has not been pending
-   HBASE-1386  NPE in housekeeping
-   HBASE-1396  Remove unused sequencefile and mapfile config. from
-               hbase-default.xml
-   HBASE-1398  TableOperation doesnt format keys for meta scan properly
-               (Ryan Rawson via Stack)
-   HBASE-1399  Can't drop tables since HBASE-1398 (Ryan Rawson via Andrew
-               Purtell)
-   HBASE-1311  ZooKeeperWrapper: Failed to set watcher on ZNode /hbase/master
-               (Nitay Joffe via Stack)
-   HBASE-1391  NPE in TableInputFormatBase$TableRecordReader.restart if zoo.cfg
-               is wrong or missing on task trackers
-   HBASE-1323  hbase-1234 broke TestThriftServer; fix and reenable
-   HBASE-1425  ColumnValueFilter and WhileMatchFilter fixes on trunk
-               (Clint Morgan via Stack)
-   HBASE-1431  NPE in HTable.checkAndSave when row doesn't exist (Guilherme
-               Mauro Germoglio Barbosa via Andrew Purtell)
-   HBASE-1421  Processing a regionserver message -- OPEN, CLOSE, SPLIT, etc. --
-               and if we're carrying more than one message in payload, if
-               exception, all messages that follow are dropped on floor
-   HBASE-1434  Duplicate property in hbase-default.xml (Lars George via Andrew
-               Purtell)
-   HBASE-1435  HRegionServer is using wrong info bind address from
-               hbase-site.xml (Lars George via Stack)
-   HBASE-1438  HBASE-1421 broke the build (#602 up on hudson)
-   HBASE-1440  master won't go down because joined on a rootscanner that is
-               waiting for ever
-   HBASE-1441  NPE in ProcessRegionStatusChange#getMetaRegion
-   HBASE-1162  CME in Master in RegionManager.applyActions
-   HBASE-1010  IOE on regionserver shutdown because hadn't opened an HLog
-   HBASE-1415  Stuck on memcache flush
-   HBASE-1257  base64 encoded values are not contained in quotes during the
-               HBase REST JSON serialization (Brian Beggs via Stack)
-   HBASE-1436  Killing regionserver can make corrupted hfile
-   HBASE-1272  Unreadable log messages -- "... to the only server
-               localhost_1237525439599_56094" <- You'd have to be perverse
-               to recognize that as a hostname, startcode, and port
-   HBASE-1395  InfoServers no longer put up a UI
-   HBASE-1302  When a new master comes up, regionservers should continue with
-               their region assignments from the last master
-   HBASE-1457  Taking down ROOT/META regionserver can result in cluster
-               becoming in-operational (Ryan Rawson via Stack)
-   HBASE-1471  During cluster shutdown, deleting zookeeper regionserver nodes
-               causes exceptions
-   HBASE-1483  HLog split loses track of edits (Clint Morgan via Stack)
-   HBASE-1484  commit log split writes files with newest edits first
-               (since hbase-1430); should be other way round
-   HBASE-1493  New TableMapReduceUtil methods should be static (Billy Pearson
-               via Andrew Purtell)
-   HBASE-1486  BLOCKCACHE always on even when disabled (Lars George via Stack)
-   HBASE-1491  ZooKeeper errors: "Client has seen zxid 0xe our last zxid
-               is 0xd"
-   HBASE-1499  Fix javadoc warnings after HBASE-1304 commit (Lars George via
-               Stack)
-   HBASE-1504  Remove left-over debug from 1304 commit
-   HBASE-1518  Delete Trackers using compareRow, should just use raw
-               binary comparator (Jon Gray via Stack)
-   HBASE-1500  KeyValue$KeyComparator array overrun
-   HBASE-1513  Compactions too slow
-   HBASE-1516  Investigate if StoreScanner will not return the next row if 
-               earlied-out of previous row (Jon Gray)
-   HBASE-1520  StoreFileScanner catches and ignore IOExceptions from HFile
-   HBASE-1522  We delete splits before their time occasionally
-   HBASE-1523  NPE in BaseScanner
-   HBASE-1525  HTable.incrementColumnValue hangs()
-   HBASE-1526  mapreduce fixup
-   HBASE-1503  hbase-1304 dropped updating list of store files on flush
-               (jgray via stack)
-   HBASE-1480  compaction file not cleaned up after a crash/OOME server
-               (Evgeny Ryabitskiy via Stack)
-   HBASE-1529  familyMap not invalidated when a Result is (re)read as a
-               Writable
-   HBASE-1528  Ensure scanners work across memcache snapshot
-   HBASE-1447  Take last version of the hbase-1249 design doc. and make
-               documentation out of it
-   HBASE-1206  Scanner spins when there are concurrent inserts to column family
-   HBASE-1536  Controlled crash of regionserver not hosting meta/root leaves
-               master in spinning state, regions not reassigned
-   HBASE-1543  Unnecessary toString during scanning costs us some CPU
-   HBASE-1544  Cleanup HTable (Jonathan Gray via Stack)
-   HBASE-1488  After 1304 goes in, fix and reenable test of thrift, mr indexer,
-               and merge tool
-   HBASE-1531  Change new Get to use new filter API
-   HBASE-1549  in zookeeper.sh, use localhost instead of 127.0.0.1
-   HBASE-1534  Got ZooKeeper event, state: Disconnected on HRS and then NPE on
-               reinit
-   HBASE-1387  Before release verify all object sizes using Ryans' instrumented
-               JVM trick (Erik Holstad via Stack)
-   HBASE-1545  atomicIncrements creating new values with Long.MAX_VALUE
-   HBASE-1547  atomicIncrement doesnt increase hregion.memcacheSize
-   HBASE-1553  ClassSize missing in trunk
-   HBASE-1561  HTable Mismatch between javadoc and what it actually does
-   HBASE-1558  deletes use 'HConstants.LATEST_TIMESTAMP' but no one translates
-               that into 'now'
-   HBASE-1508  Shell "close_region" reveals a Master<>HRS problem, regions are
-               not reassigned
-   HBASE-1568  Client doesnt consult old row filter interface in
-               filterSaysStop() - could result in NPE or excessive scanning
-   HBASE-1564  in UI make host addresses all look the same -- not IP sometimes
-               and host at others
-   HBASE-1567  cant serialize new filters
-   HBASE-1585  More binary key/value log output cleanup
-               (Lars George via Stack)
-   HBASE-1563  incrementColumnValue does not write to WAL (Jon Gray via Stack)
-   HBASE-1569  rare race condition can take down a regionserver
-   HBASE-1450  Scripts passed to hbase shell do not have shell context set up
-               for them
-   HBASE-1566  using Scan(startRow,stopRow) will cause you to iterate the
-               entire table
-   HBASE-1560  TIF can't seem to find one region
-   HBASE-1580  Store scanner does not consult filter.filterRow at end of scan
-               (Clint Morgan via Stack)
-   HBASE-1437  broken links in hbase.org
-   HBASE-1582  Translate ColumnValueFilter and RowFilterSet to the new Filter
-               interface
-   HBASE-1594  Fix scan addcolumns after hbase-1385 commit (broke hudson build)
-   HBASE-1595  hadoop-default.xml and zoo.cfg in hbase jar
-   HBASE-1602  HRegionServer won't go down since we added in new LruBlockCache
-   HBASE-1608  TestCachedBlockQueue failing on some jvms (Jon Gray via Stack)
-   HBASE-1615  HBASE-1597 introduced a bug when compacting after a split
-               (Jon Gray via Stack)
-   HBASE-1616  Unit test of compacting referenced StoreFiles (Jon Gray via
-               Stack)
-   HBASE-1618  Investigate further into the MemStoreFlusher StoreFile limit
-               (Jon Gray via Stack)
-   HBASE-1625  Adding check to Put.add(KeyValue), to see that it has the same
-               row as when instantiated (Erik Holstad via Stack)
-   HBASE-1629  HRS unable to contact master
-   HBASE-1633  Can't delete in TRUNK shell; makes it hard doing admin repairs
-   HBASE-1641  Stargate build.xml causes error in Eclipse
-   HBASE-1627  TableInputFormatBase#nextKeyValue catches the wrong exception
-               (Doğacan Güney via Stack)
-   HBASE-1644  Result.row is cached in getRow; this breaks MapReduce
-               (Doğacan Güney via Stack)
-   HBASE-1639  clean checkout with empty hbase-site.xml, zk won't start
-   HBASE-1646  Scan-s can't set a Filter (Doğacan Güney via Stack)
-   HBASE-1649  ValueFilter may not reset its internal state
-               (Doğacan Güney via Stack)
-   HBASE-1651  client is broken, it requests ROOT region location from ZK too
-               much
-   HBASE-1650  HBASE-1551 broke the ability to manage non-regionserver
-               start-up/shut down. ie: you cant start/stop thrift on a cluster
-               anymore
-   HBASE-1658  Remove UI refresh -- its annoying
-   HBASE-1659  merge tool doesnt take binary regions with \x escape format
-   HBASE-1663  Request compaction only once instead of every time 500ms each
-               time we cycle the hstore.getStorefilesCount() >
-               this.blockingStoreFilesNumber loop
-   HBASE-1058  Disable 1058 on catalog tables
-   HBASE-1583  Start/Stop of large cluster untenable
-   HBASE-1668  hbase-1609 broke TestHRegion.testScanSplitOnRegion unit test
-   HBASE-1669  need dynamic extensibility of HBaseRPC code maps and interface
-               lists (Clint Morgan via Stack)
-   HBASE-1359  After a large truncating table HBase becomes unresponsive
-   HBASE-1215  0.19.0 -> 0.20.0 migration (hfile, HCD changes, HSK changes)
-   HBASE-1689  Fix javadoc warnings and add overview on client classes to
-               client package
-   HBASE-1680  FilterList writable only works for HBaseObjectWritable
-               defined types (Clint Morgan via Stack and Jon Gray)
-   HBASE-1607  transactions / indexing fixes: trx deletes not handeled, index
-               scan can't specify stopRow (Clint Morgan via Stack)
-   HBASE-1693  NPE close_region ".META." in shell
-   HBASE-1706  META row with missing HRI breaks UI
-   HBASE-1709  Thrift getRowWithColumns doesn't accept column-family only
-               (Mathias Lehmann via Stack)
-   HBASE-1692  Web UI is extremely slow / freezes up if you have many tables
-   HBASE-1686  major compaction can create empty store files, causing AIOOB
-               when trying to read
-   HBASE-1705  Thrift server: deletes in mutateRow/s don't delete
-               (Tim Sell and Ryan Rawson via Stack)
-   HBASE-1703  ICVs across /during a flush can cause multiple keys with the 
-               same TS (bad)
-   HBASE-1671  HBASE-1609 broke scanners riding across splits
-   HBASE-1717  Put on client-side uses passed-in byte[]s rather than always
-               using copies
-   HBASE-1647  Filter#filterRow is called too often, filters rows it shouldn't
-               have (Doğacan Güney via Ryan Rawson and Stack)
-   HBASE-1718  Reuse of KeyValue during log replay could cause the wrong
-               data to be used
-   HBASE-1573  Holes in master state change; updated startcode and server
-               go into .META. but catalog scanner just got old values (redux)
-   HBASE-1534  Got ZooKeeper event, state: Disconnected on HRS and then NPE
-               on reinit
-   HBASE-1725  Old TableMap interface's definitions are not generic enough
-               (Doğacan Güney via Stack)
-   HBASE-1732  Flag to disable regionserver restart
-   HBASE-1727  HTD and HCD versions need update
-   HBASE-1604  HBaseClient.getConnection() may return a broken connection
-               without throwing an exception (Eugene Kirpichov via Stack)
-   HBASE-1737  Regions unbalanced when adding new node
-   HBASE-1739  hbase-1683 broke splitting; only split three logs no matter
-               what N was
-   HBASE-1745  [tools] Tool to kick region out of inTransistion
-   HBASE-1757  REST server runs out of fds
-   HBASE-1768  REST server has upper limit of 5k PUT
-   HBASE-1766  Add advanced features to HFile.main() to be able to analyze
-               storefile problems
-   HBASE-1761  getclosest doesn't understand delete family; manifests as
-               "HRegionInfo was null or empty in .META" A.K.A the BS problem
-   HBASE-1738  Scanner doesnt reset when a snapshot is created, could miss
-               new updates into the 'kvset' (active part)
-   HBASE-1767  test zookeeper broken in trunk and 0.20 branch; broken on
-               hudson too
-   HBASE-1780  HTable.flushCommits clears write buffer in finally clause
-   HBASE-1784  Missing rows after medium intensity insert
-   HBASE-1809  NPE thrown in BoundedRangeFileInputStream
-   HBASE-1810  ConcurrentModificationException in region assignment
-               (Mathias Herberts via Stack)
-   HBASE-1804  Puts are permitted (and stored) when including an appended colon
-   HBASE-1715  Compaction failure in ScanWildcardColumnTracker.checkColumn
-   HBASE-2352  Small values for hbase.client.retries.number and
-               ipc.client.connect.max.retries breaks long ops in hbase shell
-               (Alexey Kovyrin via Stack)
-   HBASE-2531  32-bit encoding of regionnames waaaaaaayyyyy too susceptible to
-               hash clashes (Kannan Muthukkaruppan via Stack)
-
-  IMPROVEMENTS
-   HBASE-1089  Add count of regions on filesystem to master UI; add percentage
-               online as difference between whats open and whats on filesystem
-               (Samuel Guo via Stack)
-   HBASE-1130  PrefixRowFilter (Michael Gottesman via Stack)
-   HBASE-1139  Update Clover in build.xml
-   HBASE-876   There are a large number of Java warnings in HBase; part 1,
-               part 2, part 3, part 4, part 5, part 6, part 7 and part 8
-               (Evgeny Ryabitskiy via Stack)
-   HBASE-896   Update jruby from 1.1.2 to 1.1.6
-   HBASE-1031  Add the Zookeeper jar
-   HBASE-1142  Cleanup thrift server; remove Text and profuse DEBUG messaging
-               (Tim Sell via Stack)
-   HBASE-1064  HBase REST xml/json improvements (Brian Beggs working of
-               initial Michael Gottesman work via Stack)
-   HBASE-5121  Fix shell usage for format.width
-   HBASE-845   HCM.isTableEnabled doesn't really tell if it is, or not
-   HBASE-903   [shell] Can't set table descriptor attributes when I alter a
-               table
-   HBASE-1166  saveVersion.sh doesn't work with git (Nitay Joffe via Stack)
-   HBASE-1167  JSP doesn't work in a git checkout (Nitay Joffe via Andrew
-               Purtell)
-   HBASE-1178  Add shutdown command to shell
-   HBASE-1184  HColumnDescriptor is too restrictive with family names
-               (Toby White via Andrew Purtell)
-   HBASE-1180  Add missing import statements to SampleUploader and remove
-               unnecessary @Overrides (Ryan Smith via Andrew Purtell)
-   HBASE-1191  ZooKeeper ensureParentExists calls fail 
-               on absolute path (Nitay Joffe via Jean-Daniel Cryans)
-   HBASE-1187  After disabling/enabling a table, the regions seems to 
-               be assigned to only 1-2 region servers
-   HBASE-1210  Allow truncation of output for scan and get commands in shell
-               (Lars George via Stack)
-   HBASE-1221  When using ant -projecthelp to build HBase not all the important
-               options show up (Erik Holstad via Stack)
-   HBASE-1189  Changing the map type used internally for HbaseMapWritable
-               (Erik Holstad via Stack)
-   HBASE-1188  Memory size of Java Objects - Make cacheable objects implement
-               HeapSize (Erik Holstad via Stack)
-   HBASE-1230  Document installation of HBase on Windows
-   HBASE-1241  HBase additions to ZooKeeper part 1 (Nitay Joffe via JD)
-   HBASE-1231  Today, going from a RowResult to a BatchUpdate reqiures some
-               data processing even though they are pretty much the same thing
-               (Erik Holstad via Stack)
-   HBASE-1240  Would be nice if RowResult could be comparable
-               (Erik Holstad via Stack)
-   HBASE-803   Atomic increment operations (Ryan Rawson and Jon Gray via Stack)
-               Part 1 and part 2 -- fix for a crash.
-   HBASE-1252  Make atomic increment perform a binary increment
-               (Jonathan Gray via Stack)
-   HBASE-1258,1259 ganglia metrics for 'requests' is confusing
-               (Ryan Rawson via Stack)
-   HBASE-1265  HLogEdit static constants should be final (Nitay Joffe via
-               Stack)
-   HBASE-1244  ZooKeeperWrapper constants cleanup (Nitay Joffe via Stack)
-   HBASE-1262  Eclipse warnings, including performance related things like
-               synthetic accessors (Nitay Joffe via Stack)
-   HBASE-1273  ZooKeeper WARN spits out lots of useless messages
-               (Nitay Joffe via Stack)
-   HBASE-1285  Forcing compactions should be available via thrift
-               (Tim Sell via Stack)
-   HBASE-1186  Memory-aware Maps with LRU eviction for cell cache 
-               (Jonathan Gray via Andrew Purtell)
-   HBASE-1205  RegionServers should find new master when a new master comes up
-               (Nitay Joffe via Andrew Purtell)
-   HBASE-1309  HFile rejects key in Memcache with empty value
-   HBASE-1331  Lower the default scanner caching value
-   HBASE-1235  Add table enabled status to shell and UI
-               (Lars George via Stack)
-   HBASE-1333  RowCounter updates
-   HBASE-1195  If HBase directory exists but version file is inexistent, still
-               proceed with bootstrapping (Evgeny Ryabitskiy via Stack)
-   HBASE-1301  HTable.getRow() returns null if the row does no exist
-               (Rong-en Fan via Stack)
-   HBASE-1176  Javadocs in HBA should be clear about which functions are
-               asynchronous and which are synchronous
-               (Evgeny Ryabitskiy via Stack)
-   HBASE-1260  Bytes utility class changes: remove usage of ByteBuffer and
-               provide additional ByteBuffer primitives (Jon Gray via Stack)
-   HBASE-1183  New MR splitting algorithm and other new features need a way to
-               split a key range in N chunks (Jon Gray via Stack)
-   HBASE-1350  New method in HTable.java to return start and end keys for
-               regions in a table (Vimal Mathew via Stack)
-   HBASE-1271  Allow multiple tests to run on one machine
-               (Evgeny Ryabitskiy via Stack)
-   HBASE-1112  we will lose data if the table name happens to be the logs' dir
-               name (Samuel Guo via Stack)
-   HBASE-889   The current Thrift API does not allow a new scanner to be
-               created without supplying a column list unlike the other APIs.
-               (Tim Sell via Stack)
-   HBASE-1341  HTable pooler
-   HBASE-1379  re-enable LZO using hadoop-gpl-compression library
-               (Ryan Rawson via Stack)
-   HBASE-1383  hbase shell needs to warn on deleting multi-region table
-   HBASE-1286  Thrift should support next(nbRow) like functionality
-               (Alex Newman via Stack)
-   HBASE-1392  change how we build/configure lzocodec (Ryan Rawson via Stack)
-   HBASE-1397  Better distribution in the PerformanceEvaluation MapReduce
-               when rows run to the Billions
-   HBASE-1393  Narrow synchronization in HLog
-   HBASE-1404  minor edit of regionserver logging messages
-   HBASE-1405  Threads.shutdown has unnecessary branch
-   HBASE-1407  Changing internal structure of ImmutableBytesWritable
-               contructor (Erik Holstad via Stack)
-   HBASE-1345  Remove distributed mode from MiniZooKeeper (Nitay Joffe via
-               Stack)
-   HBASE-1414  Add server status logging chore to ServerManager
-   HBASE-1379  Make KeyValue implement Writable
-               (Erik Holstad and Jon Gray via Stack)
-   HBASE-1380  Make KeyValue implement HeapSize
-               (Erik Holstad and Jon Gray via Stack)
-   HBASE-1413  Fall back to filesystem block size default if HLog blocksize is
-               not specified
-   HBASE-1417  Cleanup disorientating RPC message
-   HBASE-1424  have shell print regioninfo and location on first load if
-               DEBUG enabled
-   HBASE-1008  [performance] The replay of logs on server crash takes way too
-               long
-   HBASE-1394  Uploads sometimes fall to 0 requests/second (Binding up on
-               HLog#append?)
-   HBASE-1429  Allow passing of a configuration object to HTablePool
-   HBASE-1432  LuceneDocumentWrapper is not public
-   HBASE-1401  close HLog (and open new one) if there hasnt been edits in N
-               minutes/hours
-   HBASE-1420  add abliity to add and remove (table) indexes on existing
-               tables (Clint Morgan via Stack)
-   HBASE-1430  Read the logs in batches during log splitting to avoid OOME
-   HBASE-1017  Region balancing does not bring newly added node within
-               acceptable range (Evgeny Ryabitskiy via Stack)
-   HBASE-1454  HBaseAdmin.getClusterStatus
-   HBASE-1236  Improve readability of table descriptions in the UI
-               (Lars George and Alex Newman via Stack)
-   HBASE-1455  Update DemoClient.py for thrift 1.0 (Tim Sell via Stack)
-   HBASE-1464  Add hbase.regionserver.logroll.period to hbase-default
-   HBASE-1192  LRU-style map for the block cache (Jon Gray and Ryan Rawson
-               via Stack)
-   HBASE-1466  Binary keys are not first class citizens
-               (Ryan Rawson via Stack)
-   HBASE-1445  Add the ability to start a master from any machine
-   HBASE-1474  Add zk attributes to list of attributes 
-               in master and regionserver UIs
-   HBASE-1448  Add a node in ZK to tell all masters to shutdown
-   HBASE-1478  Remove hbase master options from shell (Nitay Joffe via Stack)
-   HBASE-1462  hclient still seems to depend on master
-   HBASE-1143  region count erratic in master UI
-   HBASE-1490  Update ZooKeeper library
-   HBASE-1489  Basic git ignores for people who use git and eclipse
-   HBASE-1453  Add HADOOP-4681 to our bundled hadoop, add to 'gettting started'
-               recommendation that hbase users backport 
-   HBASE-1507  iCMS as default JVM
-   HBASE-1509  Add explanation to shell "help" command on how to use binarykeys
-               (Lars George via Stack)
-   HBASE-1514  hfile inspection tool
-   HBASE-1329  Visibility into ZooKeeper
-   HBASE-867   If millions of columns in a column family, hbase scanner won't
-               come up (Jonathan Gray via Stack)
-   HBASE-1538  Up zookeeper timeout from 10 seconds to 30 seconds to cut down
-               on hbase-user traffic
-   HBASE-1539  prevent aborts due to missing zoo.cfg
-   HBASE-1488  Fix TestThriftServer and re-enable it
-   HBASE-1541  Scanning multiple column families in the presence of deleted 
-               families results in bad scans
-   HBASE-1540  Client delete unit test, define behavior
-               (Jonathan Gray via Stack)
-   HBASE-1552  provide version running on cluster via getClusterStatus
-   HBASE-1550  hbase-daemon.sh stop should provide more information when stop
-               command fails
-   HBASE-1515  Address part of config option hbase.regionserver unnecessary
-   HBASE-1532  UI Visibility into ZooKeeper
-   HBASE-1572  Zookeeper log4j property set to ERROR on default, same output
-               when cluster working and not working (Jon Gray via Stack)
-   HBASE-1576  TIF needs to be able to set scanner caching size for smaller
-               row tables & performance
-   HBASE-1577  Move memcache to ConcurrentSkipListMap from
-               ConcurrentSkipListSet
-   HBASE-1578  Change the name of the in-memory updates from 'memcache' to
-               'memtable' or....
-   HBASE-1562  How to handle the setting of 32 bit versus 64 bit machines
-               (Erik Holstad via Stack)
-   HBASE-1584  Put add methods should return this for ease of use (Be
-               consistant with Get) (Clint Morgan via Stack)
-   HBASE-1581  Run major compaction on .META. when table is dropped or
-               truncated
-   HBASE-1587  Update ganglia config and doc to account for ganglia 3.1 and
-               hadoop-4675
-   HBASE-1589  Up zk maxClientCnxns from default of 10 to 20 or 30 or so
-   HBASE-1385  Revamp TableInputFormat, needs updating to match hadoop 0.20.x
-               AND remove bit where we can make < maps than regions
-               (Lars George via Stack)
-   HBASE-1596  Remove WatcherWrapper and have all users of Zookeeper provide a
-               Watcher
-   HBASE-1597  Prevent unnecessary caching of blocks during compactions
-               (Jon Gray via Stack)
-   HBASE-1607  Redo MemStore heap sizing to be accurate, testable, and more
-               like new LruBlockCache (Jon Gray via Stack)
-   HBASE-1218  Implement in-memory column (Jon Gray via Stack)
-   HBASE-1606  Remove zoo.cfg, put config options into hbase-site.xml
-   HBASE-1575  HMaster does not handle ZK session expiration
-   HBASE-1620  Need to use special StoreScanner constructor for major
-               compactions (passed sf, no caching, etc) (Jon Gray via Stack)
-   HBASE-1624  Don't sort Puts if only one in list in HCM#processBatchOfRows
-   HBASE-1626  Allow emitting Deletes out of new TableReducer
-               (Lars George via Stack)
-   HBASE-1551  HBase should manage multiple node ZooKeeper quorum
-   HBASE-1637  Delete client class methods should return itself like Put, Get,
-               Scan (Jon Gray via Nitay)
-   HBASE-1640  Allow passing arguments to jruby script run when run by hbase
-               shell
-   HBASE-698   HLog recovery is not performed after master failure
-   HBASE-1643  ScanDeleteTracker takes comparator but it unused
-   HBASE-1603  MR failed "RetriesExhaustedException: Trying to contact region
-               server Some server for region TestTable..." -- deubugging
-   HBASE-1470  hbase and HADOOP-4379, dhruba's flush/sync
-   HBASE-1632  Write documentation for configuring/managing ZooKeeper
-   HBASE-1662  Tool to run major compaction on catalog regions when hbase is
-               shutdown
-   HBASE-1665  expose more load information to the client side
-   HBASE-1609  We wait on leases to expire before regionserver goes down.
-               Rather, just let client fail
-   HBASE-1655  Usability improvements to HTablePool (Ken Weiner via jgray)
-   HBASE-1688  Improve javadocs in Result and KeyValue
-   HBASE-1694  Add TOC to 'Getting Started', add references to THBase and
-               ITHBase
-   HBASE-1699  Remove hbrep example as it's too out of date
-               (Tim Sell via Stack)
-   HBASE-1683  OOME on master splitting logs; stuck, won't go down
-   HBASE-1704  Better zk error when failed connect
-   HBASE-1714  Thrift server: prefix scan API
-   HBASE-1719  hold a reference to the region in stores instead of only the
-               region info
-   HBASE-1743  [debug tool] Add regionsInTransition list to ClusterStatus
-               detailed output
-   HBASE-1772  Up the default ZK session timeout from 30seconds to 60seconds
-   HBASE-2625  Make testDynamicBloom()'s "randomness" deterministic
-               (Nicolas Spiegelberg via Stack)
-
-  OPTIMIZATIONS
-   HBASE-1412  Change values for delete column and column family in KeyValue
-   HBASE-1535  Add client ability to perform mutations without the WAL
-               (Jon Gray via Stack)
-   HBASE-1460  Concurrent LRU Block Cache (Jon Gray via Stack)
-   HBASE-1635  PerformanceEvaluation should use scanner prefetching
-
-Release 0.19.0 - 01/21/2009
-  INCOMPATIBLE CHANGES
-   HBASE-885   TableMap and TableReduce should be interfaces
-               (Doğacan Güney via Stack)
-   HBASE-905   Remove V5 migration classes from 0.19.0 (Jean-Daniel Cryans via
-               Jim Kellerman)
-   HBASE-852   Cannot scan all families in a row with a LIMIT, STARTROW, etc.
-               (Izaak Rubin via Stack)
-   HBASE-953   Enable BLOCKCACHE by default [WAS -> Reevaluate HBASE-288 block
-               caching work....?] -- Update your hbase-default.xml file!
-   HBASE-636   java6 as a requirement
-   HBASE-994   IPC interfaces with different versions can cause problems
-   HBASE-1028  If key does not exist, return null in getRow rather than an
-               empty RowResult
-   HBASE-1134  OOME in HMaster when HBaseRPC is older than 0.19
-
-  BUG FIXES
-   HBASE-891   HRS.validateValuesLength throws IOE, gets caught in the retries
-   HBASE-892   Cell iteration is broken (Doğacan Güney via Jim Kellerman)
-   HBASE-898   RowResult.containsKey(String) doesn't work
-               (Doğacan Güney via Jim Kellerman)
-   HBASE-906   [shell] Truncates output
-   HBASE-912   PE is broken when other tables exist
-   HBASE-853   [shell] Cannot describe meta tables (Izaak Rubin via Stack)
-   HBASE-844   Can't pass script to hbase shell 
-   HBASE-837   Add unit tests for ThriftServer.HBaseHandler (Izaak Rubin via
-               Stack)
-   HBASE-913   Classes using log4j directly
-   HBASE-914   MSG_REPORT_CLOSE has a byte array for a message
-   HBASE-918   Region balancing during startup makes cluster unstable
-   HBASE-921   region close and open processed out of order; makes for 
-               disagreement between master and regionserver on region state
-   HBASE-925   HRS NPE on way out if no master to connect to
-   HBASE-928   NPE throwing RetriesExhaustedException
-   HBASE-924   Update hadoop in lib on 0.18 hbase branch to 0.18.1
-   HBASE-929   Clarify that ttl in HColumnDescriptor is seconds
-   HBASE-930   RegionServer stuck: HLog: Could not append. Requesting close of
-               log java.io.IOException: Could not get block locations
-   HBASE-926   If no master, regionservers should hang out rather than fail on
-               connection and shut themselves down
-   HBASE-919   Master and Region Server need to provide root region location if
-               they are using HTable
-               With J-D's one line patch, test cases now appear to work and
-               PerformanceEvaluation works as before.
-   HBASE-939   NPE in HStoreKey
-   HBASE-945   Be consistent in use of qualified/unqualified mapfile paths
-   HBASE-946   Row with 55k deletes timesout scanner lease
-   HBASE-950   HTable.commit no longer works with existing RowLocks though it's
-               still in API
-   HBASE-952   Deadlock in HRegion.batchUpdate
-   HBASE-954   Don't reassign root region until ProcessServerShutdown has split
-               the former region server's log
-   HBASE-957   PerformanceEvaluation tests if table exists by comparing
-               descriptors
-   HBASE-728,  HBASE-956, HBASE-955 Address thread naming, which threads are
-               Chores, vs Threads, make HLog manager the write ahead log and
-               not extend it to provided optional HLog sync operations.
-   HBASE-970   Update the copy/rename scripts to go against change API
-   HBASE-966   HBASE-748 misses some writes
-   HBASE-971   Fix the failing tests on Hudson
-   HBASE-973   [doc] In getting started, make it clear that hbase needs to
-               create its directory in hdfs
-   HBASE-963   Fix the retries in HTable.flushCommit
-   HBASE-969   Won't when storefile > 2G.
-   HBASE-976   HADOOP 0.19.0 RC0 is broke; replace with HEAD of branch-0.19
-   HBASE-977   Arcane HStoreKey comparator bug
-   HBASE-979   REST web app is not started automatically
-   HBASE-980   Undo core of HBASE-975, caching of start and end row
-   HBASE-982   Deleting a column in MapReduce fails (Doğacan Güney via
-               Stack)
-   HBASE-984   Fix javadoc warnings
-   HBASE-985   Fix javadoc warnings
-   HBASE-951   Either shut down master or let it finish cleanup
-   HBASE-964   Startup stuck "waiting for root region"
-   HBASE-964, HBASE-678 provide for safe-mode without locking up HBase "waiting
-               for root region"
-   HBASE-990   NoSuchElementException in flushSomeRegions; took two attempts.
-   HBASE-602   HBase Crash when network card has a IPv6 address
-   HBASE-996   Migration script to up the versions in catalog tables
-   HBASE-991   Update the mapred package document examples so they work with
-               TRUNK/0.19.0.
-   HBASE-1003  If cell exceeds TTL but not VERSIONs, will not be removed during
-               major compaction
-   HBASE-1005  Regex and string comparison operators for ColumnValueFilter
-   HBASE-910   Scanner misses columns / rows when the scanner is obtained
-               during a memcache flush
-   HBASE-1009  Master stuck in loop wanting to assign but regions are closing
-   HBASE-1016  Fix example in javadoc overvie
-   HBASE-1021  hbase metrics FileContext not working
-   HBASE-1023  Check global flusher
-   HBASE-1036  HBASE-1028 broke Thrift
-   HBASE-1037  Some test cases failing on Windows/Cygwin but not UNIX/Linux
-   HBASE-1041  Migration throwing NPE
-   HBASE-1042  OOME but we don't abort; two part commit.
-   HBASE-927   We don't recover if HRS hosting -ROOT-/.META. goes down
-   HBASE-1029  REST wiki documentation incorrect
-               (Sishen Freecity via Stack)
-   HBASE-1043  Removing @Override attributes where they are no longer needed.
-               (Ryan Smith via Jim Kellerman)
-   HBASE-927   We don't recover if HRS hosting -ROOT-/.META. goes down -
-               (fix bug in createTable which caused tests to fail)
-   HBASE-1039  Compaction fails if bloomfilters are enabled
-   HBASE-1027  Make global flusher check work with percentages rather than
-               hard code memory sizes
-   HBASE-1000  Sleeper.sleep does not go back to sleep when interrupted
-               and no stop flag given.
-   HBASE-900   Regionserver memory leak causing OOME during relatively
-               modest bulk importing; part 1 and part 2
-   HBASE-1054  Index NPE on scanning (Clint Morgan via Andrew Purtell)
-   HBASE-1052  Stopping a HRegionServer with unflushed cache causes data loss
-               from org.apache.hadoop.hbase.DroppedSnapshotException
-   HBASE-1059  ConcurrentModificationException in notifyChangedReadersObservers
-   HBASE-1063  "File separator problem on Windows" (Max Lehn via Stack)
-   HBASE-1068  TestCompaction broken on hudson
-   HBASE-1067  TestRegionRebalancing broken by running of hdfs shutdown thread
-   HBASE-1070  Up default index interval in TRUNK and branch
-   HBASE-1045  Hangup by regionserver causes write to fail
-   HBASE-1079  Dumb NPE in ServerCallable hides the RetriesExhausted exception
-   HBASE-782   The DELETE key in the hbase shell deletes the wrong character
-               (Tim Sell via Stack)
-   HBASE-543,  HBASE-1046, HBase-1051 A region's state is kept in several places
-               in the master opening the possibility for race conditions
-   HBASE-1087  DFS failures did not shutdown regionserver
-   HBASE-1072  Change Thread.join on exit to a timed Thread.join
-   HBASE-1098  IllegalStateException: Cannot set a region to be closed it it
-               was not already marked as closing
-   HBASE-1100  HBASE-1062 broke TestForceSplit
-   HBASE-1191  shell tools -> close_region does not work for regions that did
-               not deploy properly on startup
-   HBASE-1093  NPE in HStore#compact
-   HBASE-1097  SequenceFile.Reader keeps around buffer whose size is that of
-               largest item read -> results in lots of dead heap
-   HBASE-1107  NPE in HStoreScanner.updateReaders
-   HBASE-1083  Will keep scheduling major compactions if last time one ran, we
-               didn't.
-   HBASE-1101  NPE in HConnectionManager$TableServers.processBatchOfRows
-   HBASE-1099  Regions assigned while master is splitting logs of recently
-               crashed server; regionserver tries to execute incomplete log
-   HBASE-1104, HBASE-1098, HBASE-1096: Doubly-assigned regions redux,
-               IllegalStateException: Cannot set a region to be closed it it was
-               not already marked as closing, Does not recover if HRS carrying 
-               -ROOT- goes down
-   HBASE-1114  Weird NPEs compacting
-   HBASE-1116  generated web.xml and svn don't play nice together
-   HBASE-1119  ArrayOutOfBoundsException in HStore.compact
-   HBASE-1121  Cluster confused about where -ROOT- is
-   HBASE-1125  IllegalStateException: Cannot set a region to be closed if it was
-               not already marked as pending close
-   HBASE-1124  Balancer kicks in way too early
-   HBASE-1127  OOME running randomRead PE
-   HBASE-1132  Can't append to HLog, can't roll log, infinite cycle (another
-               spin on HBASE-930)
-
-  IMPROVEMENTS
-   HBASE-901   Add a limit to key length, check key and value length on client side
-   HBASE-890   Alter table operation and also related changes in REST interface
-               (Sishen Freecity via Stack)
-   HBASE-894   [shell] Should be able to copy-paste table description to create
-               new table (Sishen Freecity via Stack)
-   HBASE-886, HBASE-895 Sort the tables in the web UI, [shell] 'list' command
-               should emit a sorted list of tables (Krzysztof Szlapinski via Stack)
-   HBASE-884   Double and float converters for Bytes class
-               (Doğacan Güney via Stack)
-   HBASE-908   Add approximate counting to CountingBloomFilter
-               (Andrzej Bialecki via Stack)
-   HBASE-920   Make region balancing sloppier
-   HBASE-902   Add force compaction and force split operations to UI and Admin
-   HBASE-942   Add convenience methods to RowFilterSet
-               (Clint Morgan via Stack)
-   HBASE-943   to ColumnValueFilter: add filterIfColumnMissing property, add
-               SubString operator (Clint Morgan via Stack)
-   HBASE-937   Thrift getRow does not support specifying columns
-               (Doğacan Güney via Stack)
-   HBASE-959   Be able to get multiple RowResult at one time from client side
-               (Sishen Freecity via Stack)
-   HBASE-936   REST Interface: enable get number of rows from scanner interface
-               (Sishen Freecity via Stack)
-   HBASE-960   REST interface: more generic column family configure and also
-               get Rows using offset and limit (Sishen Freecity via Stack)
-   HBASE-817   Hbase/Shell Truncate
-   HBASE-949   Add an HBase Manual
-   HBASE-839   Update hadoop libs in hbase; move hbase TRUNK on to an hadoop
-               0.19.0 RC
-   HBASE-785   Remove InfoServer, use HADOOP-3824 StatusHttpServer 
-               instead (requires hadoop 0.19)
-   HBASE-81    When a scanner lease times out, throw a more "user friendly" exception
-   HBASE-978   Remove BloomFilterDescriptor. It is no longer used.
-   HBASE-975   Improve MapFile performance for start and end key
-   HBASE-961   Delete multiple columns by regular expression
-               (Samuel Guo via Stack)
-   HBASE-722   Shutdown and Compactions
-   HBASE-983   Declare Perl namespace in Hbase.thrift
-   HBASE-987   We need a Hbase Partitioner for TableMapReduceUtil.initTableReduceJob
-               MR Jobs (Billy Pearson via Stack)
-   HBASE-993   Turn off logging of every catalog table row entry on every scan
-   HBASE-992   Up the versions kept by catalog tables; currently 1. Make it 10?
-   HBASE-998   Narrow getClosestRowBefore by passing column family
-   HBASE-999   Up versions on historian and keep history of deleted regions for a
-               while rather than delete immediately
-   HBASE-938   Major compaction period is not checked periodically
-   HBASE-947   [Optimization] Major compaction should remove deletes as well as
-               the deleted cell
-   HBASE-675   Report correct server hosting a table split for assignment to
-               for MR Jobs
-   HBASE-927   We don't recover if HRS hosting -ROOT-/.META. goes down
-   HBASE-1013  Add debugging around commit log cleanup
-   HBASE-972   Update hbase trunk to use released hadoop 0.19.0
-   HBASE-1022  Add storefile index size to hbase metrics
-   HBASE-1026  Tests in mapred are failing
-   HBASE-1020  Regionserver OOME handler should dump vital stats
-   HBASE-1018  Regionservers should report detailed health to master
-   HBASE-1034  Remove useless TestToString unit test
-   HBASE-1030  Bit of polish on HBASE-1018
-   HBASE-847   new API: HTable.getRow with numVersion specified
-               (Doğacan Güney via Stack)
-   HBASE-1048  HLog: Found 0 logs to remove out of total 1450; oldest
-               outstanding seqnum is 162297053 fr om region -ROOT-,,0
-   HBASE-1055  Better vm stats on startup
-   HBASE-1065  Minor logging improvements in the master
-   HBASE-1053  bring recent rpc changes down from hadoop
-   HBASE-1056  [migration] enable blockcaching on .META. table
-   HBASE-1069  Show whether HRegion major compacts or not in INFO level
-   HBASE-1066  Master should support close/open/reassignment/enable/disable
-               operations on individual regions
-   HBASE-1062  Compactions at (re)start on a large table can overwhelm DFS
-   HBASE-1102  boolean HTable.exists()
-   HBASE-1105  Remove duplicated code in HCM, add javadoc to RegionState, etc.
-   HBASE-1106  Expose getClosestRowBefore in HTable
-               (Michael Gottesman via Stack)
-   HBASE-1082  Administrative functions for table/region maintenance
-   HBASE-1090  Atomic Check And Save in HTable (Michael Gottesman via Stack)
-   HBASE-1137  Add not on xceivers count to overview documentation
-
-  NEW FEATURES
-   HBASE-875   Use MurmurHash instead of JenkinsHash [in bloomfilters]
-               (Andrzej Bialecki via Stack)
-   HBASE-625   Metrics support for cluster load history: emissions and graphs
-   HBASE-883   Secondary indexes (Clint Morgan via Andrew Purtell)
-   HBASE-728   Support for HLog appends
-
-  OPTIMIZATIONS
-   HBASE-748   Add an efficient way to batch update many rows
-   HBASE-887   Fix a hotspot in scanners
-   HBASE-967   [Optimization] Cache cell maximum length (HCD.getMaxValueLength);
-               its used checking batch size
-   HBASE-940   Make the TableOutputFormat batching-aware
-   HBASE-576   Investigate IPC performance
-
-Release 0.18.0 - September 21st, 2008
-
-  INCOMPATIBLE CHANGES
-   HBASE-697   Thrift idl needs update/edit to match new 0.2 API (and to fix bugs)
-               (Tim Sell via Stack)
-   HBASE-822   Update thrift README and HBase.thrift to use thrift 20080411
-               Updated all other languages examples (only python went in)
-
-  BUG FIXES
-   HBASE-881   Fixed bug when Master tries to reassign split or offline regions
-               from a dead server
-   HBASE-860   Fixed Bug in IndexTableReduce where it concerns writing lucene 
-               index fields.
-   HBASE-805   Remove unnecessary getRow overloads in HRS (Jonathan Gray via
-               Jim Kellerman) (Fix whitespace diffs in HRegionServer)
-   HBASE-811   HTD is not fully copyable (Andrew Purtell via Jim Kellerman)
-   HBASE-729   Client region/metadata cache should have a public method for
-               invalidating entries (Andrew Purtell via Stack)
-   HBASE-819   Remove DOS-style ^M carriage returns from all code where found
-               (Jonathan Gray via Jim Kellerman)
-   HBASE-818   Deadlock running 'flushSomeRegions' (Andrew Purtell via Stack)
-   HBASE-820   Need mainline to flush when 'Blocking updates' goes up.
-               (Jean-Daniel Cryans via Stack)
-   HBASE-821   UnknownScanner happens too often (Jean-Daniel Cryans via Stack)
-   HBASE-813   Add a row counter in the new shell (Jean-Daniel Cryans via Stack)
-   HBASE-824   Bug in Hlog we print array of byes for region name
-               (Billy Pearson via Stack)
-   HBASE-825   Master logs showing byte [] in place of string in logging
-               (Billy Pearson via Stack)
-   HBASE-808,809 MAX_VERSIONS not respected, and Deletall doesn't and inserts
-               after delete don't work as expected
-               (Jean-Daniel Cryans via Stack)
-   HBASE-831   committing BatchUpdate with no row should complain
-               (Andrew Purtell via Jim Kellerman)
-   HBASE-833   Doing an insert with an unknown family throws a NPE in HRS
-   HBASE-810   Prevent temporary deadlocks when, during a scan with write
-               operations, the region splits (Jean-Daniel Cryans via Jim
-               Kellerman)
-   HBASE-843   Deleting and recreating a table in a single process does not work
-               (Jonathan Gray via Jim Kellerman)
-   HBASE-849   Speed improvement in JenkinsHash (Andrzej Bialecki via Stack)
-   HBASE-552   Bloom filter bugs (Andrzej Bialecki via Jim Kellerman)
-   HBASE-762   deleteFamily takes timestamp, should only take row and family.
-               Javadoc describes both cases but only implements the timestamp
-               case. (Jean-Daniel Cryans via Jim Kellerman)
-   HBASE-768   This message 'java.io.IOException: Install 0.1.x of hbase and run
-               its migration first' is useless (Jean-Daniel Cryans via Jim
-               Kellerman)
-   HBASE-826   Delete table followed by recreation results in honked table
-   HBASE-834   'Major' compactions and upper bound on files we compact at any
-               one time (Billy Pearson via Stack)
-   HBASE-836   Update thrift examples to work with changed IDL (HBASE-697)
-               (Toby White via Stack)
-   HBASE-854   hbase-841 broke build on hudson? - makes sure that proxies are
-               closed. (Andrew Purtell via Jim Kellerman)
-   HBASE-855   compaction can return less versions then we should in some cases
-               (Billy Pearson via Stack)
-   HBASE-832   Problem with row keys beginnig with characters < than ',' and
-               the region location cache
-   HBASE-864   Deadlock in regionserver
-   HBASE-865   Fix javadoc warnings (Rong-En Fan via Jim Kellerman)
-   HBASE-872   Getting exceptions in shell when creating/disabling tables
-   HBASE-868   Incrementing binary rows cause strange behavior once table
-               splits (Jonathan Gray via Stack)
-   HBASE-877   HCM is unable to find table with multiple regions which contains
-               binary (Jonathan Gray via Stack)
-
-  IMPROVEMENTS
-   HBASE-801  When a table haven't disable, shell could response in a "user
-              friendly" way.
-   HBASE-816  TableMap should survive USE (Andrew Purtell via Stack)
-   HBASE-812  Compaction needs little better skip algo (Daniel Leffel via Stack)
-   HBASE-806  Change HbaseMapWritable and RowResult to implement SortedMap
-              instead of Map (Jonathan Gray via Stack)
-   HBASE-795  More Table operation in TableHandler for REST interface: part 1
-              (Sishen Freecity via Stack)
-   HBASE-795  More Table operation in TableHandler for REST interface: part 2
-              (Sishen Freecity via Stack)
-   HBASE-830  Debugging HCM.locateRegionInMeta is painful
-   HBASE-784  Base hbase-0.3.0 on hadoop-0.18
-   HBASE-841  Consolidate multiple overloaded methods in HRegionInterface,
-              HRegionServer (Jean-Daniel Cryans via Jim Kellerman)
-   HBASE-840  More options on the row query in REST interface
-              (Sishen Freecity via Stack)
-   HBASE-874  deleting a table kills client rpc; no subsequent communication if
-              shell or thrift server, etc. (Jonathan Gray via Jim Kellerman)
-   HBASE-871  Major compaction periodicity should be specifyable at the column
-              family level, not cluster wide (Jonathan Gray via Stack)
-   HBASE-465  Fix javadoc for all public declarations
-   HBASE-882  The BatchUpdate class provides, put(col, cell) and delete(col)
-              but no get() (Ryan Smith via Stack and Jim Kellerman)
-
-  NEW FEATURES
-   HBASE-787  Postgresql to HBase table replication example (Tim Sell via Stack)
-   HBASE-798  Provide Client API to explicitly lock and unlock rows (Jonathan
-              Gray via Jim Kellerman)
-   HBASE-798  Add missing classes: UnknownRowLockException and RowLock which
-              were present in previous versions of the patches for this issue,
-              but not in the version that was committed. Also fix a number of
-              compilation problems that were introduced by patch.
-   HBASE-669  MultiRegion transactions with Optimistic Concurrency Control
-              (Clint Morgan via Stack)
-   HBASE-842  Remove methods that have Text as a parameter and were deprecated
-              in 0.2.1 (Jean-Daniel Cryans via Jim Kellerman)
-
-  OPTIMIZATIONS
-
-Release 0.2.0 - August 8, 2008.
-
-  INCOMPATIBLE CHANGES
-   HBASE-584   Names in the filter interface are confusing (Clint Morgan via
-               Jim Kellerman) (API change for filters)
-   HBASE-601   Just remove deprecated methods in HTable; 0.2 is not backward
-               compatible anyways
-   HBASE-82    Row keys should be array of bytes
-   HBASE-76    Purge servers of Text (Done as part of HBASE-82 commit).
-   HBASE-487   Replace hql w/ a hbase-friendly jirb or jython shell
-               Part 1: purge of hql and added raw jirb in its place.
-   HBASE-521   Improve client scanner interface
-   HBASE-288   Add in-memory caching of data. Required update of hadoop to 
-               0.17.0-dev.2008-02-07_12-01-58. (Tom White via Stack) 
-   HBASE-696   Make bloomfilter true/false and self-sizing
-   HBASE-720   clean up inconsistencies around deletes (Izaak Rubin via Stack)
-   HBASE-796   Deprecates Text methods from HTable
-               (Michael Gottesman via Stack)
-
-  BUG FIXES
-   HBASE-574   HBase does not load hadoop native libs (Rong-En Fan via Stack)
-   HBASE-598   Loggging, no .log file; all goes into .out
-   HBASE-622   Remove StaticTestEnvironment and put a log4j.properties in src/test
-   HBASE-624   Master will shut down if number of active region servers is zero
-               even if shutdown was not requested
-   HBASE-629   Split reports incorrect elapsed time
-   HBASE-623   Migration script for hbase-82
-   HBASE-630   Default hbase.rootdir is garbage
-   HBASE-589   Remove references to deprecated methods in Hadoop once
-               hadoop-0.17.0 is released
-   HBASE-638   Purge \r from src
-   HBASE-644   DroppedSnapshotException but RegionServer doesn't restart
-   HBASE-641   Improve master split logging
-   HBASE-642   Splitting log in a hostile environment -- bad hdfs -- we drop
-               write-ahead-log edits
-   HBASE-646   EOFException opening HStoreFile info file (spin on HBASE-645and 550)
-   HBASE-648   If mapfile index is empty, run repair
-   HBASE-640   TestMigrate failing on hudson
-   HBASE-651   Table.commit should throw NoSuchColumnFamilyException if column
-               family doesn't exist
-   HBASE-649   API polluted with default and protected access data members and methods
-   HBASE-650   Add String versions of get, scanner, put in HTable
-   HBASE-656   Do not retry exceptions such as unknown scanner or illegal argument
-   HBASE-659   HLog#cacheFlushLock not cleared; hangs a region
-   HBASE-663   Incorrect sequence number for cache flush
-   HBASE-655   Need programmatic way to add column family: need programmatic way
-               to enable/disable table
-   HBASE-654   API HTable.getMetadata().addFamily shouldn't be exposed to user
-   HBASE-666   UnmodifyableHRegionInfo gives the wrong encoded name
-   HBASE-668   HBASE-533 broke build
-   HBASE-670   Historian deadlocks if regionserver is at global memory boundary
-               and is hosting .META.
-   HBASE-665   Server side scanner doesn't honor stop row
-   HBASE-662   UI in table.jsp gives META locations, not the table's regions
-               location (Jean-Daniel Cryans via Stack)
-   HBASE-676   Bytes.getInt returns a long (Clint Morgan via Stack)
-   HBASE-680   Config parameter hbase.io.index.interval  should be
-               hbase.index.interval, according to HBaseMapFile.HbaseWriter
-               (LN via Stack)
-   HBASE-682   Unnecessary iteration in HMemcache.internalGet? got much better
-               reading performance after break it (LN via Stack)
-   HBASE-686   MemcacheScanner didn't return the first row(if it exists),
-               because HScannerInterface's output incorrect (LN via Jim Kellerman)
-   HBASE-691   get* and getScanner are different in how they treat column parameter
-   HBASE-694   HStore.rowAtOrBeforeFromMapFile() fails to locate the row if # of mapfiles >= 2
-               (Rong-En Fan via Bryan)
-   HBASE-652   dropping table fails silently if table isn't disabled
-   HBASE-683   can not get svn revision # at build time if locale is not english
-               (Rong-En Fan via Stack)
-   HBASE-699   Fix TestMigrate up on Hudson
-   HBASE-615   Region balancer oscillates during cluster startup
-   HBASE-613   Timestamp-anchored scanning fails to find all records
-   HBASE-681   NPE in Memcache
-   HBASE-701   Showing bytes in log when should be String
-   HBASE-702   deleteall doesn't
-   HBASE-704   update new shell docs and commands on help menu
-   HBASE-709   Deadlock while rolling WAL-log while finishing flush
-   HBASE-710   If clocks are way off, then we can have daughter split come
-               before rather than after its parent in .META.
-   HBASE-714   Showing bytes in log when should be string (2)
-   HBASE-627   Disable table doesn't work reliably
-   HBASE-716   TestGet2.testGetClosestBefore fails with hadoop-0.17.1
-   HBASE-715   Base HBase 0.2 on Hadoop 0.17.1
-   HBASE-718   hbase shell help info
-   HBASE-717   alter table broke with new shell returns InvalidColumnNameException
-   HBASE-573   HBase does not read hadoop-*.xml for dfs configuration after 
-               moving out hadoop/contrib
-   HBASE-11    Unexpected exits corrupt DFS
-   HBASE-12    When hbase regionserver restarts, it says "impossible state for
-               createLease()"
-   HBASE-575   master dies with stack overflow error if rootdir isn't qualified
-   HBASE-582   HBase 554 forgot to clear results on each iteration caused by a filter
-               (Clint Morgan via Stack)
-   HBASE-532   Odd interaction between HRegion.get, HRegion.deleteAll and compactions
-   HBASE-10    HRegionServer hangs upon exit due to DFSClient Exception
-   HBASE-595   RowFilterInterface.rowProcessed() is called *before* fhe final
-               filtering decision is made (Clint Morgan via Stack)
-   HBASE-586   HRegion runs HStore memcache snapshotting -- fix it so only HStore
-               knows about workings of memcache
-   HBASE-588   Still a 'hole' in scanners, even after HBASE-532
-   HBASE-604   Don't allow CLASSPATH from environment pollute the hbase CLASSPATH
-   HBASE-608   HRegionServer::getThisIP() checks hadoop config var for dns interface name
-               (Jim R. Wilson via Stack)
-   HBASE-609   Master doesn't see regionserver edits because of clock skew
-   HBASE-607   MultiRegionTable.makeMultiRegionTable is not deterministic enough
-               for regression tests
-   HBASE-405   TIF and TOF use log4j directly rather than apache commons-logging
-   HBASE-618   We always compact if 2 files, regardless of the compaction threshold setting
-   HBASE-619   Fix 'logs' link in UI
-   HBASE-478   offlining of table does not run reliably
-   HBASE-453   undeclared throwable exception from HTable.get
-   HBASE-620   testmergetool failing in branch and trunk since hbase-618 went in
-   HBASE-550   EOF trying to read reconstruction log stops region deployment
-   HBASE-551   Master stuck splitting server logs in shutdown loop; on each
-               iteration, edits are aggregated up into the millions
-   HBASE-505   Region assignments should never time out so long as the region
-               server reports that it is processing the open request
-   HBASE-561   HBase package does not include LICENSE.txt nor build.xml
-   HBASE-563   TestRowFilterAfterWrite erroneously sets master address to
-               0.0.0.0:60100 rather than relying on conf
-   HBASE-507   Use Callable pattern to sleep between retries
-   HBASE-564   Don't do a cache flush if there are zero entries in the cache.
-   HBASE-554   filters generate StackOverflowException
-   HBASE-567   Reused BatchUpdate instances accumulate BatchOperations
-   HBASE-577   NPE getting scanner
-   HBASE-19    CountingBloomFilter can overflow its storage
-               (Stu Hood and Bryan Duxbury via Stack)
-   HBASE-28    thrift put/mutateRow methods need to throw IllegalArgument
-               exceptions (Dave Simpson via Bryan Duxbury via Stack)
-   HBASE-2     hlog numbers should wrap around when they reach 999
-               (Bryan Duxbury via Stack)
-   HBASE-421   TestRegionServerExit broken
-   HBASE-426   hbase can't find remote filesystem
-   HBASE-437   Clear Command should use system.out (Edward Yoon via Stack)
-   HBASE-434, HBASE-435 TestTableIndex and TestTableMapReduce failed in Hudson builds
-   HBASE-446   Fully qualified hbase.rootdir doesn't work
-   HBASE-438   XMLOutputter state should be initialized. (Edward Yoon via Stack)
-   HBASE-8     Delete table does not remove the table directory in the FS
-   HBASE-428   Under continuous upload of rows, WrongRegionExceptions are thrown
-               that reach the client even after retries
-   HBASE-460   TestMigrate broken when HBase moved to subproject   
-   HBASE-462   Update migration tool
-   HBASE-473   When a table is deleted, master sends multiple close messages to
-               the region server
-   HBASE-490   Doubly-assigned .META.; master uses one and clients another
-   HBASE-492   hbase TRUNK does not build against hadoop TRUNK
-   HBASE-496   impossible state for createLease writes 400k lines in about 15mins
-   HBASE-472   Passing on edits, we dump all to log
-   HBASE-495   No server address listed in .META.
-   HBASE-433 HBASE-251 Region server should delete restore log after successful
-               restore, Stuck replaying the edits of crashed machine.
-   HBASE-27    hregioninfo cell empty in meta table
-   HBASE-501   Empty region server address in info:server entry and a
-               startcode of -1 in .META.
-   HBASE-516   HStoreFile.finalKey does not update the final key if it is not
-               the top region of a split region
-   HBASE-525   HTable.getRow(Text) does not work (Clint Morgan via Bryan Duxbury)
-   HBASE-524   Problems with getFull
-   HBASE-528   table 'does not exist' when it does
-   HBASE-531   Merge tool won't merge two overlapping regions (port HBASE-483 to
-               trunk)
-   HBASE-537   Wait for hdfs to exit safe mode
-   HBASE-476   RegexpRowFilter behaves incorectly when there are multiple store
-               files (Clint Morgan via Jim Kellerman)
-   HBASE-527   RegexpRowFilter does not work when there are columns from 
-               multiple families (Clint Morgan via Jim Kellerman)
-   HBASE-534   Double-assignment at SPLIT-time
-   HBASE-712   midKey found compacting is the first, not necessarily the optimal
-   HBASE-719   Find out why users have network problems in HBase and not in Hadoop
-               and HConnectionManager (Jean-Daniel Cryans via Stack)
-   HBASE-703   Invalid regions listed by regionserver.jsp (Izaak Rubin via Stack)
-   HBASE-674   Memcache size unreliable
-   HBASE-726   Unit tests won't run because of a typo (Sebastien Rainville via Stack)
-   HBASE-727   Client caught in an infinite loop when trying to connect to cached
-               server locations (Izaak Rubin via Stack)
-   HBASE-732   shell formatting error with the describe command
-               (Izaak Rubin via Stack)
-   HBASE-731   delete, deletefc in HBase shell do not work correctly
-               (Izaak Rubin via Stack)
-   HBASE-734   scan '.META.', {LIMIT => 10} crashes (Izaak Rubin via Stack)
-   HBASE-736   Should have HTable.deleteAll(String row) and HTable.deleteAll(Text row)
-               (Jean-Daniel Cryans via Stack)
-   HBASE-740   ThriftServer getting table names incorrectly (Tim Sell via Stack)
-   HBASE-742   Rename getMetainfo in HTable as getTableDescriptor
-   HBASE-739   HBaseAdmin.createTable() using old HTableDescription doesn't work
-               (Izaak Rubin via Stack)
-   HBASE-744   BloomFilter serialization/deserialization broken
-   HBASE-742   Column length limit is not enforced (Jean-Daniel Cryans via Stack)
-   HBASE-737   Scanner: every cell in a row has the same timestamp
-   HBASE-700   hbase.io.index.interval need be configuratable in column family
-               (Andrew Purtell via Stack)
-   HBASE-62    Allow user add arbitrary key/value pairs to table and column
-               descriptors (Andrew Purtell via Stack)
-   HBASE-34    Set memcache flush size per column (Andrew Purtell via Stack)
-   HBASE-42    Set region split size on table creation (Andrew Purtell via Stack)
-   HBASE-43    Add a read-only attribute to columns (Andrew Purtell via Stack)
-   HBASE-424   Should be able to enable/disable .META. table
-   HBASE-679   Regionserver addresses are still not right in the new tables page
-   HBASE-758   Throwing IOE read-only when should be throwing NSRE
-   HBASE-743   bin/hbase migrate upgrade fails when redo logs exists
-   HBASE-754   The JRuby shell documentation is wrong in "get" and "put"
-               (Jean-Daniel Cryans via Stack)
-   HBASE-756   In HBase shell, the put command doesn't process the timestamp
-               (Jean-Daniel Cryans via Stack)
-   HBASE-757   REST mangles table names (Sishen via Stack)
-   HBASE-706   On OOME, regionserver sticks around and doesn't go down with cluster
-               (Jean-Daniel Cryans via Stack)
-   HBASE-759   TestMetaUtils failing on hudson
-   HBASE-761   IOE: Stream closed exception all over logs
-   HBASE-763   ClassCastException from RowResult.get(String)
-               (Andrew Purtell via Stack)
-   HBASE-764   The name of column request has padding zero using REST interface
-               (Sishen Freecity via Stack)
-   HBASE-750   NPE caused by StoreFileScanner.updateReaders
-   HBASE-769   TestMasterAdmin fails throwing RegionOfflineException when we're
-               expecting IllegalStateException
-   HBASE-766   FileNotFoundException trying to load HStoreFile 'data'
-   HBASE-770   Update HBaseRPC to match hadoop 0.17 RPC
-   HBASE-780   Can't scan '.META.' from new shell
-   HBASE-424   Should be able to enable/disable .META. table
-   HBASE-771   Names legal in 0.1 are not in 0.2; breaks migration
-   HBASE-788   Div by zero in Master.jsp (Clint Morgan via Jim Kellerman)
-   HBASE-791   RowCount doesn't work (Jean-Daniel Cryans via Stack)
-   HBASE-751   dfs exception and regionserver stuck during heavy write load
-   HBASE-793   HTable.getStartKeys() ignores table names when matching columns
-               (Andrew Purtell and Dru Jensen via Stack)
-   HBASE-790   During import, single region blocks requests for >10 minutes,
-               thread dumps, throws out pending requests, and continues
-               (Jonathan Gray via Stack)
-   
-  IMPROVEMENTS
-   HBASE-559   MR example job to count table rows
-   HBASE-596   DemoClient.py (Ivan Begtin via Stack)
-   HBASE-581   Allow adding filters to TableInputFormat (At same time, ensure TIF
-               is subclassable) (David Alves via Stack)
-   HBASE-603   When an exception bubbles out of getRegionServerWithRetries, wrap 
-               the exception with a RetriesExhaustedException
-   HBASE-600   Filters have excessive DEBUG logging
-   HBASE-611   regionserver should do basic health check before reporting
-               alls-well to the master
-   HBASE-614   Retiring regions is not used; exploit or remove
-   HBASE-538   Improve exceptions that come out on client-side
-   HBASE-569   DemoClient.php (Jim R. Wilson via Stack)
-   HBASE-522   Where new Text(string) might be used in client side method calls,
-               add an overload that takes String (Done as part of HBASE-82)
-   HBASE-570   Remove HQL unit test (Done as part of HBASE-82 commit).
-   HBASE-626   Use Visitor pattern in MetaRegion to reduce code clones in HTable
-               and HConnectionManager (Jean-Daniel Cryans via Stack)
-   HBASE-621   Make MAX_VERSIONS work like TTL: In scans and gets, check
-               MAX_VERSIONs setting and return that many only rather than wait on
-               compaction (Jean-Daniel Cryans via Stack)
-   HBASE-504   Allow HMsg's carry a payload: e.g. exception that happened over
-               on the remote side.
-   HBASE-583   RangeRowFilter/ColumnValueFilter to allow choice of rows based on
-               a (lexicographic) comparison to column's values
-               (Clint Morgan via Stack)
-   HBASE-579   Add hadoop 0.17.x
-   HBASE-660   [Migration] addColumn/deleteColumn functionality in MetaUtils
-   HBASE-632   HTable.getMetadata is very inefficient
-   HBASE-671   New UI page displaying all regions in a table should be sorted
-   HBASE-672   Sort regions in the regionserver UI
-   HBASE-677   Make HTable, HRegion, HRegionServer, HStore, and HColumnDescriptor
-               subclassable (Clint Morgan via Stack)
-   HBASE-682   Regularize toString
-   HBASE-672   Sort regions in the regionserver UI
-   HBASE-469   Streamline HStore startup and compactions
-   HBASE-544   Purge startUpdate from internal code and test cases
-   HBASE-557   HTable.getRow() should receive RowResult objects
-   HBASE-452   "region offline" should throw IOException, not IllegalStateException
-   HBASE-541   Update hadoop jars.
-   HBASE-523   package-level javadoc should have example client
-   HBASE-415   Rewrite leases to use DelayedBlockingQueue instead of polling
-   HBASE-35    Make BatchUpdate public in the API
-   HBASE-409   Add build path to svn:ignore list (Edward Yoon via Stack)
-   HBASE-408   Add .classpath and .project to svn:ignore list
-               (Edward Yoon via Stack)
-   HBASE-410   Speed up the test suite (make test timeout 5 instead of 15 mins).
-   HBASE-281   Shell should allow deletions in .META. and -ROOT- tables
-               (Edward Yoon & Bryan Duxbury via Stack)
-   HBASE-56    Unnecessary HQLClient Object creation in a shell loop
-               (Edward Yoon via Stack)
-   HBASE-3     rest server: configure number of threads for jetty
-               (Bryan Duxbury via Stack)
-   HBASE-416   Add apache-style logging to REST server and add setting log
-               level, etc.
-   HBASE-406   Remove HTable and HConnection close methods
-               (Bryan Duxbury via Stack)
-   HBASE-418   Move HMaster and related classes into master package
-               (Bryan Duxbury via Stack)
-   HBASE-410   Speed up the test suite - Apparently test timeout was too
-               aggressive for Hudson. TestLogRolling timed out even though it
-               was operating properly. Change test timeout to 10 minutes.
-   HBASE-436   website: http://hadoop.apache.org/hbase
-   HBASE-417   Factor TableOperation and subclasses into separate files from
-               HMaster (Bryan Duxbury via Stack)
-   HBASE-440   Add optional log roll interval so that log files are garbage
-               collected
-   HBASE-407   Keep HRegionLocation information in LRU structure 
-   HBASE-444   hbase is very slow at determining table is not present
-   HBASE-438   XMLOutputter state should be initialized.
-   HBASE-414   Move client classes into client package
-   HBASE-79    When HBase needs to be migrated, it should display a message on
-               stdout, not just in the logs
-   HBASE-461   Simplify leases.
-   HBASE-419   Move RegionServer and related classes into regionserver package
-   HBASE-457   Factor Master into Master, RegionManager, and ServerManager
-   HBASE-464   HBASE-419 introduced javadoc errors
-   HBASE-468   Move HStoreKey back to o.a.h.h
-   HBASE-442   Move internal classes out of HRegionServer
-   HBASE-466   Move HMasterInterface, HRegionInterface, and 
-               HMasterRegionInterface into o.a.h.h.ipc
-   HBASE-479   Speed up TestLogRolling
-   HBASE-480   Tool to manually merge two regions
-   HBASE-477   Add support for an HBASE_CLASSPATH
-   HBASE-443   Move internal classes out of HStore
-   HBASE-515   At least double default timeouts between regionserver and master
-   HBASE-529   RegionServer needs to recover if datanode goes down
-   HBASE-456   Clearly state which ports need to be opened in order to run HBase
-   HBASE-536   Remove MiniDFS startup from MiniHBaseCluster
-   HBASE-521   Improve client scanner interface
-   HBASE-562   Move Exceptions to subpackages (Jean-Daniel Cryans via Stack)
-   HBASE-631   HTable.getRow() for only a column family
-               (Jean-Daniel Cryans via Stack)
-   HBASE-731   Add a meta refresh tag to the Web ui for master and region server
-               (Jean-Daniel Cryans via Stack)
-   HBASE-735   hbase shell doesn't trap CTRL-C signal (Jean-Daniel Cryans via Stack)
-   HBASE-730   On startup, rinse STARTCODE and SERVER from .META.
-               (Jean-Daniel Cryans via Stack)
-   HBASE-738   overview.html in need of updating (Izaak Rubin via Stack)
-   HBASE-745   scaling of one regionserver, improving memory and cpu usage (partial)
-               (LN via Stack)
-   HBASE-746   Batching row mutations via thrift (Tim Sell via Stack)
-   HBASE-772   Up default lease period from 60 to 120 seconds
-   HBASE-779   Test changing hbase.hregion.memcache.block.multiplier to 2
-   HBASE-783   For single row, single family retrieval, getRow() works half
-               as fast as getScanner().next() (Jean-Daniel Cryans via Stack)
-   HBASE-789   add clover coverage report targets (Rong-en Fan via Stack)
-
-  NEW FEATURES
-   HBASE-47    Option to set TTL for columns in hbase
-               (Andrew Purtell via Bryan Duxbury and Stack)
-   HBASE-23    UI listing regions should be sorted by address and show additional
-               region state (Jean-Daniel Cryans via Stack)
-   HBASE-639   Add HBaseAdmin.getTableDescriptor function
-   HBASE-533   Region Historian
-   HBASE-487   Replace hql w/ a hbase-friendly jirb or jython shell
-   HBASE-548   Tool to online single region
-   HBASE-71    Master should rebalance region assignments periodically
-   HBASE-512   Add configuration for global aggregate memcache size
-   HBASE-40    Add a method of getting multiple (but not all) cells for a row
-               at once
-   HBASE-506   When an exception has to escape ServerCallable due to exhausted
-               retries, show all the exceptions that lead to this situation
-   HBASE-747   Add a simple way to do batch updates of many rows (Jean-Daniel
-               Cryans via JimK)
-   HBASE-733   Enhance Cell so that it can contain multiple values at multiple
-               timestamps
-   HBASE-511   Do exponential backoff in clients on NSRE, WRE, ISE, etc.
-               (Andrew Purtell via Jim Kellerman)
-   
-  OPTIMIZATIONS
-   HBASE-430   Performance: Scanners and getRow return maps with duplicate data
-
-Release 0.1.3 - 07/25/2008
-
-  BUG FIXES
-   HBASE-644   DroppedSnapshotException but RegionServer doesn't restart
-   HBASE-645   EOFException opening region (HBASE-550 redux)
-   HBASE-641   Improve master split logging
-   HBASE-642   Splitting log in a hostile environment -- bad hdfs -- we drop
-               write-ahead-log edits
-   HBASE-646   EOFException opening HStoreFile info file (spin on HBASE-645 and 550)
-   HBASE-648   If mapfile index is empty, run repair
-   HBASE-659   HLog#cacheFlushLock not cleared; hangs a region
-   HBASE-663   Incorrect sequence number for cache flush
-   HBASE-652   Dropping table fails silently if table isn't disabled 
-   HBASE-674   Memcache size unreliable
-   HBASE-665   server side scanner doesn't honor stop row
-   HBASE-681   NPE in Memcache (Clint Morgan via Jim Kellerman)
-   HBASE-680   config parameter hbase.io.index.interval should be
-               hbase.index.interval, accroding to HBaseMapFile.HbaseWriter
-               (LN via Stack)
-   HBASE-684   unnecessary iteration in HMemcache.internalGet? got much better
-               reading performance after break it (LN via Stack)
-   HBASE-686   MemcacheScanner didn't return the first row(if it exists),
-               because HScannerInterface's output incorrect (LN via Jim Kellerman)
-   HBASE-613   Timestamp-anchored scanning fails to find all records
-   HBASE-709   Deadlock while rolling WAL-log while finishing flush
-   HBASE-707   High-load import of data into single table/family never triggers split
-   HBASE-710   If clocks are way off, then we can have daughter split come
-               before rather than after its parent in .META.
-
-Release 0.1.2 - 05/13/2008
-
-  BUG FIXES
-   HBASE-577   NPE getting scanner
-   HBASE-574   HBase does not load hadoop native libs (Rong-En Fan via Stack).
-   HBASE-11    Unexpected exits corrupt DFS - best we can do until we have at
-               least a subset of HADOOP-1700
-   HBASE-573   HBase does not read hadoop-*.xml for dfs configuration after
-               moving out hadoop/contrib
-   HBASE-12    when hbase regionserver restarts, it says "impossible state for
-               createLease()"
-   HBASE-575   master dies with stack overflow error if rootdir isn't qualified
-   HBASE-500   Regionserver stuck on exit
-   HBASE-582   HBase 554 forgot to clear results on each iteration caused by a filter
-               (Clint Morgan via Stack)
-   HBASE-532   Odd interaction between HRegion.get, HRegion.deleteAll and compactions
-   HBASE-590   HBase migration tool does not get correct FileSystem or root
-               directory if configuration is not correct
-   HBASE-595   RowFilterInterface.rowProcessed() is called *before* fhe final
-               filtering decision is made (Clint Morgan via Stack)
-   HBASE-586   HRegion runs HStore memcache snapshotting -- fix it so only HStore
-               knows about workings of memcache
-   HBASE-572   Backport HBASE-512 to 0.1 branch
-   HBASE-588   Still a 'hole' in scanners, even after HBASE-532
-   HBASE-604   Don't allow CLASSPATH from environment pollute the hbase CLASSPATH
-   HBASE-608   HRegionServer::getThisIP() checks hadoop config var for dns interface name
-               (Jim R. Wilson via Stack)
-   HBASE-609   Master doesn't see regionserver edits because of clock skew
-   HBASE-607   MultiRegionTable.makeMultiRegionTable is not deterministic enough
-               for regression tests
-   HBASE-478   offlining of table does not run reliably
-   HBASE-618   We always compact if 2 files, regardless of the compaction threshold setting
-   HBASE-619   Fix 'logs' link in UI
-   HBASE-620   testmergetool failing in branch and trunk since hbase-618 went in
-   
-  IMPROVEMENTS
-   HBASE-559   MR example job to count table rows
-   HBASE-578   Upgrade branch to 0.16.3 hadoop.
-   HBASE-596   DemoClient.py (Ivan Begtin via Stack)
-
-
-Release 0.1.1 - 04/11/2008
-
-  BUG FIXES
-   HBASE-550   EOF trying to read reconstruction log stops region deployment
-   HBASE-551   Master stuck splitting server logs in shutdown loop; on each
-               iteration, edits are aggregated up into the millions
-   HBASE-505   Region assignments should never time out so long as the region
-               server reports that it is processing the open request
-   HBASE-552   Fix bloom filter bugs (Andrzej Bialecki via Jim Kellerman)
-   HBASE-507   Add sleep between retries
-   HBASE-555   Only one Worker in HRS; on startup, if assigned tens of regions,
-               havoc of reassignments because open processing is done in series
-   HBASE-547   UI shows hadoop version, not hbase version
-   HBASE-561   HBase package does not include LICENSE.txt nor build.xml
-   HBASE-556   Add 0.16.2 to hbase branch -- if it works
-   HBASE-563   TestRowFilterAfterWrite erroneously sets master address to
-               0.0.0.0:60100 rather than relying on conf
-   HBASE-554   filters generate StackOverflowException (Clint Morgan via
-               Jim Kellerman)
-   HBASE-567   Reused BatchUpdate instances accumulate BatchOperations
-
-  NEW FEATURES
-   HBASE-548   Tool to online single region
-
-Release 0.1.0
-
-  INCOMPATIBLE CHANGES
-   HADOOP-2750 Deprecated methods startBatchUpdate, commitBatch, abortBatch, 
-               and renewLease have been removed from HTable (Bryan Duxbury via
-               Jim Kellerman)
-   HADOOP-2786 Move hbase out of hadoop core
-   HBASE-403   Fix build after move of hbase in svn
-   HBASE-494   Up IPC version on 0.1 branch so we cannot mistakenly connect
-               with a hbase from 0.16.0
-
-  NEW FEATURES
-   HBASE-506   When an exception has to escape ServerCallable due to exhausted retries, 
-               show all the exceptions that lead to this situation
-
-  OPTIMIZATIONS
-
-  BUG FIXES
-   HADOOP-2731 Under load, regions become extremely large and eventually cause
-               region servers to become unresponsive
-   HADOOP-2693 NPE in getClosestRowBefore (Bryan Duxbury & Stack)
-   HADOOP-2599 Some minor improvements to changes in HADOOP-2443
-               (Bryan Duxbury & Stack)
-   HADOOP-2773 Master marks region offline when it is recovering from a region
-               server death
-   HBASE-425   Fix doc. so it accomodates new hbase untethered context
-   HBase-421   TestRegionServerExit broken
-   HBASE-426   hbase can't find remote filesystem
-   HBASE-446   Fully qualified hbase.rootdir doesn't work
-   HBASE-428   Under continuous upload of rows, WrongRegionExceptions are
-               thrown that reach the client even after retries
-   HBASE-490   Doubly-assigned .META.; master uses one and clients another
-   HBASE-496   impossible state for createLease writes 400k lines in about 15mins
-   HBASE-472   Passing on edits, we dump all to log
-   HBASE-79    When HBase needs to be migrated, it should display a message on
-               stdout, not just in the logs
-   HBASE-495   No server address listed in .META.
-   HBASE-433 HBASE-251 Region server should delete restore log after successful
-               restore, Stuck replaying the edits of crashed machine.
-   HBASE-27    hregioninfo cell empty in meta table
-   HBASE-501   Empty region server address in info:server entry and a
-               startcode of -1 in .META.
-   HBASE-516   HStoreFile.finalKey does not update the final key if it is not
-               the top region of a split region
-   HBASE-524   Problems with getFull
-   HBASE-514   table 'does not exist' when it does
-   HBASE-537   Wait for hdfs to exit safe mode
-   HBASE-534   Double-assignment at SPLIT-time
-   
-  IMPROVEMENTS
-   HADOOP-2555 Refactor the HTable#get and HTable#getRow methods to avoid
-               repetition of retry-on-failure logic (thanks to Peter Dolan and
-               Bryan Duxbury)
-   HBASE-281   Shell should allow deletions in .META. and -ROOT- tables
-   HBASE-480   Tool to manually merge two regions
-   HBASE-477   Add support for an HBASE_CLASSPATH
-   HBASE-515   At least double default timeouts between regionserver and master
-   HBASE-482   package-level javadoc should have example client or at least 
-               point at the FAQ
-   HBASE-497   RegionServer needs to recover if datanode goes down
-   HBASE-456   Clearly state which ports need to be opened in order to run HBase
-   HBASE-483   Merge tool won't merge two overlapping regions
-   HBASE-476   RegexpRowFilter behaves incorectly when there are multiple store
-               files (Clint Morgan via Jim Kellerman)
-   HBASE-527   RegexpRowFilter does not work when there are columns from 
-               multiple families (Clint Morgan via Jim Kellerman)
-              
-Release 0.16.0
-
-  2008/02/04   HBase is now a subproject of Hadoop. The first HBase release as
-               a subproject will be release 0.1.0 which will be equivalent to
-               the version of HBase included in Hadoop 0.16.0. In order to
-               accomplish this, the HBase portion of HBASE-288 (formerly 
-               HADOOP-1398) has been backed out. Once 0.1.0 is frozen (depending
-               mostly on changes to infrastructure due to becoming a sub project
-               instead of a contrib project), this patch will re-appear on HBase
-               trunk.
-
-  INCOMPATIBLE CHANGES
-   HADOOP-2056 A table with row keys containing colon fails to split regions
-   HADOOP-2079 Fix generated HLog, HRegion names
-   HADOOP-2495 Minor performance improvements: Slim-down BatchOperation, etc. 
-   HADOOP-2506 Remove the algebra package
-   HADOOP-2519 Performance improvements: Customized RPC serialization
-   HADOOP-2478 Restructure how HBase lays out files in the file system (phase 1)
-               (test input data)
-   HADOOP-2478 Restructure how HBase lays out files in the file system (phase 2)
-               Includes migration tool org.apache.hadoop.hbase.util.Migrate
-   HADOOP-2558 org.onelab.filter.BloomFilter class uses 8X the memory it should
-               be using
-
-  NEW FEATURES
-    HADOOP-2061 Add new Base64 dialects
-    HADOOP-2084 Add a LocalHBaseCluster
-    HADOOP-2068 RESTful interface (Bryan Duxbury via Stack)
-    HADOOP-2316 Run REST servlet outside of master
-                (Bryan Duxbury & Stack)
-    HADOOP-1550 No means of deleting a'row' (Bryan Duxbuery via Stack)
-    HADOOP-2384 Delete all members of a column family on a specific row
-                (Bryan Duxbury via Stack)
-    HADOOP-2395 Implement "ALTER TABLE ... CHANGE column" operation
-                (Bryan Duxbury via Stack)
-    HADOOP-2240 Truncate for hbase (Edward Yoon via Stack)
-    HADOOP-2389 Provide multiple language bindings for HBase (Thrift)
-                (David Simpson via Stack)
-
-  OPTIMIZATIONS
-   HADOOP-2479 Save on number of Text object creations
-   HADOOP-2485 Make mapfile index interval configurable (Set default to 32
-               instead of 128)
-   HADOOP-2553 Don't make Long objects calculating hbase type hash codes
-   HADOOP-2377 Holding open MapFile.Readers is expensive, so use less of them
-   HADOOP-2407 Keeping MapFile.Reader open is expensive: Part 2
-   HADOOP-2533 Performance: Scanning, just creating MapWritable in next
-               consumes >20% CPU
-   HADOOP-2443 Keep lazy cache of regions in client rather than an
-               'authoritative' list (Bryan Duxbury via Stack)
-   HADOOP-2600 Performance: HStore.getRowKeyAtOrBefore should use
-               MapFile.Reader#getClosest (before)
-               (Bryan Duxbury via Stack)
-
-  BUG FIXES
-   HADOOP-2059 In tests, exceptions in min dfs shutdown should not fail test
-               (e.g. nightly #272)
-   HADOOP-2064 TestSplit assertion and NPE failures (Patch build #952 and #953)
-   HADOOP-2124 Use of `hostname` does not work on Cygwin in some cases
-   HADOOP-2083 TestTableIndex failed in #970 and #956
-   HADOOP-2109 Fixed race condition in processing server lease timeout.
-   HADOOP-2137 hql.jsp : The character 0x19 is not valid
-   HADOOP-2109 Fix another race condition in processing dead servers,
-               Fix error online meta regions: was using region name and not
-               startKey as key for map.put. Change TestRegionServerExit to
-               always kill the region server for the META region. This makes
-               the test more deterministic and getting META reassigned was
-               problematic.
-   HADOOP-2155 Method expecting HBaseConfiguration throws NPE when given Configuration
-   HADOOP-2156 BufferUnderflowException for un-named HTableDescriptors
-   HADOOP-2161 getRow() is orders of magnitudes slower than get(), even on rows
-               with one column (Clint Morgan and Stack)
-   HADOOP-2040 Hudson hangs AFTER test has finished
-   HADOOP-2274 Excess synchronization introduced by HADOOP-2139 negatively
-               impacts performance
-   HADOOP-2196 Fix how hbase sits in hadoop 'package' product
-   HADOOP-2276 Address regression caused by HADOOP-2274, fix HADOOP-2173 (When
-               the master times out a region servers lease, the region server
-               may not restart)
-   HADOOP-2253 getRow can return HBASE::DELETEVAL cells
-               (Bryan Duxbury via Stack)
-   HADOOP-2295 Fix assigning a region to multiple servers
-   HADOOP-2234 TableInputFormat erroneously aggregates map values
-   HADOOP-2308 null regioninfo breaks meta scanner
-   HADOOP-2304 Abbreviated symbol parsing error of dir path in jar command
-               (Edward Yoon via Stack)
-   HADOOP-2320 Committed TestGet2 is managled (breaks build).
-   HADOOP-2322 getRow(row, TS) client interface not properly connected
-   HADOOP-2309 ConcurrentModificationException doing get of all region start keys
-   HADOOP-2321 TestScanner2 does not release resources which sometimes cause the
-               test to time out
-   HADOOP-2315 REST servlet doesn't treat / characters in row key correctly
-               (Bryan Duxbury via Stack)
-   HADOOP-2332 Meta table data selection in Hbase Shell
-               (Edward Yoon via Stack)
-   HADOOP-2347 REST servlet not thread safe but run in a threaded manner
-               (Bryan Duxbury via Stack)
-   HADOOP-2365 Result of HashFunction.hash() contains all identical values
-   HADOOP-2362 Leaking hdfs file handle on region split
-   HADOOP-2338 Fix NullPointerException in master server.
-   HADOOP-2380 REST servlet throws NPE when any value node has an empty string
-               (Bryan Duxbury via Stack)
-   HADOOP-2350 Scanner api returns null row names, or skips row names if
-               different column families do not have entries for some rows
-   HADOOP-2283 AlreadyBeingCreatedException (Was: Stuck replay of failed
-               regionserver edits)
-   HADOOP-2392 TestRegionServerExit has new failure mode since HADOOP-2338
-   HADOOP-2324 Fix assertion failures in TestTableMapReduce
-   HADOOP-2396 NPE in HMaster.cancelLease
-   HADOOP-2397 The only time that a meta scanner should try to recover a log is
-               when the master is starting
-   HADOOP-2417 Fix critical shutdown problem introduced by HADOOP-2338
-   HADOOP-2418 Fix assertion failures in TestTableMapReduce, TestTableIndex,
-               and TestTableJoinMapReduce
-   HADOOP-2414 Fix ArrayIndexOutOfBoundsException in bloom filters.
-   HADOOP-2430 Master will not shut down if there are no active region servers
-   HADOOP-2199 Add tools for going from hregion filename to region name in logs
-   HADOOP-2441 Fix build failures in TestHBaseCluster
-   HADOOP-2451 End key is incorrectly assigned in many region splits
-   HADOOP-2455 Error in Help-string of CREATE command (Edward Yoon via Stack)
-   HADOOP-2465 When split parent regions are cleaned up, not all the columns are
-               deleted
-   HADOOP-2468 TestRegionServerExit failed in Hadoop-Nightly #338
-   HADOOP-2467 scanner truncates resultset when > 1 column families
-   HADOOP-2503 REST Insert / Select encoding issue (Bryan Duxbury via Stack)
-   HADOOP-2505 formatter classes missing apache license
-   HADOOP-2504 REST servlet method for deleting a scanner was not properly
-               mapped (Bryan Duxbury via Stack)
-   HADOOP-2507 REST servlet does not properly base64 row keys and column names
-               (Bryan Duxbury via Stack)
-   HADOOP-2530 Missing type in new hbase custom RPC serializer
-   HADOOP-2490 Failure in nightly #346 (Added debugging of hudson failures).
-   HADOOP-2558 fixes for build up on hudson (part 1, part 2, part 3, part 4)
-   HADOOP-2500 Unreadable region kills region servers
-   HADOOP-2579 Initializing a new HTable object against a nonexistent table
-               throws a NoServerForRegionException instead of a
-               TableNotFoundException when a different table has been created
-               previously (Bryan Duxbury via Stack)
-   HADOOP-2587 Splits blocked by compactions cause region to be offline for
-               duration of compaction. 
-   HADOOP-2592 Scanning, a region can let out a row that its not supposed
-               to have
-   HADOOP-2493 hbase will split on row when the start and end row is the
-               same cause data loss (Bryan Duxbury via Stack)
-   HADOOP-2629 Shell digests garbage without complaint
-   HADOOP-2619 Compaction errors after a region splits
-   HADOOP-2621 Memcache flush flushing every 60 secs with out considering
-               the max memcache size
-   HADOOP-2584 Web UI displays an IOException instead of the Tables
-   HADOOP-2650 Remove Writables.clone and use WritableUtils.clone from
-               hadoop instead
-   HADOOP-2668 Documentation and improved logging so fact that hbase now
-               requires migration comes as less of a surprise
-   HADOOP-2686 Removed tables stick around in .META.
-   HADOOP-2688 IllegalArgumentException processing a shutdown stops
-               server going down and results in millions of lines of output
-   HADOOP-2706 HBase Shell crash
-   HADOOP-2712 under load, regions won't split
-   HADOOP-2675 Options not passed to rest/thrift
-   HADOOP-2722 Prevent unintentional thread exit in region server and master
-   HADOOP-2718 Copy Constructor HBaseConfiguration(Configuration) will override
-               hbase configurations if argumant is not an instance of
-               HBaseConfiguration.
-   HADOOP-2753 Back out 2718; programmatic config works but hbase*xml conf
-               is overridden
-   HADOOP-2718 Copy Constructor HBaseConfiguration(Configuration) will override
-               hbase configurations if argumant is not an instance of
-               HBaseConfiguration (Put it back again).
-   HADOOP-2631 2443 breaks HTable.getStartKeys when there is more than one
-               table or table you are enumerating isn't the first table
-   Delete empty file: src/contrib/hbase/src/java/org/apache/hadoop/hbase/mapred/
-               TableOutputCollector.java per Nigel Daley
-   
-  IMPROVEMENTS
-   HADOOP-2401 Add convenience put method that takes writable
-               (Johan Oskarsson via Stack)
-   HADOOP-2074 Simple switch to enable DEBUG level-logging in hbase
-   HADOOP-2088 Make hbase runnable in $HADOOP_HOME/build(/contrib/hbase)
-   HADOOP-2126 Use Bob Jenkins' hash for bloom filters
-   HADOOP-2157 Make Scanners implement Iterable
-   HADOOP-2176 Htable.deleteAll documentation is ambiguous
-   HADOOP-2139 (phase 1) Increase parallelism in region servers.
-   HADOOP-2267 [Hbase Shell] Change the prompt's title from 'hbase' to 'hql'.
-               (Edward Yoon via Stack)
-   HADOOP-2139 (phase 2) Make region server more event driven
-   HADOOP-2289 Useless efforts of looking for the non-existant table in select
-               command.
-               (Edward Yoon via Stack)
-   HADOOP-2257 Show a total of all requests and regions on the web ui
-               (Paul Saab via Stack)
-   HADOOP-2261 HTable.abort no longer throws exception if there is no active update.
-   HADOOP-2287 Make hbase unit tests take less time to complete.
-   HADOOP-2262 Retry n times instead of n**2 times.
-   HADOOP-1608 Relational Algrebra Operators
-               (Edward Yoon via Stack)
-   HADOOP-2198 HTable should have method to return table metadata
-   HADOOP-2296 hbase shell: phantom columns show up from select command
-   HADOOP-2297 System.exit() Handling in hbase shell jar command
-               (Edward Yoon via Stack)
-   HADOOP-2224 Add HTable.getRow(ROW, ts)
-               (Bryan Duxbury via Stack)
-   HADOOP-2339 Delete command with no WHERE clause
-               (Edward Yoon via Stack)
-   HADOOP-2299 Support inclusive scans (Bryan Duxbury via Stack)
-   HADOOP-2333 Client side retries happen at the wrong level
-   HADOOP-2357 Compaction cleanup; less deleting + prevent possible file leaks
-   HADOOP-2392 TestRegionServerExit has new failure mode since HADOOP-2338
-   HADOOP-2370 Allow column families with an unlimited number of versions
-               (Edward Yoon via Stack)
-   HADOOP-2047 Add an '--master=X' and '--html' command-line parameters to shell
-               (Edward Yoon via Stack)
-   HADOOP-2351 If select command returns no result, it doesn't need to show the
-               header information (Edward Yoon via Stack)
-   HADOOP-2285 Add being able to shutdown regionservers (Dennis Kubes via Stack)
-   HADOOP-2458 HStoreFile.writeSplitInfo should just call 
-               HStoreFile.Reference.write
-   HADOOP-2471 Add reading/writing MapFile to PerformanceEvaluation suite
-   HADOOP-2522 Separate MapFile benchmark from PerformanceEvaluation
-               (Tom White via Stack)
-   HADOOP-2502 Insert/Select timestamp, Timestamp data type in HQL
-               (Edward Yoon via Stack)
-   HADOOP-2450 Show version (and svn revision) in hbase web ui
-   HADOOP-2472 Range selection using filter (Edward Yoon via Stack)
-   HADOOP-2548 Make TableMap and TableReduce generic
-               (Frederik Hedberg via Stack)
-   HADOOP-2557 Shell count function (Edward Yoon via Stack)
-   HADOOP-2589 Change an classes/package name from Shell to hql
-               (Edward Yoon via Stack)
-   HADOOP-2545 hbase rest server should be started with hbase-daemon.sh
-   HADOOP-2525 Same 2 lines repeated 11 million times in HMaster log upon
-               HMaster shutdown
-   HADOOP-2616 hbase not spliting when the total size of region reaches max
-               region size * 1.5
-   HADOOP-2643 Make migration tool smarter.
-   
-Release 0.15.1
-Branch 0.15
-
-  INCOMPATIBLE CHANGES
-    HADOOP-1931 Hbase scripts take --ARG=ARG_VALUE when should be like hadoop
-                and do ---ARG ARG_VALUE
-
-  NEW FEATURES
-    HADOOP-1768 FS command using Hadoop FsShell operations
-                (Edward Yoon via Stack)
-    HADOOP-1784 Delete: Fix scanners and gets so they work properly in presence
-                of deletes. Added a deleteAll to remove all cells equal to or
-                older than passed timestamp.  Fixed compaction so deleted cells
-                do not make it out into compacted output.  Ensure also that
-                versions > column max are dropped compacting.
-    HADOOP-1720 Addition of HQL (Hbase Query Language) support in Hbase Shell.
-                The old shell syntax has been replaced by HQL, a small SQL-like
-                set of operators, for creating, altering, dropping, inserting,
-                deleting, and selecting, etc., data in hbase.
-                (Inchul Song and Edward Yoon via Stack)
-    HADOOP-1913 Build a Lucene index on an HBase table
-                (Ning Li via Stack)
-    HADOOP-1957 Web UI with report on cluster state and basic browsing of tables
-
-  OPTIMIZATIONS
-
-  BUG FIXES
-    HADOOP-1527 Region server won't start because logdir exists
-    HADOOP-1723 If master asks region server to shut down, by-pass return of
-                shutdown message
-    HADOOP-1729 Recent renaming or META tables breaks hbase shell
-    HADOOP-1730 unexpected null value causes META scanner to exit (silently)
-    HADOOP-1747 On a cluster, on restart, regions multiply assigned
-    HADOOP-1776 Fix for sporadic compaction failures closing and moving
-                compaction result
-    HADOOP-1780 Regions are still being doubly assigned
-    HADOOP-1797 Fix NPEs in MetaScanner constructor
-    HADOOP-1799 Incorrect classpath in binary version of Hadoop
-    HADOOP-1805 Region server hang on exit
-    HADOOP-1785 TableInputFormat.TableRecordReader.next has a bug
-                (Ning Li via Stack)
-    HADOOP-1800 output should default utf8 encoding
-    HADOOP-1801 When hdfs is yanked out from under hbase, hbase should go down gracefully
-    HADOOP-1813 OOME makes zombie of region server
-    HADOOP-1814	TestCleanRegionServerExit fails too often on Hudson
-    HADOOP-1820 Regionserver creates hlogs without bound
-                (reverted 2007/09/25) (Fixed 2007/09/30)
-    HADOOP-1821 Replace all String.getBytes() with String.getBytes("UTF-8")
-    HADOOP-1832 listTables() returns duplicate tables
-    HADOOP-1834 Scanners ignore timestamp passed on creation
-    HADOOP-1847 Many HBase tests do not fail well.
-    HADOOP-1847 Many HBase tests do not fail well. (phase 2)
-    HADOOP-1870 Once file system failure has been detected, don't check it again
-                and get on with shutting down the hbase cluster.
-    HADOOP-1888 NullPointerException in HMemcacheScanner (reprise)
-    HADOOP-1903 Possible data loss if Exception happens between snapshot and
-                flush to disk.
-    HADOOP-1920 Wrapper scripts broken when hadoop in one location and hbase in
-                another
-    HADOOP-1923, HADOOP-1924 a) tests fail sporadically because set up and tear
-                 down is inconsistent b) TestDFSAbort failed in nightly #242
-    HADOOP-1929 Add hbase-default.xml to hbase jar
-    HADOOP-1941 StopRowFilter throws NPE when passed null row
-    HADOOP-1966 Make HBase unit tests more reliable in the Hudson environment.
-    HADOOP-1975 HBase tests failing with java.lang.NumberFormatException
-    HADOOP-1990 Regression test instability affects nightly and patch builds
-    HADOOP-1996 TestHStoreFile fails on windows if run multiple times
-    HADOOP-1937 When the master times out a region server's lease, it is too 
-                aggressive in reclaiming the server's log.
-    HADOOP-2004 webapp hql formatting bugs 
-    HADOOP_2011 Make hbase daemon scripts take args in same order as hadoop
-                daemon scripts
-    HADOOP-2017 TestRegionServerAbort failure in patch build #903 and
-                nightly #266
-    HADOOP-2029 TestLogRolling fails too often in patch and nightlies
-    HADOOP-2038 TestCleanRegionExit failed in patch build #927
-
-  IMPROVEMENTS
-    HADOOP-1737 Make HColumnDescriptor data publically members settable
-    HADOOP-1746 Clean up findbugs warnings
-    HADOOP-1757 Bloomfilters: single argument constructor, use enum for bloom
-                filter types
-    HADOOP-1760 Use new MapWritable and SortedMapWritable classes from
-                org.apache.hadoop.io
-    HADOOP-1793 (Phase 1) Remove TestHClient (Phase2) remove HClient.
-    HADOOP-1794 Remove deprecated APIs
-    HADOOP-1802 Startup scripts should wait until hdfs as cleared 'safe mode'
-    HADOOP-1833 bin/stop_hbase.sh returns before it completes
-                (Izaak Rubin via Stack) 
-    HADOOP-1835 Updated Documentation for HBase setup/installation
-                (Izaak Rubin via Stack)
-    HADOOP-1868 Make default configuration more responsive
-    HADOOP-1884 Remove useless debugging log messages from hbase.mapred
-    HADOOP-1856 Add Jar command to hbase shell using Hadoop RunJar util
-                (Edward Yoon via Stack)
-    HADOOP-1928 Have master pass the regionserver the filesystem to use
-    HADOOP-1789 Output formatting
-    HADOOP-1960 If a region server cannot talk to the master before its lease
-                times out, it should shut itself down
-    HADOOP-2035 Add logo to webapps
-
-
-Below are the list of changes before 2007-08-18
+** Wish
+    * [HBASE-7462] - TestDrainingServer is an integration test. It should be a unit test instead
 
-  1. HADOOP-1384. HBase omnibus patch. (jimk, Vuk Ercegovac, and Michael Stack)
-  2. HADOOP-1402. Fix javadoc warnings in hbase contrib. (Michael Stack)
-  3. HADOOP-1404. HBase command-line shutdown failing (Michael Stack)
-  4. HADOOP-1397. Replace custom hbase locking with 
-     java.util.concurrent.locks.ReentrantLock (Michael Stack)
-  5. HADOOP-1403. HBase reliability - make master and region server more fault
-     tolerant.
-  6. HADOOP-1418. HBase miscellaneous: unit test for HClient, client to do
-     'Performance Evaluation', etc.
-  7. HADOOP-1420, HADOOP-1423. Findbugs changes, remove reference to removed 
-     class HLocking.
-  8. HADOOP-1424. TestHBaseCluster fails with IllegalMonitorStateException. Fix
-     regression introduced by HADOOP-1397.
-  9. HADOOP-1426. Make hbase scripts executable + add test classes to CLASSPATH.
- 10. HADOOP-1430. HBase shutdown leaves regionservers up.
- 11. HADOOP-1392. Part1: includes create/delete table; enable/disable table;
-     add/remove column.
- 12. HADOOP-1392. Part2: includes table compaction by merging adjacent regions
-     that have shrunk in size.
- 13. HADOOP-1445 Support updates across region splits and compactions
- 14. HADOOP-1460 On shutdown IOException with complaint 'Cannot cancel lease
-     that is not held'
- 15. HADOOP-1421 Failover detection, split log files.
-     For the files modified, also clean up javadoc, class, field and method 
-     visibility (HADOOP-1466)
- 16. HADOOP-1479 Fix NPE in HStore#get if store file only has keys < passed key.
- 17. HADOOP-1476 Distributed version of 'Performance Evaluation' script
- 18. HADOOP-1469 Asychronous table creation
- 19. HADOOP-1415 Integrate BSD licensed bloom filter implementation.
- 20. HADOOP-1465 Add cluster stop/start scripts for hbase
- 21. HADOOP-1415 Provide configurable per-column bloom filters - part 2.
- 22. HADOOP-1498. Replace boxed types with primitives in many places.
- 23. HADOOP-1509.  Made methods/inner classes in HRegionServer and HClient protected
-     instead of private for easier extension. Also made HRegion and HRegionInfo public too.
-     Added an hbase-default.xml property for specifying what HRegionInterface extension to use
-     for proxy server connection. (James Kennedy via Jim Kellerman)
- 24. HADOOP-1534. [hbase] Memcache scanner fails if start key not present
- 25. HADOOP-1537. Catch exceptions in testCleanRegionServerExit so we can see
-     what is failing.
- 26. HADOOP-1543 [hbase] Add HClient.tableExists
- 27. HADOOP-1519 [hbase] map/reduce interface for HBase.  (Vuk Ercegovac and
-     Jim Kellerman)
- 28. HADOOP-1523 Hung region server waiting on write locks 
- 29. HADOOP-1560 NPE in MiniHBaseCluster on Windows
- 30. HADOOP-1531 Add RowFilter to HRegion.HScanner
-     Adds a row filtering interface and two implemenentations: A page scanner,
-     and a regex row/column-data matcher. (James Kennedy via Stack)
- 31. HADOOP-1566 Key-making utility
- 32. HADOOP-1415 Provide configurable per-column bloom filters. 
-     HADOOP-1466 Clean up visibility and javadoc issues in HBase.
- 33. HADOOP-1538 Provide capability for client specified time stamps in HBase
-     HADOOP-1466 Clean up visibility and javadoc issues in HBase.
- 34. HADOOP-1589 Exception handling in HBase is broken over client server connections
- 35. HADOOP-1375 a simple parser for hbase (Edward Yoon via Stack)
- 36. HADOOP-1600 Update license in HBase code
- 37. HADOOP-1589 Exception handling in HBase is broken over client server
- 38. HADOOP-1574 Concurrent creates of a table named 'X' all succeed
- 39. HADOOP-1581 Un-openable tablename bug
- 40. HADOOP-1607 [shell] Clear screen command (Edward Yoon via Stack)
- 41. HADOOP-1614 [hbase] HClient does not protect itself from simultaneous updates
- 42. HADOOP-1468 Add HBase batch update to reduce RPC overhead
- 43. HADOOP-1616 Sporadic TestTable failures
- 44. HADOOP-1615 Replacing thread notification-based queue with 
-     java.util.concurrent.BlockingQueue in HMaster, HRegionServer
- 45. HADOOP-1606 Updated implementation of RowFilterSet, RowFilterInterface
-     (Izaak Rubin via Stack)
- 46. HADOOP-1579 Add new WhileMatchRowFilter and StopRowFilter filters
-    (Izaak Rubin via Stack)
- 47. HADOOP-1637 Fix to HScanner to Support Filters, Add Filter Tests to
-     TestScanner2 (Izaak Rubin via Stack)
- 48. HADOOP-1516 HClient fails to readjust when ROOT or META redeployed on new
-     region server
- 49. HADOOP-1646 RegionServer OOME's under sustained, substantial loading by
-     10 concurrent clients
- 50. HADOOP-1468 Add HBase batch update to reduce RPC overhead (restrict batches
-     to a single row at a time)
- 51. HADOOP-1528 HClient for multiple tables (phase 1) (James Kennedy & JimK)
- 52. HADOOP-1528 HClient for multiple tables (phase 2) all HBase client side code
-     (except TestHClient and HBaseShell) have been converted to use the new client
-     side objects (HTable/HBaseAdmin/HConnection) instead of HClient.
- 53. HADOOP-1528 HClient for multiple tables - expose close table function
- 54. HADOOP-1466 Clean up warnings, visibility and javadoc issues in HBase.
- 55. HADOOP-1662 Make region splits faster
- 56. HADOOP-1678 On region split, master should designate which host should 
-     serve daughter splits. Phase 1: Master balances load for new regions and
-     when a region server fails.
- 57. HADOOP-1678 On region split, master should designate which host should 
-     serve daughter splits. Phase 2: Master assigns children of split region
-     instead of HRegionServer serving both children.
- 58. HADOOP-1710 All updates should be batch updates
- 59. HADOOP-1711 HTable API should use interfaces instead of concrete classes as
-     method parameters and return values
- 60. HADOOP-1644 Compactions should not block updates
- 60. HADOOP-1672 HBase Shell should use new client classes
-     (Edward Yoon via Stack).
- 61. HADOOP-1709 Make HRegionInterface more like that of HTable
-     HADOOP-1725 Client find of table regions should not include offlined, split parents
-=
diff --git a/hbase-assembly/pom.xml b/hbase-assembly/pom.xml
index 3918404..18f2b6b 100644
--- a/hbase-assembly/pom.xml
+++ b/hbase-assembly/pom.xml
@@ -23,7 +23,7 @@
   <parent>
     <artifactId>hbase</artifactId>
     <groupId>org.apache.hbase</groupId>
-    <version>0.98.1-SNAPSHOT</version>
+    <version>0.98.1</version>
     <relativePath>..</relativePath>
   </parent>
   <artifactId>hbase-assembly</artifactId>
diff --git a/hbase-client/pom.xml b/hbase-client/pom.xml
index 5be85ca..1faef9d 100644
--- a/hbase-client/pom.xml
+++ b/hbase-client/pom.xml
@@ -24,7 +24,7 @@
   <parent>
     <artifactId>hbase</artifactId>
     <groupId>org.apache.hbase</groupId>
-    <version>0.98.1-SNAPSHOT</version>
+    <version>0.98.1</version>
     <relativePath>..</relativePath>
   </parent>
 
diff --git a/hbase-common/pom.xml b/hbase-common/pom.xml
index e577a29..88dcd78 100644
--- a/hbase-common/pom.xml
+++ b/hbase-common/pom.xml
@@ -23,7 +23,7 @@
   <parent>
     <artifactId>hbase</artifactId>
     <groupId>org.apache.hbase</groupId>
-    <version>0.98.1-SNAPSHOT</version>
+    <version>0.98.1</version>
     <relativePath>..</relativePath>
   </parent>
 
diff --git a/hbase-examples/pom.xml b/hbase-examples/pom.xml
index 7dfc9b1..d2aebed 100644
--- a/hbase-examples/pom.xml
+++ b/hbase-examples/pom.xml
@@ -23,7 +23,7 @@
   <parent>
     <artifactId>hbase</artifactId>
     <groupId>org.apache.hbase</groupId>
-    <version>0.98.1-SNAPSHOT</version>
+    <version>0.98.1</version>
     <relativePath>..</relativePath>
   </parent>
   <artifactId>hbase-examples</artifactId>
diff --git a/hbase-hadoop-compat/pom.xml b/hbase-hadoop-compat/pom.xml
index dc9eaef..07151d6 100644
--- a/hbase-hadoop-compat/pom.xml
+++ b/hbase-hadoop-compat/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <artifactId>hbase</artifactId>
         <groupId>org.apache.hbase</groupId>
-        <version>0.98.1-SNAPSHOT</version>
+        <version>0.98.1</version>
         <relativePath>..</relativePath>
     </parent>
 
diff --git a/hbase-hadoop1-compat/pom.xml b/hbase-hadoop1-compat/pom.xml
index 695a19a..a546d50 100644
--- a/hbase-hadoop1-compat/pom.xml
+++ b/hbase-hadoop1-compat/pom.xml
@@ -21,7 +21,7 @@
   <parent>
     <artifactId>hbase</artifactId>
     <groupId>org.apache.hbase</groupId>
-    <version>0.98.1-SNAPSHOT</version>
+    <version>0.98.1</version>
     <relativePath>..</relativePath>
   </parent>
 
diff --git a/hbase-hadoop2-compat/pom.xml b/hbase-hadoop2-compat/pom.xml
index 928b70d..a2682a1 100644
--- a/hbase-hadoop2-compat/pom.xml
+++ b/hbase-hadoop2-compat/pom.xml
@@ -21,7 +21,7 @@
   <parent>
     <artifactId>hbase</artifactId>
     <groupId>org.apache.hbase</groupId>
-    <version>0.98.1-SNAPSHOT</version>
+    <version>0.98.1</version>
     <relativePath>..</relativePath>
   </parent>
 
diff --git a/hbase-it/pom.xml b/hbase-it/pom.xml
index 2c5a40c..c10908e 100644
--- a/hbase-it/pom.xml
+++ b/hbase-it/pom.xml
@@ -23,7 +23,7 @@
   <parent>
     <artifactId>hbase</artifactId>
     <groupId>org.apache.hbase</groupId>
-    <version>0.98.1-SNAPSHOT</version>
+    <version>0.98.1</version>
     <relativePath>..</relativePath>
   </parent>
 
diff --git a/hbase-prefix-tree/pom.xml b/hbase-prefix-tree/pom.xml
index 2678dc6..bef98fb 100644
--- a/hbase-prefix-tree/pom.xml
+++ b/hbase-prefix-tree/pom.xml
@@ -23,7 +23,7 @@
   <parent>
     <artifactId>hbase</artifactId>
     <groupId>org.apache.hbase</groupId>
-    <version>0.98.1-SNAPSHOT</version>
+    <version>0.98.1</version>
     <relativePath>..</relativePath>
   </parent>
 
diff --git a/hbase-protocol/pom.xml b/hbase-protocol/pom.xml
index 567dfc3..ebb069b 100644
--- a/hbase-protocol/pom.xml
+++ b/hbase-protocol/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <artifactId>hbase</artifactId>
         <groupId>org.apache.hbase</groupId>
-        <version>0.98.1-SNAPSHOT</version>
+        <version>0.98.1</version>
         <relativePath>..</relativePath>
     </parent>
 
diff --git a/hbase-server/pom.xml b/hbase-server/pom.xml
index 9746882..d2cb5ab 100644
--- a/hbase-server/pom.xml
+++ b/hbase-server/pom.xml
@@ -23,7 +23,7 @@
   <parent>
     <artifactId>hbase</artifactId>
     <groupId>org.apache.hbase</groupId>
-    <version>0.98.1-SNAPSHOT</version>
+    <version>0.98.1</version>
     <relativePath>..</relativePath>
   </parent>
   <artifactId>hbase-server</artifactId>
diff --git a/hbase-shell/pom.xml b/hbase-shell/pom.xml
index c6ac0e1..338d8d4 100644
--- a/hbase-shell/pom.xml
+++ b/hbase-shell/pom.xml
@@ -23,7 +23,7 @@
   <parent>
     <artifactId>hbase</artifactId>
     <groupId>org.apache.hbase</groupId>
-    <version>0.98.1-SNAPSHOT</version>
+    <version>0.98.1</version>
     <relativePath>..</relativePath>
   </parent>
   <artifactId>hbase-shell</artifactId>
diff --git a/hbase-testing-util/pom.xml b/hbase-testing-util/pom.xml
index e36ca33..7c8c5ff 100644
--- a/hbase-testing-util/pom.xml
+++ b/hbase-testing-util/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <artifactId>hbase</artifactId>
         <groupId>org.apache.hbase</groupId>
-        <version>0.98.1-SNAPSHOT</version>
+        <version>0.98.1</version>
         <relativePath>..</relativePath>
     </parent>
     <artifactId>hbase-testing-util</artifactId>
diff --git a/hbase-thrift/pom.xml b/hbase-thrift/pom.xml
index b2924f7..328ff09 100644
--- a/hbase-thrift/pom.xml
+++ b/hbase-thrift/pom.xml
@@ -23,7 +23,7 @@
   <parent>
     <artifactId>hbase</artifactId>
     <groupId>org.apache.hbase</groupId>
-    <version>0.98.1-SNAPSHOT</version>
+    <version>0.98.1</version>
     <relativePath>..</relativePath>
   </parent>
   <artifactId>hbase-thrift</artifactId>
diff --git a/pom.xml b/pom.xml
index 9c3126b..28988e8 100644
--- a/pom.xml
+++ b/pom.xml
@@ -39,7 +39,7 @@
   <groupId>org.apache.hbase</groupId>
   <artifactId>hbase</artifactId>
   <packaging>pom</packaging>
-  <version>0.98.1-SNAPSHOT</version>
+  <version>0.98.1</version>
   <name>HBase</name>
   <description>
     Apache HBase is the Hadoop database. Use it when you need
