cdc-parallel
Optional high-throughput Ractor runtime for cdc-core.
cdc-parallel executes CDC::Core::Processor objects in Ractors when those processors explicitly declare themselves Ractor-safe.
Requirements
- Ruby 4.0+
cdc-coreparallel-pool
Ruby 4.0+ is required because this gem targets the stabilized Ruby Ractor API.
Purpose
cdc-core
│
▼
cdc-parallel
│
▼
parallel Parallel-aware processing
cdc-parallel is a runtime adapter. It does not define CDC events and does not parse database streams.
Installation
gem "cdc-parallel"
Usage
require "cdc/core"
require "cdc/parallel"
class MetricsProcessor < CDC::Core::Processor
ractor_safe!
def process(event)
CDC::Core::ProcessorResult.success(
table: event.table,
operation: event.operation
)
end
end
runtime =
CDC::Parallel::Runtime.new(
processor: MetricsProcessor.new,
size: 4
)
result = runtime.process(event)
runtime.shutdown
Processor Safety
Only processors that declare ractor_safe! can run in this runtime.
class AnalyticsProcessor < CDC::Core::Processor
ractor_safe!
end
Unsafe processors raise:
CDC::Parallel::UnsafeProcessorError
What Belongs Here
- Ractor processor execution
- Transaction envelope processing
- Processor safety validation
- Graceful shutdown
- Result normalization
What Does Not Belong Here
- PostgreSQL connection handling
- pgoutput parsing
- pgoutput decoding
- Rails integration
- Audit persistence
- Kafka/Redis/S3 publishing
Ecosystem Position
cdc-parallel
│
▼
pgoutput-parser
│
▼
pgoutput-decoder
│
▼
cdc-core
│
▼
cdc-parallel
│
▼
whodunit-chronicles
Roadmap
- Persistent worker pools using
parallel-pool - Mixed
CompositeProcessorrouting - Ratomic-backed queues
- Ratomic-backed metrics
- Backpressure policies
- Transaction ordering strategies
Test Organization
The test suite is grouped by intent so the same structure can be reused across CDC ecosystem gems.
test/unit/ focused class and branch coverage
test/integration/ component interaction and runtime integration
test/behavior/ ecosystem contracts and guardrails
test/performance/ opt-in smoke benchmarks
Run the default quality suite:
bundle exec rake test
Run a specific group:
bundle exec rake test:unit
bundle exec rake test:integration
bundle exec rake test:behavior
bundle exec rake test:performance
The default test task runs unit, integration, and behavior tests. Performance tests are intentionally separate because they are environment-sensitive.
License
MIT.