Scalaris 0.9.0 released

Skip to first unread message

Nico Kruber

Feb 29, 2016, 2:37:10 PM2/29/16
We are happy to announce the next major release release of Scalaris. Version
0.9.0 (codename "Vriesea scalaris").
Most notable differences changes are the new C++ API, a new generic
DataNucleus storage back-end for Scalaris, a YCSB Scalaris adapter, the
support for different replication factors, and major performance improvements
in the replica repair layer. Additionally, we optimised several other
components, fixed a few bugs, and made Scalaris more suitable for large scale
deployments. A complete changelog is provided below.

Binary packages for various Linux distributions should be available soon in
our usual repositories:
* The latest stable version is available in our main repository:
* Git snapshots are available in this repository:

For more instructions on how to use the prebuilt packages, see

Scalaris' Java-API (in different versions) is also available in our maven
repository at:
For help setting up this repository, please refer to

Scalaris 0.9.0 (codename "Vriesea scalaris") - February 29, 2016
(partly supported by the EU project IES Cities


- add a libscalaris-dev[el] package with the C++ API (rpm, deb)
- Maven: let Maven also create a source jar file for the Java-API
- Maven: allow proper snapshot versions for the maven repository at


- CPP-API: provide a new C++ client library
- DataNucleus: provide a new storage back-end for Scalaris
- add a Scalaris adapter for YCSB
- new functions in all APIs for generic routing table operations

Business Logic:

- rrepair: considerably improve the set reconciliation algorithms' performance
and run more processes in parallel
- rrepair: further reduce the reconciliation costs
- rrepair: re-use left-over failure probability from phase 1 for phase 2
- rrepair: increase accuracy in several formulaes of the set reconciliation
- rrepair: support creating multiple Merkle trees for fewer message rounds
('rr_merkle_num_trees' configuration variable)
- rrepair: remove support for aligning bit sizes (no improvements there)
- transactions: speed up write ops when the transaction log already contains
a read op on the same key
- RM: optimise the traffic of state exchanges during ring maintenance
- RT: improve routing parallelism by handling more messages in the routing
process itself instead of inside the dht_node process
- RT: improve performance along the routing path
- support for dynamic replication factors given by the 'replication_factor'
configuration variable
- pid_groups: shuffle pids in find_a/1 for more better distributed (parallel)


- pid_groups: group names are now atoms instead of strings
(allows faster access)
- scalarisctl: do not set any default Erlang scheduler flags (allow changes
through the ERL_SCHED_FLAGS environment variable)
- extend the example scripts for running Scalaris on a SLURM cluster
- add SLURM scripts for running Basho Bench
- use configure to select the routing table type (--with-rt=rt_chord)
- change hanoidb detection to "configure --enable-hanoidb=<dir>"
- change erlang_js detection to "configure --enable-erlang-js=<dir>"
- dht_node_monitor: switch messages on/off via configuration variable
- msg_delay: remove extraneous error messages for trigger messages of killed
- prbr: allow write_filter to return value to qwrite calling process
- update yaws to version 2.0.2
- support for Erlang R14B04 up to 18.2.3 and current otp master


- allow running single test groups via "make <test suite>:<group name>_GROUP"


- gen_component: allow processes to provide their own start functions
- trace_mpath: write whole message of log_info to the tex output


- fix cleanup of some special cases with transactions
- fix several math issues and increase the math functions' performance
- fix some errors which occurred in large scale deployments
- fix several warnings reported by Coverity Scan
- fix numerous more bugs

-- PGP key: 20F2724BDAEA9E59
Reply all
Reply to author
0 new messages