devloperdevesh / devloperdevesh/FaultPlane

research(storage): prototype checkpoint ring buffer backend

Open
#8 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

enhancement
Dominant language
Go
Stars
2
Forks
1
Avg merge
14m
Merged PRs (30d)
57

Description

Problem

The current memory storage implementation uses standard synchronization primitives to protect workflow state.

While this provides correctness, high-frequency checkpoint operations may benefit from exploring alternative memory layouts optimized for sequential state access patterns.


Proposed Solution

Prototype a ring buffer based checkpoint storage backend.

The implementation should:

  • Create an experimental ring buffer storage component.
  • Maintain checkpoint ordering using head and tail positions.
  • Explore safe concurrent access patterns.
  • Compare performance against the existing MemoryStore.
  • Add benchmarks for throughput and memory behavior.

Goals:

  • Evaluate alternative storage layouts.
  • Understand performance trade-offs.
  • Keep the current storage implementation unchanged.

Alternatives

Alternative approaches considered:

  • Continue using map-based storage with mutex protection.

    • Simple and reliable but may limit experimentation with high-frequency workloads.
  • Introduce external databases immediately.

    • Adds operational complexity before storage requirements are fully defined.

Use Case

A ring buffer experiment can help evaluate future optimizations for:

  • High-frequency checkpoints
  • Local state buffering
  • Runtime recovery pipelines
  • Distributed synchronization preparation

Additional Notes

Requirements:

  • This is an experimental backend.
  • Existing storage interfaces must remain compatible.
  • Production storage behavior should not change.
  • Include benchmark comparisons.

Related areas:

  • internal/storage/
  • internal/control/checkpoint.go

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reading the existing storage implementation under internal/storage/ and the checkpoint flow in internal/control/checkpoint.go. Identify the current MemoryStore interface and its compatibility requirements before designing the experimental backend. Done means a ring buffer prototype preserves checkpoint ordering, includes safe concurrent access, and has benchmark comparisons for throughput and memory behavior without changing production storage.

Written by the indexing model from the issue text.

Assessment

Tech stack
go
Domain
backend, distributed-systems, performance
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.