Skip to content
CAI
Software that uses CAICheck a score

OpenRiak/riak_core

58.1

Adequate · 17 September 2026

42.9k

lines of production code

Erlang

primary language

1

measurement over time

CAI band scale
CAI lens gauges

What this system is

Riak Core is a distributed systems framework for Erlang that manages cluster membership, consistent hashing rings, and vnode lifecycle. It provides mechanisms for background resource management, data handoffs, and configuration validation to ensure reliable operation across nodes. The system emphasizes correctness through extensive property-based testing of its core algorithms and concurrency models.

Features

Initial import of Riak Core with Apache 2.0 license and OpenRiak dependencies

This entry represents the initial import of the Riak Core distributed systems framework into the OpenRiak organization, establishing the project's foundational structure. The repository is now licensed under the Apache License, Version 2.0, replacing any prior licensing terms. The build system has been standardized on rebar3, with the Makefile updated to use the \rebar3\ executable for compilation, testing, and dialyzer checks. The project now targets Erlang/OTP 24.0 or later and pulls its dependencies (including poolboy, clique, eleveldb, riak\_ensemble, and exometer\_core) from specific OpenRiak GitHub branches rather than external package managers or older version tags.

(repo-wide) · high confidence

Introduce background resource management and expand vnode request types

The include files now define a new background manager API (riak\_core\_bg\_manager.hrl) for coordinating shared resources via locks and tokens, and introduce bucket type constants (riak\_core\_bucket\_type.hrl). Vnode requests are expanded with new records for coverage (riak\_coverage\_req\_v1) and a v2 fold request (riak\_core\_fold\_req\_v2) that supports forwarding and options, while the default sender for vnode requests changes from 'noreply' to 'ignore'. Handoff capabilities are enhanced with batch support (PT\_MSG\_BATCH), detailed statistics tracking (ho\_stats), and a unified ho\_type covering ownership, hinted, repair, and resize operations. Additionally, cluster metadata types are defined (riak\_core\_metadata.hrl), the ring version is bumped to 2 (riak\_core\_ring.hrl), and DTrace integration headers are added (riak\_core\_dtrace.hrl).

include · high confidence

Introduce chashbin module for efficient ring representation

Added the chashbin module, a new binary-based representation of the Riak Core hash ring that replaces the previous list-based chash structure. This change provides optimized functions for ring operations, including creating the binary structure from a chash, converting it back, and iterating over partitions. The module supports efficient index lookups, owner resolution, and bulk iteration, which improves performance for ring management tasks such as handoffs and partition ownership calculations.

src · high confidence

New riak\_core configuration schema with validation and default settings

A new configuration schema file (priv/riak\_core.schema) has been introduced to define and validate riak\_core settings via cuttlefish. This adds support for configuring default bucket properties (n\_val), ring size with power-of-2 and range validation, repair span (pair/double\_pair), and handoff parameters including concurrency limits, batch thresholds, timeouts, and IP/port bindings. It also introduces validators for IP addresses and sets sensible defaults for cluster transfer limits and overlapping partition prevention (disabled by default).

priv · high confidence

Architecture

Removal of riak\_core.app from ebin directory

The riak\_core.app file has been removed from the ebin directory, indicating a shift in how the application metadata is managed (likely moving to src/riak\_core.app.src as suggested by commit history). This change affects the build and deployment process, as the application resource file is no longer present in the compiled output directory.

ebin · high confidence

Test coverage

Added QuickCheck property tests for core Riak components; Added test suite for background manager and ring claim behavior.

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

How this codebase got here

Baseline

  • First survey — no prior run to compare against. CAI 58.

Lenses

  • Code Health 88
  • Architecture 100
  • Maturity 34
  • Readiness 64
  • Security 95
  • Event Sourcing 100

Changes since last survey

  • 300 commits — 278 feature/other, 22 fixes

By area

  • (repo) — 73 commits
  • (root) — 70 commits
  • .github/workflows — 12 commits
  • src/riak_core_vnode.erl — 9 commits
  • src/riak_core_gossip.erl — 8 commits
  • src/riak_core_handoff_sender.erl — 7 commits
  • priv/riak_core.schema — 6 commits
  • src/riak_core.erl — 6 commits
  • src/riak_core_claim.erl — 6 commits
  • src/riak_core_ssl_util.erl — 6 commits
  • src/riak_core_tcp_mon.erl — 6 commits
  • src/riak_core_worker_pool.erl — 6 commits
  • src/riak_core_coverage_fsm.erl — 5 commits
  • src/riak_core_coverage_plan.erl — 5 commits
  • src/riak_core_ring_manager.erl — 5 commits
  • eqc/bg_manager_eqc.erl — 4 commits
  • src/hashtree.erl — 4 commits
  • src/riak_core_claimant.erl — 3 commits
  • src/riak_core_handoff_status.erl — 3 commits
  • src/riak_core_repair.erl — 3 commits

Notable commits

  • fix: Basket of dialyzer fixes
  • fix: Dialyzer fixes
  • fix: Dialyzer fixes - CHANGES REQUIRE VALIDATION
  • fix: Fix GHA build to install dependencies
  • fix: Fix broken test
  • fix: Fix dialyzer.
  • fix: Fix fold options extraction
  • fix: Fix log
  • fix: Fix off-by-one error with size of hash space
  • fix: Fix size formatter crash on float value
  • fix: Handoff dialyzer fixes
  • fix: Initial dialyzer fixes
  • fix: Merge pull request #934 from basho/fix/folsom-circ-dep
  • fix: Merge pull request #959 from Quviq/GH958-fix-deadlock-worker-pool
  • fix: Merge pull request #964 from kpy3/fix-size-formatter
  • fix: Oops - fix xref.
  • fix: Revert "Efficiency improvements to coverage plans with large ring sizes"
  • fix: Revert "Export init_response type"
  • fix: Revert "Temp regress to exometer_core 1.6.2"
  • fix: Revert back to mainstream eleveldb
  • …and 280 more

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

Survey your own repository

OpenRiak/riak_core was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.

About this page

  • The score is its most recent published measurement, taken on 17 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
  • Measured at commit d7daa36203374fa700559a005495e9e526981c7c — the exact code this score is about.
  • Scored under rubric-2026.09.12 — the same rubric and the same method as every other entry in this index.
  • Measured by watchdog.canine.dev using codehealth-analyzer preprod-f94092f054c1.