TL;DR

Welle is an expressive Clojure client for Riak with batteries included.

1.4.0 is a minor release that is 100% backwards-compatible with 1.3.x. This version has been tested against Riak 1.2.x as well as RCs of Riak 1.3.0.

Changes between Welle 1.3.0 and 1.4.0

Riak 1.3.0 Ready

Welle 1.4.0 has been tested against the upcoming Riak 1.3.0 release.

Tombstones Handling

In eventually consistent systems such as Riak, deleted objects may sometimes “reappear” due to concurrent modifications. Welle by default will filter out tombstones in clojurewerkz.welle.kv/fetch. If you want to retrieve all objects including tombstones, pass :return-deleted-vlock as true to clojurewerkz.welle.kv/fetch. This behavior is new in Welle 1.4.0 which uses Riak Java client 1.1.0.

Riak Java Client Update

Welle now uses Riak Java client 1.1.0.

Cheshire Update

Cheshire dependency has been upgraded to version 5.0.2.

clojurewekz.welle.kv/delete-all Is No Longer Lazily Evaluated

Contributed by Renaud Tircher.

Automatic Deserialization Support For clojurewerkz.welle.kv/store

clojurewerkz.welle.kv/store, when used with the :return-body option, now will automatically deserialize it the same way clojurewerkz.welle.kv/fetch and clojurewerkz.welle.kv/fetch-one do.

Suggested by Allen Johnson.

clj-http Update

clj-http dependency has been upgraded to version 0.6.4.

HTTP Cluster Connection URLs

Updated HTTP cluster connections to be full URLs. This change is primarily to allow users to specify alternate ports.

HTTP cluster connections now require a full url:

(require '[clojurewerkz.welle.core :as wc])

(wc/connect-to-cluster! ["http://node1:8098/riak" "http://node2:8098/riak"])

Also included in this change:

clojurewerkz.welle.core/default-port removed and replaced by the following:

  • clojurewerkz.welle.core/default-http-port
  • clojurewerkz.welle.core/default-pb-port

Reasonable Vclock Pruning Defaults

Welle now uses reasonable vclock pruning setting defaults in clojurewerkz.welle.buckets/update.

Kudos to @mefesto for reporting the issue.

Change Log

We recommend all users to upgrade to 1.4.0 a try.

Welle change log is available on GitHub.

Welle is a ClojureWerkz Project

Welle is part of the group of libraries known as ClojureWerkz, together with

  • Langohr, a Clojure client for RabbitMQ that embraces the AMQP 0.9.1 model
  • Elastisch, a minimalistic Clojure client for ElasticSearch
  • Monger, a Clojure MongoDB client for a more civilized age
  • Neocons, a feature rich idiomatic Clojure client for the Neo4J REST API
  • Quartzite, a powerful scheduling library

and several others. If you like Welle, you may also like our other projects.

Let us know what you think on Twitter or on the Clojure mailing list.

Michael on behalf of the ClojureWerkz Team