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