Skip to content

ECKIT-684: Ceph/RADOS backend#304

Open
mcakircali wants to merge 126 commits into
developfrom
feature/ECKIT-684-ceph-backend
Open

ECKIT-684: Ceph/RADOS backend#304
mcakircali wants to merge 126 commits into
developfrom
feature/ECKIT-684-ceph-backend

Conversation

@mcakircali

@mcakircali mcakircali commented Jul 8, 2026

Copy link
Copy Markdown
Contributor

Description

Contributor Declaration

By opening this pull request, I affirm the following:

  • All authors agree to the Contributor License Agreement.
  • The code follows the project's coding standards.
  • I have performed self-review and added comments where needed.
  • I have added or updated tests to verify that my changes are effective and functional.
  • I have run all existing tests and confirmed they pass.

🌦️ >> Documentation << 🌦️
https://sites.ecmwf.int/docs/dev-section/eckit/pull-requests/PR-304

mcakircali and others added 30 commits January 31, 2024 17:07

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR introduces a Ceph/RADOS backend expansion in eckit IO, adding higher-level RADOS abstractions (pool/namespace/object), multipart/async handles, a URI manager, and CI/test plumbing to exercise the backend.

Changes:

  • Add new RADOS primitives (pool/namespace/object) and higher-level IO (multipart read/write handles, async handle, range/part handle, key/value OMAP wrapper).
  • Integrate RADOS URI support via a URIManager, plus new exception types and updated cluster/context management.
  • Add/adjust RADOS-focused tests and a dedicated GitHub Actions workflow, and update CMake discovery/build configuration for librados.

Reviewed changes

Copilot reviewed 35 out of 35 changed files in this pull request and generated 19 comments.

Show a summary per file
File Description
tests/io/test_radoshandle.cc Updates RADOS handle tests to new object/pool/namespace model and multipart handles
tests/io/test_rados_kv.cc Adds unit test coverage for RADOS OMAP key/value wrapper
tests/io/rados-performance.cc Updates performance test to multipart handles and explicit pool/object usage
tests/io/CMakeLists.txt Updates test conditions/labels and adds KV test target
src/eckit/io/rados/RadosURIManager.h Adds URI manager interface for rados: scheme
src/eckit/io/rados/RadosURIManager.cc Implements URI manager (exists/handles/asString) for rados: scheme
src/eckit/io/rados/RadosPool.h Introduces pool abstraction and lifecycle helpers
src/eckit/io/rados/RadosPool.cc Implements pool parsing and destruction semantics
src/eckit/io/rados/RadosNamespace.h Introduces namespace abstraction and listing helpers
src/eckit/io/rados/RadosNamespace.cc Implements namespace parsing, listing, and destruction
src/eckit/io/rados/RadosObject.h Refactors object identity to pool/namespace/oid and adds handle factories
src/eckit/io/rados/RadosObject.cc Implements object parsing, lifecycle helpers, and handle factory methods
src/eckit/io/rados/RadosPartHandle.h Adds range-read DataHandle implementation for RADOS objects
src/eckit/io/rados/RadosPartHandle.cc Implements RADOS range reads via rados_read
src/eckit/io/rados/RadosMultiObjWriteHandle.h Adds multipart writer handle (optionally async)
src/eckit/io/rados/RadosMultiObjWriteHandle.cc Implements multipart write logic + metadata xattrs
src/eckit/io/rados/RadosMultiObjReadHandle.h Adds multipart reader handle
src/eckit/io/rados/RadosMultiObjReadHandle.cc Implements multipart reads via MultiHandle
src/eckit/io/rados/RadosKeyValue.h Adds OMAP-backed key/value API wrapper
src/eckit/io/rados/RadosKeyValue.cc Implements OMAP CRUD + key listing
src/eckit/io/rados/RadosAsyncKeyValue.h Adds async variant of key/value wrapper (batched AIO)
src/eckit/io/rados/RadosAsyncKeyValue.cc Implements async/batched OMAP operations
src/eckit/io/rados/RadosAsyncHandle.h Adds async write handle built on top of RadosHandle
src/eckit/io/rados/RadosAsyncHandle.cc Implements AIO-based write/flush behavior
src/eckit/io/rados/RadosException.h Adds RADOS-specific exception types
src/eckit/io/rados/RadosException.cc Implements RADOS-specific exception types
src/eckit/io/rados/RadosHandle.h Refactors single-object handle API and adds seek/size semantics
src/eckit/io/rados/RadosHandle.cc Updates read/write path, adds rados_write_full first-write behavior, seek/size
src/eckit/io/rados/RadosCluster.h Refactors cluster ioctx caching to include namespaces + adds OMAP/AIO helpers
src/eckit/io/rados/RadosCluster.cc Implements namespace-aware ioctx cache, OMAP/AIO RAII helpers, pool listing, etc.
src/eckit/eckit_config.h.in Adds eckit_HAVE_RADOS_ADMIN config define
src/eckit/CMakeLists.txt Wires new RADOS source files and uses imported target Ceph::RADOS
CMakeLists.txt Updates RADOS option package name and adds RADOS_ADMIN feature flag
cmake/FindRADOS.cmake Modernizes find-module and adds imported target Ceph::RADOS
.github/workflows/ci-rados.yml Adds dedicated CI workflow spinning up a Ceph demo cluster and running RADOS tests

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread tests/io/rados-performance.cc Outdated
Comment thread tests/io/test_rados_kv.cc
Comment thread src/eckit/io/rados/RadosMultiObjWriteHandle.cc
Comment thread src/eckit/io/rados/RadosMultiObjWriteHandle.cc
Comment thread src/eckit/io/rados/RadosMultiObjReadHandle.cc
Comment thread src/eckit/io/rados/RadosObject.h
Comment thread src/eckit/io/rados/RadosPool.h Outdated
Comment thread src/eckit/io/rados/RadosNamespace.h Outdated
Comment thread src/eckit/io/rados/RadosAsyncHandle.cc Outdated
Comment thread src/eckit/io/rados/RadosAsyncHandle.cc
Comment thread tests/io/test_radoshandle.cc Outdated
Comment thread tests/io/test_rados_kv.cc
Comment thread tests/io/rados-performance.cc
Comment thread src/eckit/io/rados/RadosPartHandle.cc Outdated
Comment thread src/eckit/io/rados/RadosObject.h
Comment thread src/eckit/io/rados/RadosMultiObjWriteHandle.cc
Comment thread src/eckit/io/rados/RadosKeyValue.cc
Comment thread src/eckit/io/rados/RadosKeyValue.cc
Comment thread src/eckit/io/rados/RadosCluster.cc
Comment thread src/eckit/io/rados/RadosAsyncHandle.cc Outdated
@mcakircali
mcakircali requested a review from simondsmart July 13, 2026 07:03
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants