Merge pull request #83 from pbailis/master
[voldemort/jeffpc.git] / release_notes.txt
blob62c1867d70ce0d320dc4b617951b8f01cb6b3a65
1 Release 0.90.1 on 10/10/2011
3 Changes made since 0.90
5  * Updated the documentation for Voldemort shell tool in NOTES
6  * Added Admin API to perform Bdb data cleanup (repairJob) 
7    and corresponding unit tests
8  * Fixes in restore from replication, store creation code
9  * Improved failure detector configuration. ThresholdFailureDetector 
10    is now the default option
11  * Multiple Fixes to the Voldemort ruby client
12  * Added additional Jmx metrics to expose Bdb environment statistics, 
13    caching statistics and Voldemort batch operation statistics
14  * Updated default timeout for restore 'from replica' to 365 days
15  * New feature in the performance tool: '--use-sample' option enables 
16    'read, write back unmodified' transactions in place of writes in 
17    the workload (allows for testing read-write transactions on stores 
18    with complex schemas)
19  * Added the ability to dynamically update cluster.xml and 
20    reinitialize the scheduler
22 Release 0.90 on 7/10/2011
24 Changes made since 0.81
25  * All upgrading instructions can be found here - https://github.com/voldemort/voldemort/wiki/Upgrading-from-0.81
26  * Tooling
27  - Single consolidated administrative tool - Got rid of the admin client
28    shell and have a better Voldemort admin tool. More documentation -
29    https://github.com/voldemort/voldemort/wiki/Voldemort-Admin-tool
31  * Web manager
32  - Basic GUI in JRuby ( and Sinatra ), capable of querying for store metadata.
33  - Read contrib/web-manager/README.md for more details
34   
35  * Rebalancing
36  - New better rebalancing support with (a) checkpointing (b) progress bar (c) support for RO store rebalancing
37  - Documentation - https://github.com/voldemort/voldemort/wiki/Voldemort-Rebalancing 
38  - In the process solves Issue 203, 288, 305, 307, 311
40  * Client side changes
41  - Pipeline routed store ( with support for topology awareness ) - Changed the default client side routing
42    to use a state machine like system. More documentation - https://github.com/voldemort/voldemort/wiki/RoutedStore-redesign
43  - Lazy store client - Some of our clients are very inactive and don't really do many requests. For such
44    clients it doesn't make sense to bootstrap the metadata at startup. Hence from now onwards clients instantiated
45    from SocketStoreClientFactory give a LazyStoreClient which will not bootstrap till the first request is made
46  - Caching store client factory - We have also checked-in a new store client factory which we use internally
47    at LinkedIn to cache store clients for stores which we repeatedly. 
48  - Failure detector - We have fixed some bugs in the ThresholdFailureDetector. This is an improvement over the naive
49    BannageFailureDetector which would aggressively mark nodes down after a single failure. More details - 
50    https://github.com/voldemort/voldemort/wiki/Client-side-failure-detector-implementations
51  - Issue 219: StoreClient::put returns a Version - You may have to upgrade your clients since now the StoreClient returns
52    a version to be used in successive requests.
54  * Read-only store changes
55  - Admin based store swapper - Till 0.81 we relied on a servlet based fetcher / swapper.
56    Now we support an admin based store swapper which reports progress. 
57  - Other changes - (a) New directory format (b) Two new data format. Support for iterating over read-only data
58    (c) Checksum of data in .metadata file (d) Some monitoring changes of RO stores
60  * Jar upgrades
61  - Introduction of JNA 3.2.7 - We have introduced JNA 3.2.7 in this release for supporting symbolic links in read-only stores.
62    More details about the new RO format and changes can be found here - https://github.com/voldemort/voldemort/wiki/Upgrading-from-0.81 
63  - Protocol Buffers 2.3.0 - Upgrading protocol buffers from 2.2.0 to 2.3.0
64  - Avro 1.4.0 - Upgraded Avro from 1.3.0 to 1.4.0
66  * Storage engine
67  - Added support for Krati 0.3.6 as a storage engine ( http://sna-projects.com/krati/ ) - 
68    https://github.com/voldemort/voldemort/tree/release-090/contrib/krati
70  * Core features
71  - Hinted handoff - https://github.com/voldemort/voldemort/wiki/Hinted-Handoff 
72  - Experimental support for server side transforms - https://github.com/voldemort/voldemort/wiki/Server-side-transforms-in-Voldemort
73  - Topology awareness ( i.e. datacenter / rack ) - https://github.com/voldemort/voldemort/wiki/Topology-awareness-capability
74  - Repair Job ( Job which will delete data if the node is not responsible for it )
76  * Better monitoring
77  - Tons of JMX changes ( average bytes, etc ) - More details ( https://github.com/voldemort/voldemort/wiki/JMX-Monitoring )
78  - Key distribution generator - Ability to estimate skew of your cluster ( ./bin/run-class.sh voldemort.utils.KeyDistributionGenerator )
80  * Clients
81  - Python - Updated Python client with support for Binary JSON serialized stores ( ./clients/python/README )
82  - Ruby - Updated Ruby client ( ./clients/ruby/README.md )
84 Release 0.81 on 6/15/2010
86 Changes made since 0.80.2:
88 * IMPORTANT: we have upgraded the Hadoop Core jar to v0.20.2. Since
89   this version of Hadoop requires Java 6, in order to retain backwards
90   compatibility with Java 5, you will need to replace this jar with
91   the Hadoop 0.18.* core jar.
92 * Multiple donors for Voldemort Rebalancing: speeds up rebalancing, by
93   allowing a single stealer node to transfer partitions from multiple
94   nodes
95 * Features for EC2 Testing
96 * Read-only Stores: backwards compatibility with 0.70, bug fix in
97   Checksum code
98 * Hadoop InputFormat, Pig LoadFunc in Contrib: ability to perform
99   Map/Reduce (either directly via Hadoop or using Pig) over data in
100   Voldemort stores. See: 
101   < contrib/hadoop/test/voldemort/hadoop/VoldemortWordCount.java > for
102   an example.
103 * Voldemort Performance Tool: performance measurement tool based on
104   YCSB (Yahoo Cloud Serving Benchmark) code. Run
105   < bin/voldemort-performance-tool.sh --help > for more information.
106 * Reverted default failure detector implementation back to
107   BannagedPeriodFailureDetector due to potential bugs in the
108   ThresholdFailureDetector
110 Release 0.80.2 on 4/27/2010
112 Changes made since 0.80.1:
114 * Batched NIO writes (improves performance for AdminClient/Streaming 
115   operations when the NIO connector is enabled)
116 * VoldemortAdminTool: Added support to specify stores, support to
117   fetch all keys to a binary file, support to save keys in ASCII
118   (JSON) format [experimental], capability to add stores. Run
119   < bin/voldemort-admin-tool.sh --help > for more information.
120 * Minor bug fixes for Rebalancing
121 * Issue 240: Voldemort fetcher should use different temp directories for
122   different stores
123 * Checksum capability during construction of Voldemort read-only stores
125 Release 0.80.1 on 3/23/2010
127 Changes made since 0.80:
129 * Issue 133: Support for Apache Avro as a serialization format
130 * Issue 223: Changed the default client to use
131   TresholdFailureDetector
132 * Fixed issue 222: Revised KeyedResourcePool.close(K key) to fix
133   leaking sockets
134 * Fixed issue 198: Revised ReadRepairer to use a separate copy of the
135   vector clock, fixing a situation where NoSuchElementException would
136   be thrown
137 * Miscellaneous enhancement: support for TCP keep-alives, improved
138   read only store utilities, command line interface to AdminClient,
139   improved load testing tools
141 Release 0.80 on 2/18/2010
143 Changes made since 0.70.1:
145 * IMPORTANT: backwards compatibility between the client and server has
146   changed. A backwards incompatibility in the wire protocol was found
147   between releases 0.60 to 0.70.1 and releases prior to 0.60. We chose
148   to make 0.80 compatible with 0.57.1 and earlier versions, while
149   introducing an incompatibility with 0.60-0.70.1. What this means is
150   that if you're presently running 0.60 and higher, you would need to
151   upgrade the Voldemort jar files on *all* servers and clients.
152 * Upgraded the BDB storage engine to use BerkeleyDB-JE 4.0.92,
153   retaining ability to use BerkeleyDB-JE 3.3.* if desired. IMPORTANT:
154   if one switches from BerkeleyDB-JE 3.3.* to 4.0.92 they will be able
155   to access all of existing data. Once a switch has been made to
156   4.0.92 the data will not be readable by earlier versions of BDB. If
157   there's a chance that a roll back to 3.3.* might be needed, the best
158   course of action will be to make a backup of existing data
159   prior to upgrading.
160   Switching between 3.3.* and 4.0.* would also require rebuilding the
161   class files (e.g., by running "ant clean && ant release" after
162   replacing the BDB jar files).
163 * Compression support for read-only stores
164 * Increased the socket buffer size for transferring read-only
165   stores from Hadoop for improved performance over high-latency links
166 * NIO support for the Admin Service, including Streaming
167   Functionality
168 * Support for adding stores on the fly via the Admin
169   Service
170 * Fixed issue 209: Incorrect object passed to List.contains in 
171   RebalanceUtils.getLatestCluster()
172 * Fixed issue 211: Unnecessary read repairs during getAll() with more
173   than one key
174 * Other enhancements: better CLI for rebalancing, throttling in
175   Admin Service is now based on all disk activity
177 Release 0.70.1 on 2/1/2010
179 Changes made since 0.70:
181 * Fixed issue 205: if no keys passed to getAll() were in partitions
182   undergoing rebalancing, proxyGetAll() would be called with an
183   empty list even if rebalancing wasn't happening
185 Release 0.70 on 1/27/2010
187 Changes made since 0.60.1:
189 * A beta of rebalancing (dynamic cluster expansion) support merged
190   into the main branch. See the project's wiki for more information:
191   http://wiki.github.com/voldemort/voldemort/voldemort-rebalancing
192 * New failure detector merged into the main branch:
193   http://wiki.github.com/voldemort/voldemort/failure-detection
194 * Beta mechanism for restoring all of node's data from replicas on
195   demand. This is an alternative to a more gradual mechanism provided
196   by read-repair: useful when a machine is down for a prolonged period
197   and is then re-inserted into the cluster.
198   Invoked via JMX: the operation is restoreDataFromReplication in the
199   voldemort.server.VoldemortServer MBean, with a mandatory parameter
200   (integer >= 1) indicating the number of transfers to do in parallel.
201 * Simple gossip protocol (for cluster metadata) merged
202   into the main branch. Disabled by default: use "enable.gossip=true"
203   to enable, use "gossip.interval.ms" to set an interval at which gossip
204   occurs (default: 30000 i.e., 30 seconds).
205 * Fixed issue 190: add a way of aggregating performance data over
206   all stores
207 * Fixed issue 181: stack trackes shouldn't be filled for Obsolete
208   version exception
210 Release 0.60.1 on 12/18/2009
212 Minor changes made since 0.60:
214 * Better logging in the exception thrown if config/.temp and
215   config/.version are copied
216 * Bumping up the version to 0.60.1 in order to release updated
217   archives, fixing an error in the stores.xml for single_node_cluster
218   sample config
220 Release 0.60 on 12/15/2009
222 Changes made since 0.57.1:
224 * Admin Client/Server API: adds support for streaming-based transfer
225   of entries between nodes, deleting entries on remote nodes,
226   remotely deleting and updating metadata
227 * EC2 testing: a way to periodically run integration and performance
228   tests which involve Voldemort instances on different machines
229 * Experimental support for views
230 * Interpolation search for read-only stores
231 * Support for large lists and strings in the JSON serializer
232 * LZF compression support
233 * Ruby client contributed
234 * Fixed issue 170: hanging if a port is used by another process
235 * Fixed issue 122: suspicious integer division in
236   RequestCounter.getThroughput
237 * Miscellaneous improvements and bug fixes for read-only stores
238 * Fixed issue 168: added StorageEngine.keys()
240 Release 0.57.1 on 11/27/2009
242 Minor change made since 0.57:
244 * Modified build.xml to exclude .git directory from release tarballs/zipfiles
246 Release 0.57 on 11/16/2009
248 The following changes were made since 0.56:
250 * Fixed an issue in ReadOnlyEngine's close() method
251 * Fixed hidden logging in StorageService
252 * Fix for issue 163 (lock mode during get)
253 * Exposed bdb environment stats with setFast(false)
255 Release 0.56 on 10/26/2009
257 The following changes were made since 0.55:
259 * Fix for issue 164: Changed default bdb.max.logfile.size to 60MB
260 * Make file deletes asynchronous in read only store swap
261 * Added better debug logs for bdb stats
262 * Fixed race condition in AbstractSocketPoolTest
263 * Added improved monitoring for bdb stats
264 * Added backoff and retry logic in bootstrap code
265 * Not logging obosleteVersionException(s) or counting it in JMX exception count
266 * Fixed issue 159
267 * C++ client building on OS X
268 * Rely only on the number of versions returned to decide whether to retrieve
269   the value for put(K,V)
270 * Implemented issue 152: getVersion() API in Store
272 Release 0.55 on 10/7/2009
274 The following changes were made since 0.52 (in summary):
276 * Add an event throttler
277 * Added DataCleanupJob
278 * Protocol buffers at version 2.2.0
279 * BDB JE upgraded to 3.3.87
280 * Added data compression support (enable by adding
281     <compression>
282        <type>gzip</type>
283     </compression>
284   to value-serializer or key-serializer sections in stores.xml)
285 * Added a resource pool/socket pool implementation (no longer using
286   commons-pool)
287 * Added server-side NIO support (enabled by setting
288   enable.nio.connector=true
289   in server.properties)
290 * Improved the efficiency of the protocol buffers network protocol by using
291   CodedOutputStream/CodedInputStream (zero copy transfers)
292 * Fix for issue #21: incorrectness in vector clock inconsistency resolver
293 * Upgrade google-collections
294 * Support for building read only stores in Hadoop
295 * Added a C++ client