Merge pull request #178 from arunthirupathi/checkMetadata
[voldemort/jeffpc.git] / release_notes.txt
blobd4126d6c690f7e9b9cbaf3bda6c76f9311c46ac0
1 Release 1.8.2 on 05/09/2014
3 * Bug fix in MetadataStore regarding updation of routing strategy
5 Release 1.8.1 on 05/01/2014
7 * Fix AbstractStoreClientFactory for backwards compatibility
8 * Cleaned up logging messages
9 * Unit tests for big Binary data
10 * Refactored voldemort admin tool - Phase 1 and Phase 2
12 Release 1.8.0 on 04/21/2014
14 * Split the stores.xml into individual stores on Voldemort server
15 * Maintaing backwards compatibility of MetadataStore
16 * DefaultStoreClient bootstraps using store name (instead of stores.xml)
17 * New Admin tool functionality to update stores (instead of replace)
19 Release 1.7.3 on 04/16/2014
21 * Fix RESTClientFactory to return a LazyStoreClient
23 Release 1.7.2 on 04/15/2014
25 * Quota limiting related fix
26 * Coordinator related fix
28 Release 1.7.1 on 04/10/2014
30 * Same as 1.7.0
32 Release 1.7.0 on 04/09/2014
34 * Improves BDB coversion process and documentations
35 * Adds scala build support and shell (Saurabh Bhatia)
36 * Add removeStorageEngine call to StorageConfiguration
38 Release 1.6.9 on 03/19/2014
40 * Fix a big where StreamingClient will throw NPE if not initialized
41 * Fix multiple broken tests
42 * Modified RO Rebalance Test to cover one more case 
43 * Adding thin client shell for Voldemort Coordinator
44 * Move to tusk-0.0.2
46 Release 1.6.8 on 02/21/2014
48 * Add a tool to dump BDB data to Text and the reverse
49 * Fix racing condition problem in CachingStoreClientFactory
50 * Testing, client shell and admin tool enhancements from suletm,
51   ahimta, bhsaurabh and Holden Caufield 
52 * ConsistencyCheckTool enhancement
53 * Fix bug in Coordinator for enabling different startup ports 
55 Release 1.6.7 on 02/07/2014
57 * Updating the ivy file to refer to tusk-0.0.2 (build fix for nuage)
59 Release 1.6.6 on 02/07/2014
61 * Quota management in Voldemort
62 * Creation of read only stores in RO2 format
63 * Updation of query key feature in admin tool
65 Release 1.6.5 on 02/04/2014
67 * Adding AdminClient functionality to update store definitions
69 Release 1.6.4 on 02/03/2014
71 * Fix bug when RO server NPE when rolled back
72 * RO bug fix caused by RW optimization code 
74 Release 1.6.3 on 01/24/2014
76 * Fix KeyVersionFetcher to not depend on nodeid 0 
78 Release 1.6.2 on 01/10/2014
80 * Slops stored for nodes no longer in cluster, will die automatically
81 * Admin command to selectively purge slops destined to nodes/zones/stores
82 * Admin command to atomically update cluster.xml, stores.xml in one go
83 * Added admin command show-routing-plan to trace routing table for a key
84 * ZoneClipperCLI also adjusts store definitions based on dropped zone
85 * Numerous tests around non contiguous node ids/zone ids
87 Release 1.6.1 on 12/13/2013
89 * Avro support for fetch keys/entries admin command
90 * Store Clients are now cached by default, within the same factory
91 * Rigoruous tests around non contiguous node ids/zone ids
92 * ZenStoreClient efficient resource managerment
95 Release 1.6.0 on 11/26/2013
97 NOTE: This is an open source release! This release can be downloaded here:
98       https://github.com/voldemort/voldemort/releases
100 Changes made since 1.5.9:
102 * Fixes to remove dependency on non contiguous node ids
103 * Stats for store client
106 Release 1.5.9 on 11/05/2013
108 * Bug fix in AsyncMetadataVersionManager (related to store version tracking)
110 Release 1.5.8 on 10/29/2013
112 * Replace resthdfs jar with tusk.jar
113 * Incorporate retries into rest hdfs fetcher 
115 Release 1.5.7 on 10/28/2013
117 * Voldemort now uses BDB 5.0.88
118 * Support for RO fetches via RestHdfs
119 * Fix NPE in Streaming Client
120 * Retrying fetches on all exceptions w/ delay
122 Release 1.5.6 on 10/18/2013
124 * Removed getStoreClientFactoryStats from StoreClientFactory interface (fix)
126 Release 1.5.5 on 10/18/2013
128 * Client shell with avro support
129 * Fix bind exceptions
130 * Fix ObsoleteVersion Exceptions
131 * Build once and push to multiple clusters
132 * Improvements to failure detector
133 * Fix parallel puts
134 * Prevent NPE in worker thread when shutdown
135 * Bug fixes in repair and prune job
137 Release 1.5.3 on 09/19/2013
139 * Bug fixes (NPE during shutdown
140 * Client side visibility changes (Histogram, Connect exception)
141 * Adding PruneJob and timebased resolving mechanism to streaming client
142 * R2Store cleanup required for the rest client
143 * Monitoring improvements (aggregated BDB stats, streaming stats)
144 * Monitoring and Config improvements for REST service
145 * Removed donor based rebalancing code
146 * Removed replica type from the code base
147 * Improvements to Rebalance controller
149 Release 1.4.7 on 09/04/13
151 Changes
152 * Added the Zone affinity feature on the client side
153 * Refactoring the rest package (Rest server and Coordinator)
154 * Using standard Netty pipeline in the Coordinator
155 * Added monitoring hooks for the Rest Service
157 Release 1.4.6 on 07/24/2013
159 Changes
160 * Cleanup of R2Store to work with the REST server
161 * Modified ZenStoreClient to avoid creating SystemStores during each
162 * re-bootstrap
163 * Added slop streaming functionality
165 Release 1.4.4 on 07/08/2013
167 Changes made since 1.4.3
168 * Change Repartioner to swap among nodes from all specified zones
169 * Added rebalance shuffle, cluster expansion scripts
171 Release 1.4.3 on 07/03/2013
173 Note: Server changes are not backwards compatible. To use new
174 rebalancing tooling, servers must be upgraded before hand.
176 * Rebalance features
177   - Proxying / abortable rebalance
178     - added proxy puts which rebalance safely abortable
179     - improved proxy gets to check locally first and only fetch remote
180       if not yet local
181   - Repartitioning: improved algorithms to optimize partition layout
182   - Plan: avoids cross-zone data movement in most rebalance cases. Only
183     expanding into a new zone requires data movement across zones.
184   - Controller 
185     - better / more accurate progress monitoring.
186     - 'proxy pause' before rebalancing. Ensures clients pick up new
187       metadata and allows performance with proxy'ing to be observed
188       before servers start rebalancing.
189   - NOTE: Donor-based rebalance is currently broken by these changes.
190 * Rebalance tooling
191   - PartitionBalanceCLI: more nuanced and verbose analysis of cluster
192     balance
193   - RepartitionerCLI: Stand alone tool to determine repartitioning
194   - Stand alone 'repartitioning' scripts for key use cases: new cluster,
195     shuffle (existing cluster), cluster expansion, and zone expansion.
196   - RebalancePlanCLI: Stand alone plan tool to determine cost of a
197     specific rebalance
198   - RebalanceControllerCLI: Stand-alone tool for executing a specific
199     rebalance (plan)
200 * Administrivia
201   - java 7 compilation
202   - moved to Guava from Google Collections
203   - better unit test coverage of zoned clusters
204   - added example prod configuration
205   - added tools directory
206   - .gitignore improvements
207 * Bug fixes
208   - fixed concurrency bugs in metadata store
209   - fixed vector clock comparisons
210   - fixed many NPEs
211   - write slops in more cases when they are needed
212   - KeySampler/Fetcher handle larger working sets with OOME
214 Changes made since 1.4.2
215 * Minor code fixes
216 * Faster creation of BaseStoreRoutingPlan objects in the fast rebalancing path
218 Release 1.4.2 on 06/27/2013
219 * Fixing costly StoreRoutingPlan object construction
221 Release 1.4.0 on 06/21/2013
222 * Zone expansion release
224 Release 1.3.4 on 06/19/2013
225 * Read Write store bug fixes
226   - Rewrite of InMemoryStorageEngine + config to control multiVersionPuts
227   - Fixed a bug in the read-repair logic which was causing unnecessary puts.
228   - Fixed put operation in PipelineRoutedStore to ensure slop is submitted
229   - Fixed VectorClock bug triggered during versioned puts
230 * Rebalance improvement
231   - Made it safe to abort rebalance
232   - Proxy puts are established so that 'old' partition is updated and so an aborted rebalance can "roll back" without any data loss
233   - Proxy gets & puts are established within the zone making improving performance during rebalance
234 * Coordinator
235   - Added monitoring capability in the Coordinator
237 Release 1.3.3 on 04/24/2013 
238 * VoldemortBuildandPush
239   - Fixed bug with schema check
240 * Streaming Client
241   - Fixed issue with redundant callback invocation
242 Release 1.3.1 on 03/25/2013 
243 * HDFSFetcher
244   - Fixed the bug in calculating checksums when we entere a retry loop
245   - refactored per file checksums
246   - added junit test case to simulate intermittent IO exceptions 
247 * voldemort.client.protocol.admin.AdminClient
248   - Added AdminStoreClient so that AdminClient can do store operations
249     against specific store on a specific node.
250   - Added helper methods for diong put & get for specific node/store
251   - Added voldemort.client.protocol.admin.QueryKeyResult type to
252     simplify QueryKey interface
253 * Improved FetchStreamRequestHandler and sub-classes
254   - Renamed all sub-classes: 'FullScan' and 'PartitionScan' prefixes
255     for pertinent stream request handler implementations.
256   - Removed unused skipRecords parameter.
257   - Added recordsPerPartition parameter to fetch limited portion of
258     each partition.
259   - All logic about how many keys to fetch (return to invoker) is
260     server side now.
261 * RebalanceCLI
262   - Added many options to help improve the balance of (zoned) clusters.
263   - Analysis of the balance of a cluster is significantly more detailed.
264   - Fixed a bug that reduced the balance of a cluster each time it was
265     expanded.
266   - Many different algorithms for improving cluster balance are
267     implemented in voldemort.utils.RebalanceClusterUtils
268 * ConsistencyCheck & ConsistencyFixCLI
269   - New tools for ensuring data durability. These tools are necessary
270     because slop creation can fail during put operations.
271   - ConsistencyCheck determines which keys, if any, lack
272     "consistency". I.e., are present on only a subset of the expected
273     partitions.
274   - ConsistencyFix takes a list of bad (inconsistent) keys and makes
275     sure they are present on all expected partitions.
276   - ConsistencyFix also has an interface for repairing "orphaned" keys
277     that could result from an aborted rebalance.
278 * KeySamplerCLI & KeyVersionFetcherCLI
279   - KeySamplerCLI is a new tool that reads some number of keys for
280     specified partitions/stores.
281   - KeyVersionFetcherCLI is a new tool that, given a key and a store,
282     fetches the version from all nodes that host a partition that
283     ought to store a replica of the key's value.
284   - Together, KeySamplerCLI and KeyVersionFetcherCLI correctly
285     implement the intended functionality of the Entropy tool (for
286     servers that implement either FullScan and PartitionScan fetches).
287   - Entropy tool had been used in the past to verify a sample of keys
288     before and after a rebalance. Entropy tool does not work as
289     intended/expected. This is exacerbated by the partition aware
290     layouts. Instead of trying to fix the Entropy tool, these two new
291     tools were developed. Entropy is deprecated and will eventually be
292     removed from the code base.
293 * Substantial refactoring of helper & util methods:
294   - voldemort.cluster.Cluster : added helper methods
295   - voldemort.utils.ClusterInstance : wraps up one Cluster &
296     List<StoreDefinition>
297   - voldemort.utils.Cluster : utils for single Cluster object.
298   - voldemort.utils.NodeUtils : utils for Node object.
299   - voldemort.utils.RebalanceUtils : Many methods moved to more
300     appropriate helper classes
301   - voldemort.utils.StoreDefinitionUtils : utils for StoreDefinition
302     object.
303   - voldemort.utils.StoreInstance : wraps up one Cluster & one
304     StoreDefinition
305 * Et cetera
306   - ByteUtils toHexString & from HexString now rely on standard
307     libraries
308   - voldemort.client.AdminFetchTest now tests FullScan and
309     PartitionScan fetches
310   - voldemort.store.routed.ReadRepairerTest annotated all tests with
311     @Test
314 Release 1.3.0 on 03/08/2013
316 NOTE: This is an open source release! This release can be downloaded here:
317       http://github.com/voldemort/voldemort/downloads.
319 Changes made since 1.2.3
320 * VoldemortConfig and ClientConfig now contain detailed documentation
321 * BDB-JE defaults set to ones in prod@linkedin
322 * Bug fixes on kerberos support for Hadoop
325 Release 1.2.3 on 02/20/2013
327 Changes made since 1.2.2
328 * Added a retry loop and synchronized block while getting Hadoop FS
329 * Code cleanup in HdfsFetcher to make it more readable.
330 * Throwing explicit exceptions in HdfsFetcher instead of 
331   returning null to be more precise in the Azkaban logs.
334 Release 1.2.2 on 02/19/2013
336 Changes made since 1.2.1
337 * Synchronized the streaming API
338 * Fixed some of the streaming API tests.
341 Release 1.2.1 on 0/30/2013
343 Changes made since 1.2.0
344 * Added a Streaming API and related tests.
345 * Refactoring of the admin client apis into functional inner classes
348 Release 1.2.0 on 01/21/2013
350 Changes made since 1.1.9
351 * Added an Admin API to fetch orphaned key / entries
352 * Improved some tests related to streaming API.
353 * Correcting commons-codec version in ivy file (1.4)
356 Release 1.1.9 on 01/15/2013
358 Changes made since 1.1.8
359 * Asynchronous socket checkout improvements
360   * Changed checkout behavior of KeyedResourcePool to only create new
361     connections when there are no resources available (rather than
362     creating new connections until the pool is full)
363   * Changed QueuedKeyedResourcePool.reset behavior to better match
364     KeyedResourcePool (i.e., to not cancel queued asynchronous
365     requests unnecessarily)
366   * Removed (unnecessary) synchronization primitives from keyed resource pool
367   * Reduce granularity of failure detector locking within ThresholdFailureDetector
368 * Minor features/improvements
369   * Less verbose logging in the face of expected exceptions and errors
370   * Refactored (Queued)KeyedResourcePoolTest
371 * Bug fixes
372   * Fixed possible race condition for resource creation in KeyedResourcePool
373   * More efficient (time & space) and simpler Histogram implementation
374     with improved tests
377 Release 1.1.8 on 01/14/2013
379 Changes made since release 1.1.7
380 * Enhanced Server Monitoring 
381    -- Server NIO layer
382    -- Streaming operations to the server
383    -- BDB storage exception counts
384 * Ability to turn off BDB Checkpointing during batch modifications
385 * Added ability to delete old checksum files in Build and Push reducer
386 * Upgrade Hadoop jar to 1.0.4-p2
389 Release 1.1.7 on 01/03/2013
391 NOTE: This release is based off of release 1.1.4
393 Changes made since release 1.1.4
394 * Upgrading Hadoop jar to 1.0.2
395 * Added support for Kerberos authentication in HdfsFetcher
396 * Extra config parameters for Kerberos config and keytab file
399 NOTE: Release 1.1.5 and 1.1.6 are special client side releases
400 not based off of master. 1.1.5 was rolled back to to a weird bug.
401 1.1.6 is a special client side release including Auto-
402 bootstrapper and Versioned Avro support.
405 Release 1.1.4 on 11/29/2012
407 Changes made since release 1.1.3
408 * Added BDB parameters to control LRU behavior in cache & proactive cleaner migration
409 * Added a mlock fix for pinning the indexes of RO stores in memory
412 Release 1.1.3 on 11/28/2012
414 Changes made since release 1.1.2
415 * Fixed a bug in the build and push job, specifically the Mapper
416   that caused collisions
417 * Added retry mechanism with the HDFS fetcher for hftp
420 Release 1.1.2 on 10/31/2012
422 Changes made since release 1.1.1
423 * Reverted a change to voldemort.versioning.Versioned.getVersion() so
424   that a Version is returned as our clients expect.
427 Release 1.1.1 on 10/30/2012
429 Changes made since release 1.1.0
430 * Fixed connection leak in ClientRequestExecutorFactory
431 * Changed client to default to DefaultStoreClient
434 Release 1.1.0 on 10/19/2012
436 Changes made since release 1.0.0
438 IMPORTANT NOTE : This release has significant changes to the BDB storage layer.
439 Users are required to read the bin/PREUPGRADE_FOR_1_1_X_README file
440 thoroughly before attempting to upgrade to 1.1.0. The necessary data 
441 conversion will be done through bin/voldemort-convert-bdb.sh
443 * Upgrading to JE 4.1.17
444 * New data format that handles conflicting updates in Voldemort more
445   efficiently
446 * Move data off heap and only use it for Index
447 * When scanning, evict whatever you bring in right away.
448 * Partition based scan api to dramatically speed up rebalancing & restore
449   using Partition aware scans (you exactly scan whatever you want to fetch)
450 * Flexible knobs to control scheduling of DataCleanupJob
453 Release 1.0.0 on 10/17/2012
455 NOTE: The large version number jump from 0.96 to 1.0.0 is to
456 standardize on a version number of the sort MAJOR.MINOR.PATCH.  This
457 change is part of our effort to treat internal and open source
458 releases in a much more similar manner. Along these lines, release
459 notes for internal releases (like this one) are committed on the
460 master branch. We hope this improves transparency as we work towards
461 the next open source release.
463 Changes made since release 0.96
465 * Auto bootstrapping: ZenStoreClient and System stores
466   * Added server side system stores for managing metadata
467   * ZenStoreClient interacts with system stores
468   * ZenStoreClient auto bootstraps whenever cluster.xml or stores.xml changes
469   * Added a new routing strategy to route to all with local preference
470   * Added a client-registry for publishing client info and config values
471   * Updated LazyClientStore to try to bootstrap during Init
472   * Modified Failure Detector to work on a shared cluster object reference
473 * Avro: schema evolution and read only support
474   * Added new Avro serializer type that supports schema evolution
475   * Added Avro support to read only stores
476   * Added LinkedIn build-and-push Azkaban jobs to build read only stores to contrib
477   * Added a schema backwards compatibility check to VoldemortAdminTool and on server startup to prevent mishaps due to bad schemas
478 * Non-blocking IO: Fixed design flaw that blocked in the face of slow servers
479   * Asynchronous operations no longer do a blocking checkout to get a SocketDestination
480   * Added additional stats collection for better visibility into request queues
481 * Minor features
482   * Enhanced VoldemortAdminTool to update store metadata version
483   * Enhanced VoldemortAdminTool to work with the new system stores
484   * Added feature to voldemort-shell.sh to dump byte & object arrays
485   * Added a SlowStorageEngine for testing degraded mode performance
486   * Added mechanism to isolate BDB cache usage among stores
487   * Enhanced debug logging (for traffic analysis).
488   * Python client bug fixes (from pull request)
489   * Improved messages in request tracing
490   * Cleaned up help/usage messages within the client shell
491   * Added server config to control socket backlog
492   * Added "--query-keys" option to query multiple keys of multiple stores from specific node
493   * Added control to DataCleanupJob Frequency
494   * Unified jmxid as the factory across the board
495 * Tools
496   * bin/generate_cluster_xml.py to generate cluster.xml
497   * bin/repeat-junit.sh and bin/repeat-junit-test.sh to repeatedly run tests
498 * Bug fixes
499   * Changed getall return behavior to comply with javadoc
500   * Fixed a bug that caused unnecessary serial requests in getall
501   * HFTP performance issue bug fix (fix in byte buffer and copy process)
502   * Fixed a bug that prevented "--fetch-keys" and "--fetch-entries" in admin tool from showing multiple store results
503   * Fixed problem in sample config that prevented the server from starting
504   * Fixed some intermittent BindException failures across many unit tests
505   * Fixed some intermittent rebalance test failures
506   * Wrapped long running tests with timeouts
509 Release 0.96 on 09/05/2012
511 Changes made since 0.90.1
513  * Monitoring:
514      * Append cluster name to various mbeans for better stats display
515      * Implement average throughput in bytes
516      * Add BDB JE stats 
517      * Add 95th and 99th latency tracking 
518      * Add stats for ClientRequestExecutorPool
519      * Add error/exception count and max getall count
520      * BDB+ Data cleanup Monitoring changes
521  * Rebalancing:
522      * Donor-based rebalancing and post cleanup (see https://github.com/voldemort/voldemort/wiki/Voldemort-Donor-Based-Rebalancing for more details)
523      * Rebalancing integration testing framework (under test/integration/voldemort/rebalance/)
524      * Generate multiple cluster.xml files based on the number specified when running the tool and choose the cluster with the smallest std dev as the final-cluster.xml
525      * Add status output to log for updateEntries (used by rebalancing)
526  * Read-only pipeline:
527      * Add hftp and webhdfs support
528      * Read-only bandwidth dynamic throttler
529      * Add minimum throttle limit per store
530      * Add rollback capability to the Admin tool
531  * Voldemort-backed stack and index linked list impl
532  * Change client requests to not process responses after timeout
533  * Modified client request executor timeout to not factor in the NIO selector timeout
534  * Added BDB native backup capabalities, checksum verification and incremental backups (well tested, but not yet used in production)
535  * Add additional client-side tracing for debugging and consistency analytics
536  * Clean up logging during exception at client-side
537  * Security exception handling
538  * Add snappy to CompressionStrategyFactory
539  * Add configurable option to interrupt service being unscheduled
540  * Add logging support for tracking ScanPermit owners (for debugging purposes)
541  * Add a jmx terminate operation for async jobs
542  * Add zone option for restore from replicas
543  * Changing the enable.nio.connector to true by default
544  * Better disconnection handling for python client
545  * Split junit tests into a long and a short test suites
546  * Add separate timeouts for different operations (put, get, delete, and getAll
547  * Allow getAll to return partial results upon timeout
548  * Improved cluster generation tool
549  * Added log4j properties folder for junit test
550  * Bug fixes:
551      * httpclient 3.x to httpclient 4.x
552      * Fix NPE in listing read-only store versions
553      * Fixed 2 failure detector bugs during rebalancing or node swapping
554      * Fixed a thread leak issue in StreamingSlopPusher
555      * Fixed a NIO bug
556      * Fixed a bug in TimeBasedInconsistency resolver.
557      * Fixed race condition in client socket close
558      * Fixed a potential deadlock issue in ScanPermitWrapper
559      * Fixed a bug where a read returns null (on rare occations) when being concurrent with a write
560      * Fixed a performance bug in HdfsFetcher when hftp is used
563 Changes made since 0.90
565  * Updated the documentation for Voldemort shell tool in NOTES
566  * Added Admin API to perform Bdb data cleanup (repairJob) 
567    and corresponding unit tests
568  * Fixes in restore from replication, store creation code
569  * Improved failure detector configuration. ThresholdFailureDetector 
570    is now the default option
571  * Multiple Fixes to the Voldemort ruby client
572  * Added additional Jmx metrics to expose Bdb environment statistics, 
573    caching statistics and Voldemort batch operation statistics
574  * Updated default timeout for restore 'from replica' to 365 days
575  * New feature in the performance tool: '--use-sample' option enables 
576    'read, write back unmodified' transactions in place of writes in 
577    the workload (allows for testing read-write transactions on stores 
578    with complex schemas)
579  * Added the ability to dynamically update cluster.xml and 
580    reinitialize the scheduler
582 Release 0.90 on 7/10/2011
584 Changes made since 0.81
585  * All upgrading instructions can be found here - https://github.com/voldemort/voldemort/wiki/Upgrading-from-0.81
586  * Tooling
587  - Single consolidated administrative tool - Got rid of the admin client
588    shell and have a better Voldemort admin tool. More documentation -
589    https://github.com/voldemort/voldemort/wiki/Voldemort-Admin-tool
591  * Web manager
592  - Basic GUI in JRuby ( and Sinatra ), capable of querying for store metadata.
593  - Read contrib/web-manager/README.md for more details
594   
595  * Rebalancing
596  - New better rebalancing support with (a) checkpointing (b) progress bar (c) support for RO store rebalancing
597  - Documentation - https://github.com/voldemort/voldemort/wiki/Voldemort-Rebalancing 
598  - In the process solves Issue 203, 288, 305, 307, 311
600  * Client side changes
601  - Pipeline routed store ( with support for topology awareness ) - Changed the default client side routing
602    to use a state machine like system. More documentation - https://github.com/voldemort/voldemort/wiki/RoutedStore-redesign
603  - Lazy store client - Some of our clients are very inactive and don't really do many requests. For such
604    clients it doesn't make sense to bootstrap the metadata at startup. Hence from now onwards clients instantiated
605    from SocketStoreClientFactory give a LazyStoreClient which will not bootstrap till the first request is made
606  - Caching store client factory - We have also checked-in a new store client factory which we use internally
607    at LinkedIn to cache store clients for stores which we repeatedly. 
608  - Failure detector - We have fixed some bugs in the ThresholdFailureDetector. This is an improvement over the naive
609    BannageFailureDetector which would aggressively mark nodes down after a single failure. More details - 
610    https://github.com/voldemort/voldemort/wiki/Client-side-failure-detector-implementations
611  - Issue 219: StoreClient::put returns a Version - You may have to upgrade your clients since now the StoreClient returns
612    a version to be used in successive requests.
614  * Read-only store changes
615  - Admin based store swapper - Till 0.81 we relied on a servlet based fetcher / swapper.
616    Now we support an admin based store swapper which reports progress. 
617  - Other changes - (a) New directory format (b) Two new data format. Support for iterating over read-only data
618    (c) Checksum of data in .metadata file (d) Some monitoring changes of RO stores
620  * Jar upgrades
621  - Introduction of JNA 3.2.7 - We have introduced JNA 3.2.7 in this release for supporting symbolic links in read-only stores.
622    More details about the new RO format and changes can be found here - https://github.com/voldemort/voldemort/wiki/Upgrading-from-0.81 
623  - Protocol Buffers 2.3.0 - Upgrading protocol buffers from 2.2.0 to 2.3.0
624  - Avro 1.4.0 - Upgraded Avro from 1.3.0 to 1.4.0
626  * Storage engine
627  - Added support for Krati 0.3.6 as a storage engine ( http://sna-projects.com/krati/ ) - 
628    https://github.com/voldemort/voldemort/tree/release-090/contrib/krati
630  * Core features
631  - Hinted handoff - https://github.com/voldemort/voldemort/wiki/Hinted-Handoff 
632  - Experimental support for server side transforms - https://github.com/voldemort/voldemort/wiki/Server-side-transforms-in-Voldemort
633  - Topology awareness ( i.e. datacenter / rack ) - https://github.com/voldemort/voldemort/wiki/Topology-awareness-capability
634  - Repair Job ( Job which will delete data if the node is not responsible for it )
636  * Better monitoring
637  - Tons of JMX changes ( average bytes, etc ) - More details ( https://github.com/voldemort/voldemort/wiki/JMX-Monitoring )
638  - Key distribution generator - Ability to estimate skew of your cluster ( ./bin/run-class.sh voldemort.utils.KeyDistributionGenerator )
640  * Clients
641  - Python - Updated Python client with support for Binary JSON serialized stores ( ./clients/python/README )
642  - Ruby - Updated Ruby client ( ./clients/ruby/README.md )
644 Release 0.81 on 6/15/2010
646 Changes made since 0.80.2:
648 * IMPORTANT: we have upgraded the Hadoop Core jar to v0.20.2. Since
649   this version of Hadoop requires Java 6, in order to retain backwards
650   compatibility with Java 5, you will need to replace this jar with
651   the Hadoop 0.18.* core jar.
652 * Multiple donors for Voldemort Rebalancing: speeds up rebalancing, by
653   allowing a single stealer node to transfer partitions from multiple
654   nodes
655 * Features for EC2 Testing
656 * Read-only Stores: backwards compatibility with 0.70, bug fix in
657   Checksum code
658 * Hadoop InputFormat, Pig LoadFunc in Contrib: ability to perform
659   Map/Reduce (either directly via Hadoop or using Pig) over data in
660   Voldemort stores. See: 
661   < contrib/hadoop/test/voldemort/hadoop/VoldemortWordCount.java > for
662   an example.
663 * Voldemort Performance Tool: performance measurement tool based on
664   YCSB (Yahoo Cloud Serving Benchmark) code. Run
665   < bin/voldemort-performance-tool.sh --help > for more information.
666 * Reverted default failure detector implementation back to
667   BannagedPeriodFailureDetector due to potential bugs in the
668   ThresholdFailureDetector
670 Release 0.80.2 on 4/27/2010
672 Changes made since 0.80.1:
674 * Batched NIO writes (improves performance for AdminClient/Streaming 
675   operations when the NIO connector is enabled)
676 * VoldemortAdminTool: Added support to specify stores, support to
677   fetch all keys to a binary file, support to save keys in ASCII
678   (JSON) format [experimental], capability to add stores. Run
679   < bin/voldemort-admin-tool.sh --help > for more information.
680 * Minor bug fixes for Rebalancing
681 * Issue 240: Voldemort fetcher should use different temp directories for
682   different stores
683 * Checksum capability during construction of Voldemort read-only stores
685 Release 0.80.1 on 3/23/2010
687 Changes made since 0.80:
689 * Issue 133: Support for Apache Avro as a serialization format
690 * Issue 223: Changed the default client to use
691   TresholdFailureDetector
692 * Fixed issue 222: Revised KeyedResourcePool.close(K key) to fix
693   leaking sockets
694 * Fixed issue 198: Revised ReadRepairer to use a separate copy of the
695   vector clock, fixing a situation where NoSuchElementException would
696   be thrown
697 * Miscellaneous enhancement: support for TCP keep-alives, improved
698   read only store utilities, command line interface to AdminClient,
699   improved load testing tools
701 Release 0.80 on 2/18/2010
703 Changes made since 0.70.1:
705 * IMPORTANT: backwards compatibility between the client and server has
706   changed. A backwards incompatibility in the wire protocol was found
707   between releases 0.60 to 0.70.1 and releases prior to 0.60. We chose
708   to make 0.80 compatible with 0.57.1 and earlier versions, while
709   introducing an incompatibility with 0.60-0.70.1. What this means is
710   that if you're presently running 0.60 and higher, you would need to
711   upgrade the Voldemort jar files on *all* servers and clients.
712 * Upgraded the BDB storage engine to use BerkeleyDB-JE 4.0.92,
713   retaining ability to use BerkeleyDB-JE 3.3.* if desired. IMPORTANT:
714   if one switches from BerkeleyDB-JE 3.3.* to 4.0.92 they will be able
715   to access all of existing data. Once a switch has been made to
716   4.0.92 the data will not be readable by earlier versions of BDB. If
717   there's a chance that a roll back to 3.3.* might be needed, the best
718   course of action will be to make a backup of existing data
719   prior to upgrading.
720   Switching between 3.3.* and 4.0.* would also require rebuilding the
721   class files (e.g., by running "ant clean && ant release" after
722   replacing the BDB jar files).
723 * Compression support for read-only stores
724 * Increased the socket buffer size for transferring read-only
725   stores from Hadoop for improved performance over high-latency links
726 * NIO support for the Admin Service, including Streaming
727   Functionality
728 * Support for adding stores on the fly via the Admin
729   Service
730 * Fixed issue 209: Incorrect object passed to List.contains in 
731   RebalanceUtils.getLatestCluster()
732 * Fixed issue 211: Unnecessary read repairs during getAll() with more
733   than one key
734 * Other enhancements: better CLI for rebalancing, throttling in
735   Admin Service is now based on all disk activity
737 Release 0.70.1 on 2/1/2010
739 Changes made since 0.70:
741 * Fixed issue 205: if no keys passed to getAll() were in partitions
742   undergoing rebalancing, proxyGetAll() would be called with an
743   empty list even if rebalancing wasn't happening
745 Release 0.70 on 1/27/2010
747 Changes made since 0.60.1:
749 * A beta of rebalancing (dynamic cluster expansion) support merged
750   into the main branch. See the project's wiki for more information:
751   http://wiki.github.com/voldemort/voldemort/voldemort-rebalancing
752 * New failure detector merged into the main branch:
753   http://wiki.github.com/voldemort/voldemort/failure-detection
754 * Beta mechanism for restoring all of node's data from replicas on
755   demand. This is an alternative to a more gradual mechanism provided
756   by read-repair: useful when a machine is down for a prolonged period
757   and is then re-inserted into the cluster.
758   Invoked via JMX: the operation is restoreDataFromReplication in the
759   voldemort.server.VoldemortServer MBean, with a mandatory parameter
760   (integer >= 1) indicating the number of transfers to do in parallel.
761 * Simple gossip protocol (for cluster metadata) merged
762   into the main branch. Disabled by default: use "enable.gossip=true"
763   to enable, use "gossip.interval.ms" to set an interval at which gossip
764   occurs (default: 30000 i.e., 30 seconds).
765 * Fixed issue 190: add a way of aggregating performance data over
766   all stores
767 * Fixed issue 181: stack trackes shouldn't be filled for Obsolete
768   version exception
770 Release 0.60.1 on 12/18/2009
772 Minor changes made since 0.60:
774 * Better logging in the exception thrown if config/.temp and
775   config/.version are copied
776 * Bumping up the version to 0.60.1 in order to release updated
777   archives, fixing an error in the stores.xml for single_node_cluster
778   sample config
780 Release 0.60 on 12/15/2009
782 Changes made since 0.57.1:
784 * Admin Client/Server API: adds support for streaming-based transfer
785   of entries between nodes, deleting entries on remote nodes,
786   remotely deleting and updating metadata
787 * EC2 testing: a way to periodically run integration and performance
788   tests which involve Voldemort instances on different machines
789 * Experimental support for views
790 * Interpolation search for read-only stores
791 * Support for large lists and strings in the JSON serializer
792 * LZF compression support
793 * Ruby client contributed
794 * Fixed issue 170: hanging if a port is used by another process
795 * Fixed issue 122: suspicious integer division in
796   RequestCounter.getThroughput
797 * Miscellaneous improvements and bug fixes for read-only stores
798 * Fixed issue 168: added StorageEngine.keys()
800 Release 0.57.1 on 11/27/2009
802 Minor change made since 0.57:
804 * Modified build.xml to exclude .git directory from release tarballs/zipfiles
806 Release 0.57 on 11/16/2009
808 The following changes were made since 0.56:
810 * Fixed an issue in ReadOnlyEngine's close() method
811 * Fixed hidden logging in StorageService
812 * Fix for issue 163 (lock mode during get)
813 * Exposed bdb environment stats with setFast(false)
815 Release 0.56 on 10/26/2009
817 The following changes were made since 0.55:
819 * Fix for issue 164: Changed default bdb.max.logfile.size to 60MB
820 * Make file deletes asynchronous in read only store swap
821 * Added better debug logs for bdb stats
822 * Fixed race condition in AbstractSocketPoolTest
823 * Added improved monitoring for bdb stats
824 * Added backoff and retry logic in bootstrap code
825 * Not logging obosleteVersionException(s) or counting it in JMX exception count
826 * Fixed issue 159
827 * C++ client building on OS X
828 * Rely only on the number of versions returned to decide whether to retrieve
829   the value for put(K,V)
830 * Implemented issue 152: getVersion() API in Store
832 Release 0.55 on 10/7/2009
834 The following changes were made since 0.52 (in summary):
836 * Add an event throttler
837 * Added DataCleanupJob
838 * Protocol buffers at version 2.2.0
839 * BDB JE upgraded to 3.3.87
840 * Added data compression support (enable by adding
841     <compression>
842        <type>gzip</type>
843     </compression>
844   to value-serializer or key-serializer sections in stores.xml)
845 * Added a resource pool/socket pool implementation (no longer using
846   commons-pool)
847 * Added server-side NIO support (enabled by setting
848   enable.nio.connector=true
849   in server.properties)
850 * Improved the efficiency of the protocol buffers network protocol by using
851   CodedOutputStream/CodedInputStream (zero copy transfers)
852 * Fix for issue #21: incorrectness in vector clock inconsistency resolver
853 * Upgrade google-collections
854 * Support for building read only stores in Hadoop
855 * Added a C++ client