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