leo-project/leo_object_storage
52.9
Adequate · 17 September 2026
7.1k
lines of production code
Erlang
primary language
1
measurement over time
What this system is
Leo Object Storage is an Erlang/OTP library providing log-structured object and BLOB storage with an append-only format and configurable metadata backends. It manages data lifecycle through a robust, FSM-based compaction system that supports parallel processing, recovery, and disk space monitoring. The system includes comprehensive configuration management, release packaging, and testing suites to ensure reliability and performance.
Features
Add object storage configuration and schema files
Added \priv/leo\_object\_storage.conf\ and \priv/leo\_object\_storage.schema\ to define the configuration parameters and validation schema for the LeoFS object storage component. The configuration file sets default values for SASL error logging, enables diagnosis logs, and configures Erlang runtime settings such as node name, distributed cookie, and process limits. The schema file maps these configuration keys to internal application settings, defining data types and defaults for storage backends (metadata and object), logging levels, and VM arguments.
priv · high confidence
Initial release of leo\_object\_storage library
This change introduces the leo\_object\_storage component, a log-structured object and BLOB storage library for Erlang/OTP applications. It implements a Haystack-inspired append-only storage format (AVS) with MD5 checksums, supporting metadata backends like LevelDB or Bitcask, configurable background compaction, and data diagnosis/recovery tools. The release includes the core Erlang source code, build configuration via rebar3 (requiring OTP 19+), and comprehensive documentation.
(repo-wide) · high confidence
Leo Object Storage v2.1.0 release with new compaction architecture
Leo Object Storage has been updated to version 2.1.0, introducing a new FSM-based data-compaction system managed by the \leo\_compact\_fsm\_controller\ and executed by \leo\_compact\_fsm\_worker\. This change replaces the previous compaction implementation with a more robust state-machine approach that supports parallel compaction, manual suspension/resume, and data diagnosis. The release also includes a new \leo\_object\_storage\_diagnosis\_log\ module for structured logging of compaction and diagnosis events, and a \leo\_object\_storage\_diskspace\_mon\ process to monitor available disk space. The API module now exposes functions for compaction control (\compact\_data\, \diagnose\_data\, \recover\_metadata\) and the application environment includes new settings for compaction intervals and batch processing limits.
src · high confidence
Behavioural changes
Introduce compaction state management and configuration constants
The \leo\_object\_storage\ include file now defines the core data structures and constants for the data compaction subsystem. This introduces records for tracking compaction history (\compaction\_hist\), detailed statistics (\compaction\_stats\), and per-file reports (\compaction\_report\), alongside state types (\compaction\_state\) and event types (\compaction\_event\). It also establishes default configuration values for compaction worker limits, time thresholds, and buffer sizes, as well as specific error messages related to compaction failures and disk space checks.
include · high confidence
Introduce reltool-based release structure with cuttlefish configuration for LeoFS
The release packaging for Leo ObjectStorage has been restructured to use reltool, generating a self-contained distribution that includes the application, Erlang runtime, and necessary support scripts. This change introduces a new configuration approach using basho/cuttlefish, where the \leo\_object\_storage\ runner script generates \app.config\ and \vm.args\ from \leo\_object\_storage.conf\ and \leo\_object\_storage.schema\ at startup. The release now includes platform-specific launch scripts (\leo\_object\_storage\ for Unix, \leo\_object\_storage.cmd\ for Windows), a \nodetool\ for remote node management, and a custom \erl\ wrapper to ensure proper bootscript access for escripts. Additionally, default SSL certificates and keys are bundled to support secure communications out-of-the-box.
rel · high confidence
Test coverage
Added test suite for Leo Object Storage API and stress testing
Added new test files to verify Leo Object Storage functionality, including \leo\_object\_storage\_api\_tests.erl\ for compaction, recovery, and diagnosis scenarios; \leo\_object\_storage\_api\_prop.erl\ for property-based testing of put/get/delete operations; \leo\_object\_transformer\_tests.erl\ for metadata transformation logic; and \basho\_bench\_driver\_leo\_object\_storage.erl\ with its configuration file to enable stress testing via basho\_bench.
test · high confidence
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 53.
Lenses
- Code Health 89
- Architecture 100
- Maturity 39
- Readiness 49
- Security 63
- Event Sourcing 100
Changes since last survey
- 300 commits — 236 feature/other, 64 fixes
By area
- (repo) — 84 commits
- (root) — 60 commits
- src/leo_object_storage.app.src — 55 commits
- include/leo_object_storage.hrl — 37 commits
- src/leo_object_storage_api.erl — 17 commits
- src/leo_object_storage_haystack.erl — 16 commits
- src/leo_object_storage_server.erl — 9 commits
- src/leo_compact_fsm_controller.erl — 5 commits
- src/leo_compact_fsm_worker.erl — 4 commits
- src/leo_object_storage_sup.erl — 4 commits
- src/leo_object_storage_event.erl — 2 commits
- src/leo_object_storage_transformer.erl — 2 commits
- test/leo_object_storage_api_tests.erl — 2 commits
- priv/leo_object_storage.conf — 1 commit
- src/supervisor2.erl — 1 commit
- test/leo_object_storage_api_prop.erl — 1 commit
Notable commits
- fix: Add fetch_by_key_in_parallel to fix #764
- fix: Fix #834
- fix: Fix #841
- fix: Fix #976
- fix: Fix README.md
- fix: Fix a diagnosis-data related bug
- fix: Fix a wrong type
- fix: Fix build failure - https://travis-ci.org/leo-project/leofs/jobs/342668838
- fix: Fix building leo_object_storage
- fix: Fix code format and remove unnecessary rows
- fix: Fix delete-bucket to wok in case of the bucket have lots of objects
- fix: Fix dialyzer warns
- fix: Fix for #1017
- fix: Fix for #1030
- fix: Fix for #549
- fix: Fix for #758
- fix: Fix for #947
- fix: Fix indents
- fix: Fix leo-project/leofs#383
- fix: Fix leo-project/leofs#393
- …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
leo-project/leo_object_storage 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 f65ac5073f075232e40c6a3148e1773d5ac6cfbb — 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.