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