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