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