Welle is an expressive Clojure client for Riak with batteries included.
1.5.0 is a minor release
that is 100% backwards-compatible with
1.5.x and introduces several nice features:
- Retriers for failing operations
- Conflict resolvers
- Easier to use update functions
This version has been tested against
Changes between Welle 1.4.0 and 1.5.0
clojurewerkz.welle.kv/modify is a new function that combines
clojurewerkz.welle.kv/store with a user-provided mutation functions. The mutation function
should take a single Riak object as an immutable map and return a modified one.
In case of siblings, a resolver should be used.
clojurewerkz.welle.kv/modify will update modification timestamp of the object.
clojurewerkz.welle.kv/modify takes the same options as
clojurewerkz.welle.kv/store now accept a new
:resolver. Resolvers are basically pure functions that take a collection of
siblings and return a collection of Riak object maps.
Resolvers can be created using
clojurewerkz.welle.conversion/resolver-from which takes a function that accepts a collection
of deserialized (unless
fetch was told otherwise) values and applies any conflict resolution
clojurewerkz.welle.kv/fetch-one now also supports resolvers via the
It will raise an exception if siblings are detected and no resolver is provided.
clojurewerkz.welle.kv/index-query now retry operations
that fail due to a network issue or any other exception.
By default, the operations will be retrier 3 times. It is possible to provide a custom
retrier using the
:retrier option. Retriers can be created using
clojurewerkz.welle.conversion/retrier-from which takes a function that accepts a callable
(an operation that may need to be retried) and needs to invoke it, handling exceptions
and applying any retrying logic needed.
clojurewerkz.welle.conversion/counting-retrier produces a retrier that will retry an operation
given number of times. This is the kind of retrier Welle uses by default.
Skipping Deserialization for clojurewerkz.welle.kv/fetch
clojurewerkz.welle.kv/fetch supports a new boolean option
:skip-deserialize that allows
automatic deserialization to be skipped.
Contributed by Jonas Tehler.
Clojure 1.5 By Default
Welle now depends on
1.5.1. It is
still compatible with Clojure 1.3+ and if your
on a different version, it will be used, but 1.5 is the default now.
We encourage all users to upgrade to 1.5, it is a drop-in replacement for the majority of projects out there.
We recommend all users to upgrade to 1.5.0 a try.
Welle change log is available on GitHub.
Welle is a ClojureWerkz Project
- 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.
ClojureWerkz accepts donations. If you feel like our projects save you time, consider donating. Thanks.