Skip to content

Khepri 0.17.3

Choose a tag to compare

@dumbbell dumbbell released this 08 Dec 18:29
· 362 commits to main since this release
v0.17.3
f7923fe

At this point, Khepri should be considered Beta. The API will likely evolve and future releases will likely introduce breaking changes.

What's new in Khepri 0.17.3

Faster queries

When khepri_machine computes the list of default options, it verifies which machine version is currently effective, regardless of what it supports locally, because the overall cluster might use an older machine code.

This machine version check uses Ra counters, but they remain expensive to read. This is specially visible when querying a Khepri store. A significant part of the time it takes to process a query is spent in reading the Ra counters.

This version caches the effective machine version when the Khepri machine is started and when the machine version is upgraded using a persistent_term. This is way more efficient and improves the performance of queries. This improves the life of the machine itself, but the impact is less visible.

See #349.

Other changes

  • Handle {error, normal} return value from Ra in khepri_machine:process_sync_command/3 (#350).
  • Ignore keep_while condition at time a tree node is created when the keep_while targets a child node (#351).
  • Address several warnings from Dialyzer (#345, #346).

Download

Khepri is available from Hex.pm: https://hex.pm/packages/khepri/0.17.3

Upgrade

Using Rebar:

  1. Update your rebar.config:

    %% In rebar.config
    {deps, [{khepri, "0.17.3"}]}.
  2. Run rebar3 upgrade khepri.

Using Erlang.mk:

  1. Update your Makefile:

    %% In your Makefile
    dep_khepri = hex 0.17.3
  2. Remove the deps/khepri directory. The new version will be fetched the next time you build your project.

Documentation

The documentation for Khepri is available on Hex.pm.