forked from basho/riak-ruby-client
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Update release notes for 1.0. [ci skip]
- Loading branch information
1 parent
9c0d2ff
commit f33eae2
Showing
2 changed files
with
99 additions
and
286 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,99 @@ | ||
# Riak Ruby Client Release Notes | ||
|
||
## 1.0.0 Feature Release - 2012-02-03 | ||
|
||
Release 1.0.0 is a major feature release and is the first where | ||
`riak-client`, `ripple`, and `riak-sessions` will be released | ||
independently (see below). Because there too many individual changes | ||
to recount, this entry will cover the major features and bugfixes | ||
present in the release. | ||
|
||
### Riak 1.0/1.1 Compatibility | ||
|
||
`riak-client` is fully compatible with Riak 1.0.x and | ||
(yet-to-be-released) 1.1.x, including supporting secondary indexes, | ||
integrated search, and cluster membership commands. | ||
|
||
### Multi-node Connections and Retries | ||
|
||
`Riak::Client` can now connect to multiple Riak nodes at once. This | ||
greatly improves throughput and allows the client to recover from | ||
intermittent connection errors while continuing normal operation. To | ||
enable this, all uses of the Pump/Fiber logic were removed in favor of | ||
connection pools from which any new request can draw an existing or | ||
create a new connection. Which node is selected for any new connection | ||
is based on a quickly-decaying EWMA of its success rate on recent | ||
requests. A huge thanks to [Kyle Kingsbury](https://github.com/aphyr) | ||
who did most of the work on this! | ||
|
||
### Improved TestServer and Node Generation | ||
|
||
The `Riak::TestServer` class has been generalized such that you can | ||
generate regular nodes and even clusters that store data on disk. This | ||
is especially useful if you want separate nodes or clusters for each | ||
project that uses Riak, and to keep them separate from your base | ||
install. `TestServer` also now launches the node in a separate process | ||
(not a child process) so you can keep it running between test | ||
suites. Clearing the in-memory data is performed by connecting to the | ||
console via the exposed Unix pipes, rather than over stdio. | ||
|
||
### Conflict Resolution | ||
|
||
An important part of dealing with eventual consistency is the ability | ||
to handle when conflicts (also called siblings) are created. Now you | ||
can resolve them automatically by registering blocks (callbacks) using | ||
`Riak::RObject.on_conflict`. The block will be called when fetching a | ||
key in conflict and receives a `RObject` that has siblings. To resolve | ||
the conflict, it simply returns the resolved object, or nil if it | ||
didn't handle the conflict. A huge thanks to | ||
[Myron Marston](https://github.com/myronmarston) who implemented this! | ||
|
||
### Serializers | ||
|
||
Before, serialization of Ruby objects into Riak was constrained to | ||
three formats: JSON, YAML and Marshal. Now you can define your own | ||
serializers so that you can store data in BSON, MsgPack, NetStrings, | ||
or whatever format you like. Use `Riak::Serializers[content_type] = | ||
serializer` to assign a serializer for the selected media type. The | ||
serializer must respond to `#dump` and `#load`. (More handiwork of Myron | ||
Marston, thanks!) | ||
|
||
### Stamps | ||
|
||
If you don't like the keys that Riak hands out when you store an | ||
`RObject` without a key, and you want something naturally ordered, you | ||
can now generate them client-side using `Riak::Stamp`, which will | ||
generate 64-bit integers in a fashion similar to Twitter's Snowflake, | ||
but uses `Riak::Client#client_id` as the machine identifier. | ||
|
||
### Repository/Feature split | ||
|
||
In an effort to decouple development of the individual projects and | ||
reduce top-level dependencies, the `ripple` repository was split into | ||
new repositories containing its corresponding sub-projects. | ||
Additionally, the `Riak::CacheStore` has become its own project/gem. | ||
The new gem and repository locations are below: | ||
|
||
* [`riak-client`](http://rubygems.org/gems/riak-client) — | ||
[basho/riak-ruby-client](https://github.com/basho/riak-ruby-client) | ||
* [`ripple`](http://rubygems.org/gems/ripple) — | ||
[seancribbs/ripple](https://github.com/seancribbs/ripple) | ||
* [`riak-sessions`](http://rubygems.org/gems/riak-sessions) — | ||
[seancribbs/riak-sessions](https://github.com/seancribbs/riak-sessions) | ||
* [`riak-cache`](http://rubygems.org/gems/riak-cache) — | ||
[seancribbs/riak-cache](https://github.com/seancribbs/riak-cache) | ||
|
||
### Significant Known Issues | ||
|
||
Attempting to use the Protocol Buffers transport with a 0.14.x cluster | ||
may cause the connection to dump because of incompatibilities in | ||
certain protocol messages. This will be addressed in a future | ||
patch/bugfix release. | ||
|
||
The new node generation and test server intermittently fails on JRuby, | ||
specifically from deadlocks related to blocking opens for the console | ||
FIFOs. The JRuby team has helped on this issue, but there may not be a | ||
clear resolution path until JRuby 1.7 or later. | ||
|
||
Other known issues may be found on the | ||
[Github issue tracker](https://github.com/basho/riak-ruby-client/issues?milestone=1). |
This file was deleted.
Oops, something went wrong.