Skip to content
This system contains an addon which allows to syncronize multiple cl-prevalence systems state.
Branch: master
Clone or download
Type Name Latest commit message Commit time
Failed to load latest commit information.
docs Fixed vulnerabilities in docs requirements. May 30, 2019
src Fixed deletion of the processed log files. Jun 10, 2019
t Mocking get-universal-time to keep result the same when transaction i… Jun 8, 2019
.gitignore Fixed tests. May 30, 2019
.travis.yml Allow failure on all except SBCL for now. Jun 8, 2019
README.rst Added a warning into the readme. May 29, 2019
prevalence-multimaster-test.asd Added explicit dependency on hamcrest. May 30, 2019
prevalence-multimaster.asd Initial release. May 29, 2019 Initial release. May 29, 2019
version.lisp-expr Fixed issue when system loaded itself logs when it's root is given wi… Jun 2, 2019



This system contains an addon which allows to syncronize multiple cl-prevalence systems state.

This is useful when you have apps running on multiple machines and want them to have eventually consistent state.

However, there are two caveat:

  • Consistency is evential.
  • In some cases consistency could not be reached.

How does this work

  1. First thing you need to provide for all app instances is a folder where they will store their prevalence databases and logs.

    This folder can be inside of a Dropbox, for example.

    Eventually, each app should see all other app's transaction logs.

  2. When you call a sync-with-other-masters on the prevalence system, it does few things:

    • makes a snapshot of it database;
    • searches not processed transaction logs from other masters;
    • and executes transaction from each found log;
    • removes himself logs, processed by all other masters.


    Right now sync-with-other-masters should be called not often then once per second, because otherwise filenames of transaction log backups will clash.


  1. Ensure this will work on the real world application.

2. Support old transaction logs deletion after they was processed by all apps. 2. Add a documentation. 3. ...

Building Documentation

Provide instruction how to build or use your library.

How to build documentation

To build documentation, you need a Sphinx. It is documentaion building tool written in Python.

To install it, you need a virtualenv. Read this instructions how to install it.

Also, you'll need a cl-launch. It is used by documentation tool to run a script which extracts documentation strings from lisp systems.

Run these commands to build documentation:

virtualenv --python python2.7 env
source env/bin/activate
pip install -r docs/requirements.txt
invoke build_docs

These commands will create a virtual environment and install some python libraries there. Command invoke build_docs will build documentation and upload it to the GitHub, by replacing the content of the gh-pages branch.

You can’t perform that action at this time.