bug fixes in coordinator
[voldemort/jeffpc.git] / release_notes.txt
blobb004a1a8bfd042af6966c69ba14dbff8c00dd5e8
1 Note: Server changes are not backwards compatible. To use new
2 rebalancing tooling, servers must be upgraded before hand.
4 Release 1.4.0 on 06/21/2013
5 * Zone expansion release
7 Release 1.3.4 on 06/19/2013
8 * Read Write store bug fixes
9   - Rewrite of InMemoryStorageEngine + config to control multiVersionPuts
10   - Fixed a bug in the read-repair logic which was causing unnecessary puts.
11   - Fixed put operation in PipelineRoutedStore to ensure slop is submitted
12   - Fixed VectorClock bug triggered during versioned puts
13 * Rebalance improvement
14   - Made it safe to abort rebalance
15   - Proxy puts are established so that 'old' partition is updated and so an aborted rebalance can "roll back" without any data loss
16   - Proxy gets & puts are established within the zone making improving performance during rebalance
17 * Coordinator
18   - Added monitoring capability in the Coordinator
20 Release 1.3.3 on 04/24/2013 
21 * VoldemortBuildandPush
22   - Fixed bug with schema check
23 * Streaming Client
24   - Fixed issue with redundant callback invocation
25 Release 1.3.1 on 03/25/2013 
26 * HDFSFetcher
27   - Fixed the bug in calculating checksums when we entere a retry loop
28   - refactored per file checksums
29   - added junit test case to simulate intermittent IO exceptions 
30 * voldemort.client.protocol.admin.AdminClient
31   - Added AdminStoreClient so that AdminClient can do store operations
32     against specific store on a specific node.
33   - Added helper methods for diong put & get for specific node/store
34   - Added voldemort.client.protocol.admin.QueryKeyResult type to
35     simplify QueryKey interface
36 * Improved FetchStreamRequestHandler and sub-classes
37   - Renamed all sub-classes: 'FullScan' and 'PartitionScan' prefixes
38     for pertinent stream request handler implementations.
39   - Removed unused skipRecords parameter.
40   - Added recordsPerPartition parameter to fetch limited portion of
41     each partition.
42   - All logic about how many keys to fetch (return to invoker) is
43     server side now.
44 * RebalanceCLI
45   - Added many options to help improve the balance of (zoned) clusters.
46   - Analysis of the balance of a cluster is significantly more detailed.
47   - Fixed a bug that reduced the balance of a cluster each time it was
48     expanded.
49   - Many different algorithms for improving cluster balance are
50     implemented in voldemort.utils.RebalanceClusterUtils
51 * ConsistencyCheck & ConsistencyFixCLI
52   - New tools for ensuring data durability. These tools are necessary
53     because slop creation can fail during put operations.
54   - ConsistencyCheck determines which keys, if any, lack
55     "consistency". I.e., are present on only a subset of the expected
56     partitions.
57   - ConsistencyFix takes a list of bad (inconsistent) keys and makes
58     sure they are present on all expected partitions.
59   - ConsistencyFix also has an interface for repairing "orphaned" keys
60     that could result from an aborted rebalance.
61 * KeySamplerCLI & KeyVersionFetcherCLI
62   - KeySamplerCLI is a new tool that reads some number of keys for
63     specified partitions/stores.
64   - KeyVersionFetcherCLI is a new tool that, given a key and a store,
65     fetches the version from all nodes that host a partition that
66     ought to store a replica of the key's value.
67   - Together, KeySamplerCLI and KeyVersionFetcherCLI correctly
68     implement the intended functionality of the Entropy tool (for
69     servers that implement either FullScan and PartitionScan fetches).
70   - Entropy tool had been used in the past to verify a sample of keys
71     before and after a rebalance. Entropy tool does not work as
72     intended/expected. This is exacerbated by the partition aware
73     layouts. Instead of trying to fix the Entropy tool, these two new
74     tools were developed. Entropy is deprecated and will eventually be
75     removed from the code base.
76 * Substantial refactoring of helper & util methods:
77   - voldemort.cluster.Cluster : added helper methods
78   - voldemort.utils.ClusterInstance : wraps up one Cluster &
79     List<StoreDefinition>
80   - voldemort.utils.Cluster : utils for single Cluster object.
81   - voldemort.utils.NodeUtils : utils for Node object.
82   - voldemort.utils.RebalanceUtils : Many methods moved to more
83     appropriate helper classes
84   - voldemort.utils.StoreDefinitionUtils : utils for StoreDefinition
85     object.
86   - voldemort.utils.StoreInstance : wraps up one Cluster & one
87     StoreDefinition
88 * Et cetera
89   - ByteUtils toHexString & from HexString now rely on standard
90     libraries
91   - voldemort.client.AdminFetchTest now tests FullScan and
92     PartitionScan fetches
93   - voldemort.store.routed.ReadRepairerTest annotated all tests with
94     @Test
97 Release 1.3.0 on 03/08/2013
99 NOTE: This is an open source release! This release can be downloaded here:
100       http://github.com/voldemort/voldemort/downloads.
102 Changes made since 1.2.3
103 * VoldemortConfig and ClientConfig now contain detailed documentation
104 * BDB-JE defaults set to ones in prod@linkedin
105 * Bug fixes on kerberos support for Hadoop
108 Release 1.2.3 on 02/20/2013
110 Changes made since 1.2.2
111 * Added a retry loop and synchronized block while getting Hadoop FS
112 * Code cleanup in HdfsFetcher to make it more readable.
113 * Throwing explicit exceptions in HdfsFetcher instead of 
114   returning null to be more precise in the Azkaban logs.
117 Release 1.2.2 on 02/19/2013
119 Changes made since 1.2.1
120 * Synchronized the streaming API
121 * Fixed some of the streaming API tests.
124 Release 1.2.1 on 0/30/2013
126 Changes made since 1.2.0
127 * Added a Streaming API and related tests.
128 * Refactoring of the admin client apis into functional inner classes
131 Release 1.2.0 on 01/21/2013
133 Changes made since 1.1.9
134 * Added an Admin API to fetch orphaned key / entries
135 * Improved some tests related to streaming API.
136 * Correcting commons-codec version in ivy file (1.4)
139 Release 1.1.9 on 01/15/2013
141 Changes made since 1.1.8
142 * Asynchronous socket checkout improvements
143   * Changed checkout behavior of KeyedResourcePool to only create new
144     connections when there are no resources available (rather than
145     creating new connections until the pool is full)
146   * Changed QueuedKeyedResourcePool.reset behavior to better match
147     KeyedResourcePool (i.e., to not cancel queued asynchronous
148     requests unnecessarily)
149   * Removed (unnecessary) synchronization primitives from keyed resource pool
150   * Reduce granularity of failure detector locking within ThresholdFailureDetector
151 * Minor features/improvements
152   * Less verbose logging in the face of expected exceptions and errors
153   * Refactored (Queued)KeyedResourcePoolTest
154 * Bug fixes
155   * Fixed possible race condition for resource creation in KeyedResourcePool
156   * More efficient (time & space) and simpler Histogram implementation
157     with improved tests
160 Release 1.1.8 on 01/14/2013
162 Changes made since release 1.1.7
163 * Enhanced Server Monitoring 
164    -- Server NIO layer
165    -- Streaming operations to the server
166    -- BDB storage exception counts
167 * Ability to turn off BDB Checkpointing during batch modifications
168 * Added ability to delete old checksum files in Build and Push reducer
169 * Upgrade Hadoop jar to 1.0.4-p2
172 Release 1.1.7 on 01/03/2013
174 NOTE: This release is based off of release 1.1.4
176 Changes made since release 1.1.4
177 * Upgrading Hadoop jar to 1.0.2
178 * Added support for Kerberos authentication in HdfsFetcher
179 * Extra config parameters for Kerberos config and keytab file
182 NOTE: Release 1.1.5 and 1.1.6 are special client side releases
183 not based off of master. 1.1.5 was rolled back to to a weird bug.
184 1.1.6 is a special client side release including Auto-
185 bootstrapper and Versioned Avro support.
188 Release 1.1.4 on 11/29/2012
190 Changes made since release 1.1.3
191 * Added BDB parameters to control LRU behavior in cache & proactive cleaner migration
192 * Added a mlock fix for pinning the indexes of RO stores in memory
195 Release 1.1.3 on 11/28/2012
197 Changes made since release 1.1.2
198 * Fixed a bug in the build and push job, specifically the Mapper
199   that caused collisions
200 * Added retry mechanism with the HDFS fetcher for hftp
203 Release 1.1.2 on 10/31/2012
205 Changes made since release 1.1.1
206 * Reverted a change to voldemort.versioning.Versioned.getVersion() so
207   that a Version is returned as our clients expect.
210 Release 1.1.1 on 10/30/2012
212 Changes made since release 1.1.0
213 * Fixed connection leak in ClientRequestExecutorFactory
214 * Changed client to default to DefaultStoreClient
217 Release 1.1.0 on 10/19/2012
219 Changes made since release 1.0.0
221 IMPORTANT NOTE : This release has significant changes to the BDB storage layer.
222 Users are required to read the bin/PREUPGRADE_FOR_1_1_X_README file
223 thoroughly before attempting to upgrade to 1.1.0. The necessary data 
224 conversion will be done through bin/voldemort-convert-bdb.sh
226 * Upgrading to JE 4.1.17
227 * New data format that handles conflicting updates in Voldemort more
228   efficiently
229 * Move data off heap and only use it for Index
230 * When scanning, evict whatever you bring in right away.
231 * Partition based scan api to dramatically speed up rebalancing & restore
232   using Partition aware scans (you exactly scan whatever you want to fetch)
233 * Flexible knobs to control scheduling of DataCleanupJob
236 Release 1.0.0 on 10/17/2012
238 NOTE: The large version number jump from 0.96 to 1.0.0 is to
239 standardize on a version number of the sort MAJOR.MINOR.PATCH.  This
240 change is part of our effort to treat internal and open source
241 releases in a much more similar manner. Along these lines, release
242 notes for internal releases (like this one) are committed on the
243 master branch. We hope this improves transparency as we work towards
244 the next open source release.
246 Changes made since release 0.96
248 * Auto bootstrapping: ZenStoreClient and System stores
249   * Added server side system stores for managing metadata
250   * ZenStoreClient interacts with system stores
251   * ZenStoreClient auto bootstraps whenever cluster.xml or stores.xml changes
252   * Added a new routing strategy to route to all with local preference
253   * Added a client-registry for publishing client info and config values
254   * Updated LazyClientStore to try to bootstrap during Init
255   * Modified Failure Detector to work on a shared cluster object reference
256 * Avro: schema evolution and read only support
257   * Added new Avro serializer type that supports schema evolution
258   * Added Avro support to read only stores
259   * Added LinkedIn build-and-push Azkaban jobs to build read only stores to contrib
260   * Added a schema backwards compatibility check to VoldemortAdminTool and on server startup to prevent mishaps due to bad schemas
261 * Non-blocking IO: Fixed design flaw that blocked in the face of slow servers
262   * Asynchronous operations no longer do a blocking checkout to get a SocketDestination
263   * Added additional stats collection for better visibility into request queues
264 * Minor features
265   * Enhanced VoldemortAdminTool to update store metadata version
266   * Enhanced VoldemortAdminTool to work with the new system stores
267   * Added feature to voldemort-shell.sh to dump byte & object arrays
268   * Added a SlowStorageEngine for testing degraded mode performance
269   * Added mechanism to isolate BDB cache usage among stores
270   * Enhanced debug logging (for traffic analysis).
271   * Python client bug fixes (from pull request)
272   * Improved messages in request tracing
273   * Cleaned up help/usage messages within the client shell
274   * Added server config to control socket backlog
275   * Added "--query-keys" option to query multiple keys of multiple stores from specific node
276   * Added control to DataCleanupJob Frequency
277   * Unified jmxid as the factory across the board
278 * Tools
279   * bin/generate_cluster_xml.py to generate cluster.xml
280   * bin/repeat-junit.sh and bin/repeat-junit-test.sh to repeatedly run tests
281 * Bug fixes
282   * Changed getall return behavior to comply with javadoc
283   * Fixed a bug that caused unnecessary serial requests in getall
284   * HFTP performance issue bug fix (fix in byte buffer and copy process)
285   * Fixed a bug that prevented "--fetch-keys" and "--fetch-entries" in admin tool from showing multiple store results
286   * Fixed problem in sample config that prevented the server from starting
287   * Fixed some intermittent BindException failures across many unit tests
288   * Fixed some intermittent rebalance test failures
289   * Wrapped long running tests with timeouts
292 Release 0.96 on 09/05/2012
294 Changes made since 0.90.1
296  * Monitoring:
297      * Append cluster name to various mbeans for better stats display
298      * Implement average throughput in bytes
299      * Add BDB JE stats 
300      * Add 95th and 99th latency tracking 
301      * Add stats for ClientRequestExecutorPool
302      * Add error/exception count and max getall count
303      * BDB+ Data cleanup Monitoring changes
304  * Rebalancing:
305      * Donor-based rebalancing and post cleanup (see https://github.com/voldemort/voldemort/wiki/Voldemort-Donor-Based-Rebalancing for more details)
306      * Rebalancing integration testing framework (under test/integration/voldemort/rebalance/)
307      * 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
308      * Add status output to log for updateEntries (used by rebalancing)
309  * Read-only pipeline:
310      * Add hftp and webhdfs support
311      * Read-only bandwidth dynamic throttler
312      * Add minimum throttle limit per store
313      * Add rollback capability to the Admin tool
314  * Voldemort-backed stack and index linked list impl
315  * Change client requests to not process responses after timeout
316  * Modified client request executor timeout to not factor in the NIO selector timeout
317  * Added BDB native backup capabalities, checksum verification and incremental backups (well tested, but not yet used in production)
318  * Add additional client-side tracing for debugging and consistency analytics
319  * Clean up logging during exception at client-side
320  * Security exception handling
321  * Add snappy to CompressionStrategyFactory
322  * Add configurable option to interrupt service being unscheduled
323  * Add logging support for tracking ScanPermit owners (for debugging purposes)
324  * Add a jmx terminate operation for async jobs
325  * Add zone option for restore from replicas
326  * Changing the enable.nio.connector to true by default
327  * Better disconnection handling for python client
328  * Split junit tests into a long and a short test suites
329  * Add separate timeouts for different operations (put, get, delete, and getAll
330  * Allow getAll to return partial results upon timeout
331  * Improved cluster generation tool
332  * Added log4j properties folder for junit test
333  * Bug fixes:
334      * httpclient 3.x to httpclient 4.x
335      * Fix NPE in listing read-only store versions
336      * Fixed 2 failure detector bugs during rebalancing or node swapping
337      * Fixed a thread leak issue in StreamingSlopPusher
338      * Fixed a NIO bug
339      * Fixed a bug in TimeBasedInconsistency resolver.
340      * Fixed race condition in client socket close
341      * Fixed a potential deadlock issue in ScanPermitWrapper
342      * Fixed a bug where a read returns null (on rare occations) when being concurrent with a write
343      * Fixed a performance bug in HdfsFetcher when hftp is used
346 Changes made since 0.90
348  * Updated the documentation for Voldemort shell tool in NOTES
349  * Added Admin API to perform Bdb data cleanup (repairJob) 
350    and corresponding unit tests
351  * Fixes in restore from replication, store creation code
352  * Improved failure detector configuration. ThresholdFailureDetector 
353    is now the default option
354  * Multiple Fixes to the Voldemort ruby client
355  * Added additional Jmx metrics to expose Bdb environment statistics, 
356    caching statistics and Voldemort batch operation statistics
357  * Updated default timeout for restore 'from replica' to 365 days
358  * New feature in the performance tool: '--use-sample' option enables 
359    'read, write back unmodified' transactions in place of writes in 
360    the workload (allows for testing read-write transactions on stores 
361    with complex schemas)
362  * Added the ability to dynamically update cluster.xml and 
363    reinitialize the scheduler
365 Release 0.90 on 7/10/2011
367 Changes made since 0.81
368  * All upgrading instructions can be found here - https://github.com/voldemort/voldemort/wiki/Upgrading-from-0.81
369  * Tooling
370  - Single consolidated administrative tool - Got rid of the admin client
371    shell and have a better Voldemort admin tool. More documentation -
372    https://github.com/voldemort/voldemort/wiki/Voldemort-Admin-tool
374  * Web manager
375  - Basic GUI in JRuby ( and Sinatra ), capable of querying for store metadata.
376  - Read contrib/web-manager/README.md for more details
377   
378  * Rebalancing
379  - New better rebalancing support with (a) checkpointing (b) progress bar (c) support for RO store rebalancing
380  - Documentation - https://github.com/voldemort/voldemort/wiki/Voldemort-Rebalancing 
381  - In the process solves Issue 203, 288, 305, 307, 311
383  * Client side changes
384  - Pipeline routed store ( with support for topology awareness ) - Changed the default client side routing
385    to use a state machine like system. More documentation - https://github.com/voldemort/voldemort/wiki/RoutedStore-redesign
386  - Lazy store client - Some of our clients are very inactive and don't really do many requests. For such
387    clients it doesn't make sense to bootstrap the metadata at startup. Hence from now onwards clients instantiated
388    from SocketStoreClientFactory give a LazyStoreClient which will not bootstrap till the first request is made
389  - Caching store client factory - We have also checked-in a new store client factory which we use internally
390    at LinkedIn to cache store clients for stores which we repeatedly. 
391  - Failure detector - We have fixed some bugs in the ThresholdFailureDetector. This is an improvement over the naive
392    BannageFailureDetector which would aggressively mark nodes down after a single failure. More details - 
393    https://github.com/voldemort/voldemort/wiki/Client-side-failure-detector-implementations
394  - Issue 219: StoreClient::put returns a Version - You may have to upgrade your clients since now the StoreClient returns
395    a version to be used in successive requests.
397  * Read-only store changes
398  - Admin based store swapper - Till 0.81 we relied on a servlet based fetcher / swapper.
399    Now we support an admin based store swapper which reports progress. 
400  - Other changes - (a) New directory format (b) Two new data format. Support for iterating over read-only data
401    (c) Checksum of data in .metadata file (d) Some monitoring changes of RO stores
403  * Jar upgrades
404  - Introduction of JNA 3.2.7 - We have introduced JNA 3.2.7 in this release for supporting symbolic links in read-only stores.
405    More details about the new RO format and changes can be found here - https://github.com/voldemort/voldemort/wiki/Upgrading-from-0.81 
406  - Protocol Buffers 2.3.0 - Upgrading protocol buffers from 2.2.0 to 2.3.0
407  - Avro 1.4.0 - Upgraded Avro from 1.3.0 to 1.4.0
409  * Storage engine
410  - Added support for Krati 0.3.6 as a storage engine ( http://sna-projects.com/krati/ ) - 
411    https://github.com/voldemort/voldemort/tree/release-090/contrib/krati
413  * Core features
414  - Hinted handoff - https://github.com/voldemort/voldemort/wiki/Hinted-Handoff 
415  - Experimental support for server side transforms - https://github.com/voldemort/voldemort/wiki/Server-side-transforms-in-Voldemort
416  - Topology awareness ( i.e. datacenter / rack ) - https://github.com/voldemort/voldemort/wiki/Topology-awareness-capability
417  - Repair Job ( Job which will delete data if the node is not responsible for it )
419  * Better monitoring
420  - Tons of JMX changes ( average bytes, etc ) - More details ( https://github.com/voldemort/voldemort/wiki/JMX-Monitoring )
421  - Key distribution generator - Ability to estimate skew of your cluster ( ./bin/run-class.sh voldemort.utils.KeyDistributionGenerator )
423  * Clients
424  - Python - Updated Python client with support for Binary JSON serialized stores ( ./clients/python/README )
425  - Ruby - Updated Ruby client ( ./clients/ruby/README.md )
427 Release 0.81 on 6/15/2010
429 Changes made since 0.80.2:
431 * IMPORTANT: we have upgraded the Hadoop Core jar to v0.20.2. Since
432   this version of Hadoop requires Java 6, in order to retain backwards
433   compatibility with Java 5, you will need to replace this jar with
434   the Hadoop 0.18.* core jar.
435 * Multiple donors for Voldemort Rebalancing: speeds up rebalancing, by
436   allowing a single stealer node to transfer partitions from multiple
437   nodes
438 * Features for EC2 Testing
439 * Read-only Stores: backwards compatibility with 0.70, bug fix in
440   Checksum code
441 * Hadoop InputFormat, Pig LoadFunc in Contrib: ability to perform
442   Map/Reduce (either directly via Hadoop or using Pig) over data in
443   Voldemort stores. See: 
444   < contrib/hadoop/test/voldemort/hadoop/VoldemortWordCount.java > for
445   an example.
446 * Voldemort Performance Tool: performance measurement tool based on
447   YCSB (Yahoo Cloud Serving Benchmark) code. Run
448   < bin/voldemort-performance-tool.sh --help > for more information.
449 * Reverted default failure detector implementation back to
450   BannagedPeriodFailureDetector due to potential bugs in the
451   ThresholdFailureDetector
453 Release 0.80.2 on 4/27/2010
455 Changes made since 0.80.1:
457 * Batched NIO writes (improves performance for AdminClient/Streaming 
458   operations when the NIO connector is enabled)
459 * VoldemortAdminTool: Added support to specify stores, support to
460   fetch all keys to a binary file, support to save keys in ASCII
461   (JSON) format [experimental], capability to add stores. Run
462   < bin/voldemort-admin-tool.sh --help > for more information.
463 * Minor bug fixes for Rebalancing
464 * Issue 240: Voldemort fetcher should use different temp directories for
465   different stores
466 * Checksum capability during construction of Voldemort read-only stores
468 Release 0.80.1 on 3/23/2010
470 Changes made since 0.80:
472 * Issue 133: Support for Apache Avro as a serialization format
473 * Issue 223: Changed the default client to use
474   TresholdFailureDetector
475 * Fixed issue 222: Revised KeyedResourcePool.close(K key) to fix
476   leaking sockets
477 * Fixed issue 198: Revised ReadRepairer to use a separate copy of the
478   vector clock, fixing a situation where NoSuchElementException would
479   be thrown
480 * Miscellaneous enhancement: support for TCP keep-alives, improved
481   read only store utilities, command line interface to AdminClient,
482   improved load testing tools
484 Release 0.80 on 2/18/2010
486 Changes made since 0.70.1:
488 * IMPORTANT: backwards compatibility between the client and server has
489   changed. A backwards incompatibility in the wire protocol was found
490   between releases 0.60 to 0.70.1 and releases prior to 0.60. We chose
491   to make 0.80 compatible with 0.57.1 and earlier versions, while
492   introducing an incompatibility with 0.60-0.70.1. What this means is
493   that if you're presently running 0.60 and higher, you would need to
494   upgrade the Voldemort jar files on *all* servers and clients.
495 * Upgraded the BDB storage engine to use BerkeleyDB-JE 4.0.92,
496   retaining ability to use BerkeleyDB-JE 3.3.* if desired. IMPORTANT:
497   if one switches from BerkeleyDB-JE 3.3.* to 4.0.92 they will be able
498   to access all of existing data. Once a switch has been made to
499   4.0.92 the data will not be readable by earlier versions of BDB. If
500   there's a chance that a roll back to 3.3.* might be needed, the best
501   course of action will be to make a backup of existing data
502   prior to upgrading.
503   Switching between 3.3.* and 4.0.* would also require rebuilding the
504   class files (e.g., by running "ant clean && ant release" after
505   replacing the BDB jar files).
506 * Compression support for read-only stores
507 * Increased the socket buffer size for transferring read-only
508   stores from Hadoop for improved performance over high-latency links
509 * NIO support for the Admin Service, including Streaming
510   Functionality
511 * Support for adding stores on the fly via the Admin
512   Service
513 * Fixed issue 209: Incorrect object passed to List.contains in 
514   RebalanceUtils.getLatestCluster()
515 * Fixed issue 211: Unnecessary read repairs during getAll() with more
516   than one key
517 * Other enhancements: better CLI for rebalancing, throttling in
518   Admin Service is now based on all disk activity
520 Release 0.70.1 on 2/1/2010
522 Changes made since 0.70:
524 * Fixed issue 205: if no keys passed to getAll() were in partitions
525   undergoing rebalancing, proxyGetAll() would be called with an
526   empty list even if rebalancing wasn't happening
528 Release 0.70 on 1/27/2010
530 Changes made since 0.60.1:
532 * A beta of rebalancing (dynamic cluster expansion) support merged
533   into the main branch. See the project's wiki for more information:
534   http://wiki.github.com/voldemort/voldemort/voldemort-rebalancing
535 * New failure detector merged into the main branch:
536   http://wiki.github.com/voldemort/voldemort/failure-detection
537 * Beta mechanism for restoring all of node's data from replicas on
538   demand. This is an alternative to a more gradual mechanism provided
539   by read-repair: useful when a machine is down for a prolonged period
540   and is then re-inserted into the cluster.
541   Invoked via JMX: the operation is restoreDataFromReplication in the
542   voldemort.server.VoldemortServer MBean, with a mandatory parameter
543   (integer >= 1) indicating the number of transfers to do in parallel.
544 * Simple gossip protocol (for cluster metadata) merged
545   into the main branch. Disabled by default: use "enable.gossip=true"
546   to enable, use "gossip.interval.ms" to set an interval at which gossip
547   occurs (default: 30000 i.e., 30 seconds).
548 * Fixed issue 190: add a way of aggregating performance data over
549   all stores
550 * Fixed issue 181: stack trackes shouldn't be filled for Obsolete
551   version exception
553 Release 0.60.1 on 12/18/2009
555 Minor changes made since 0.60:
557 * Better logging in the exception thrown if config/.temp and
558   config/.version are copied
559 * Bumping up the version to 0.60.1 in order to release updated
560   archives, fixing an error in the stores.xml for single_node_cluster
561   sample config
563 Release 0.60 on 12/15/2009
565 Changes made since 0.57.1:
567 * Admin Client/Server API: adds support for streaming-based transfer
568   of entries between nodes, deleting entries on remote nodes,
569   remotely deleting and updating metadata
570 * EC2 testing: a way to periodically run integration and performance
571   tests which involve Voldemort instances on different machines
572 * Experimental support for views
573 * Interpolation search for read-only stores
574 * Support for large lists and strings in the JSON serializer
575 * LZF compression support
576 * Ruby client contributed
577 * Fixed issue 170: hanging if a port is used by another process
578 * Fixed issue 122: suspicious integer division in
579   RequestCounter.getThroughput
580 * Miscellaneous improvements and bug fixes for read-only stores
581 * Fixed issue 168: added StorageEngine.keys()
583 Release 0.57.1 on 11/27/2009
585 Minor change made since 0.57:
587 * Modified build.xml to exclude .git directory from release tarballs/zipfiles
589 Release 0.57 on 11/16/2009
591 The following changes were made since 0.56:
593 * Fixed an issue in ReadOnlyEngine's close() method
594 * Fixed hidden logging in StorageService
595 * Fix for issue 163 (lock mode during get)
596 * Exposed bdb environment stats with setFast(false)
598 Release 0.56 on 10/26/2009
600 The following changes were made since 0.55:
602 * Fix for issue 164: Changed default bdb.max.logfile.size to 60MB
603 * Make file deletes asynchronous in read only store swap
604 * Added better debug logs for bdb stats
605 * Fixed race condition in AbstractSocketPoolTest
606 * Added improved monitoring for bdb stats
607 * Added backoff and retry logic in bootstrap code
608 * Not logging obosleteVersionException(s) or counting it in JMX exception count
609 * Fixed issue 159
610 * C++ client building on OS X
611 * Rely only on the number of versions returned to decide whether to retrieve
612   the value for put(K,V)
613 * Implemented issue 152: getVersion() API in Store
615 Release 0.55 on 10/7/2009
617 The following changes were made since 0.52 (in summary):
619 * Add an event throttler
620 * Added DataCleanupJob
621 * Protocol buffers at version 2.2.0
622 * BDB JE upgraded to 3.3.87
623 * Added data compression support (enable by adding
624     <compression>
625        <type>gzip</type>
626     </compression>
627   to value-serializer or key-serializer sections in stores.xml)
628 * Added a resource pool/socket pool implementation (no longer using
629   commons-pool)
630 * Added server-side NIO support (enabled by setting
631   enable.nio.connector=true
632   in server.properties)
633 * Improved the efficiency of the protocol buffers network protocol by using
634   CodedOutputStream/CodedInputStream (zero copy transfers)
635 * Fix for issue #21: incorrectness in vector clock inconsistency resolver
636 * Upgrade google-collections
637 * Support for building read only stores in Hadoop
638 * Added a C++ client