Leapsight/plum_db
63.8
Adequate · 2 October 2026
11.1k
lines of production code
Erlang
primary language
2
measurements over time
What this system is
PlumDB is a globally replicated, eventually consistent database built on Erlang that leverages Partisan for cluster membership and RocksDB for persistent storage. It manages data distribution across multiple partitions and ensures metadata consistency through an Active Anti-Entropy mechanism using on-disk hashtrees. The system supports flexible storage backends, including RAM, disk, or hybrid modes, and provides a simplified API for shard iteration and pub/sub events.
Features
Added RocksDB configuration schema with sensible defaults
The \priv/plum\_db.schema\ file has been added to define the configuration mapping for the underlying RocksDB storage engine. This schema exposes numerous tuning parameters to users, including data verification, write buffer sizes, bloom filter policies, block cache settings, background job limits, and compression options (defaulting to LZ4). These settings allow users to adjust performance characteristics such as memory usage, disk I/O, and storage efficiency for their database partitions.
priv · high confidence
Initial configuration for node2 with RocksDB and Partisan networking
This change introduces the initial configuration files for node2, defining the runtime environment for the distributed database. The setup enables the AAE protocol and configures the storage backend to use RocksDB with LZ4 compression and specific thread/bloom filter settings. Networking is handled by Partisan, configured to connect to peer 127.0.0.1:18186 with remote reference URIs enabled and distribution disabled. The Erlang node is named plum\_db2@127.0.0.1, uses a specific distribution cookie, and sets the logger level to info with a standard handler.
config/node2 · high confidence
Initial node configuration for distributed PlumDB with RocksDB and Partisan
This change introduces the initial configuration files for individual cluster nodes (node1 and node3), defining the runtime environment for the distributed database. It sets up the \plum\_db\ application with 16 partitions, enables AAE (Anti-Entropy Exchange), and configures the underlying RocksDB storage engine with specific performance tuning parameters such as LZ4 compression, 2GB block cache, and asynchronous WAL syncing. The configuration also integrates the Partisan library for distributed Erlang communication, specifying peer IPs, ports, and remote reference handling, while updating the Erlang kernel logger to use the modern \logger\_std\_h\ handler instead of the legacy lager system.
config/node1 · high confidence
Initial release of PlumDB with RocksDB persistence and Partisan integration
This entry introduces PlumDB, a globally replicated database using eventual consistency, replacing the previous 'plumtree\_mds' project. The application leverages Partisan for cluster membership and data exchange, and migrates persistence from Eleveldb to RocksDB. It supports multiple storage backends (RAM via ETS, disk via RocksDB, or hybrid) configured by prefix, and includes features such as Active Anti-Entropy (AAE), pub/sub events, and a simplified API for iterating over shards. The release also adds a Makefile for building and testing, comprehensive documentation, and configuration profiles for running multi-node clusters.
(repo-wide) · high confidence
Introduction of Active Anti-Entropy (AAE) exchange and hashtree-based metadata synchronization
This release introduces a new Active Anti-Entropy (AAE) mechanism to keep cluster metadata consistent across nodes. The system now uses persistent, on-disk hashtrees (backed by RocksDB) to efficiently track and exchange key hashes between partitions. A new state machine (\plum\_db\_exchange\_statem\) manages the exchange lifecycle, including lock acquisition, tree updates, and data synchronization, while new event handlers (\plum\_db\_events\) notify subscribers of exchange progress. This enables automatic repair of divergent metadata without requiring full cluster restarts or manual intervention.
src · high confidence
Introduction of core type definitions and macros for plum\_db
New header files (include/plum\_db.hrl and include/utils.hrl) define the fundamental types, records, and macros for the plum\_db system. This includes type specifications for keys, values, prefixes, and modifiers, as well as constants for wildcards, tombstones, and erased entries. It also establishes configuration for term encoding (deterministic, minor\_version 2) and default communication options (timeouts, channels) for calls, casts, and monitors.
include · high confidence
Behavioural changes
Adopted ExDoc for API documentation generation
The project documentation has been regenerated using ExDoc (v0.26.0), replacing the previous format. This update provides a modern, responsive user interface with features such as sidebar navigation, search functionality, and a dark mode toggle. The generated HTML includes an updated API reference for plum\_db v0.3.10, covering modules like hashtree, plum\_db, and plum\_db\_dvvset.
doc · high confidence
Test coverage
Added comprehensive test suite for PlumDB and Hashtree components; Added test environment configuration files.
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
Score
- CAI 64 → 64 (-0.6)
- Rubric changed (rubric-2026.09.12 → rubric-2026.09.18) — scores are not directly comparable.
Lenses
- Code Health 91 → 91 (+0.0)
- Architecture 100 → 100 (+0.0)
- Maturity 65 → 65 (+0.0)
- Readiness 47 → 46 (-1.3)
- Security 100 → 100 (+0.0)
Resolved (3)
- Coverage not measured — no coverage collector is wired up
- Documentation: no installation or build instructions (README.md)
- Documentation: no usage examples (README.md)
New (5)
- Floating source dependency: app_config
- Floating source dependency: memory
- Unbounded dependency requirement: gproc
- Unbounded dependency requirement: resulto
- Unbounded dependency requirement: sext
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
Leapsight/plum_db 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 2 October 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit e206a3d3c203e06f06d51c85140a4e9db44014d2 — the exact code this score is about.
- Scored under rubric-2026.09.18 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer preprod-e569280dd5e2.