Skip to content
This repository was archived by the owner on Jan 16, 2026. It is now read-only.

chore(supervisor): refactor managed node#2634

Merged
dhyaniarun1993 merged 53 commits intomainfrom
chore/refactor-managed-node
Aug 5, 2025
Merged

chore(supervisor): refactor managed node#2634
dhyaniarun1993 merged 53 commits intomainfrom
chore/refactor-managed-node

Conversation

@dhyaniarun1993
Copy link
Copy Markdown
Collaborator

Closes #2563

Copilot AI review requested due to automatic review settings August 5, 2025 09:30
@dhyaniarun1993 dhyaniarun1993 changed the title [WIP] chore(supervisor): refactor managed node chore(supervisor): refactor managed node Aug 5, 2025
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

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 refactors the managed node architecture in the supervisor service, transitioning from a direct coupling approach to an actor-based pattern with message passing. The refactoring improves separation of concerns and makes the system more modular and testable.

Key changes:

  • Replaces direct managed node calls with command-based message passing using actors
  • Introduces new actor types (ManagedNodeActor, ChainProcessorActor, SupervisorRpcActor) to handle different responsibilities
  • Restructures the service initialization to use a task-based approach with proper lifecycle management

Reviewed Changes

Copilot reviewed 28 out of 31 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
crates/supervisor/service/src/service.rs Complete refactor to use actor-based architecture with separate initialization methods for each component
crates/supervisor/service/src/actors/ New actor implementations for RPC, chain processing, managed nodes, and metrics with proper trait definitions
crates/supervisor/core/src/syncnode/ Refactored managed node to use subscription handlers and command patterns instead of direct method calls
crates/supervisor/core/src/chain_processor/ Updated handlers to use message passing instead of direct managed node method calls
crates/supervisor/core/src/supervisor.rs Simplified supervisor to focus on service interface rather than initialization logic
Comments suppressed due to low confidence (2)

crates/supervisor/service/src/actors/node.rs:32

  • The error type SupervisorRpcActorError is misleading for ManagedNodeActor. This should be renamed to ManagedNodeActorError or a more generic ActorError to match the actual actor type.
    type Error = SupervisorRpcActorError;

crates/supervisor/core/src/chain_processor/handlers/invalidation.rs:19

  • Similar to SafeBlockHandler, the generic type P is no longer used for direct managed node interaction but may still be needed for other components. Consider reviewing if this generic can be simplified or removed.
#[derive(Debug, Constructor)]

@claude
Copy link
Copy Markdown
Contributor

claude bot commented Aug 5, 2025

Claude finished @dhyaniarun1993's task —— View job


Code Review Analysis

Comprehensive review of this supervisor refactoring PR focusing on code quality, potential issues, performance, security, and test coverage.

Todo List:

  • Analyze the overall refactoring scope and architecture changes
  • Review core supervisor changes
  • Review syncnode refactoring and new actor system
  • Review chain processor changes
  • Evaluate test coverage concerns
  • Provide security and performance feedback
  • Summary and recommendations

🏗️ Overall Architecture Analysis

This is a major refactoring that transforms the supervisor from a task-based architecture to an actor-based system. The scope is substantial with 51 commits, 35 changed files, +2782/-1865 lines.

Major Changes:

  • Task → Actor Migration: Removed task.rs files (~1000+ lines) and introduced dedicated actors
  • Command Pattern: New ManagedNodeCommand enum for decoupled communication
  • Event-Driven Design: Enhanced event handling through dedicated actors
  • Better Separation of Concerns: Clean separation between core logic and service orchestration

🎯 Core Supervisor Changes

Strengths:

  • Simplified Interface: supervisor.rs now focuses on implementing the SupervisorService trait cleanly
  • Better Error Handling: Consistent error handling with proper logging throughout
  • Dependency Injection: Clean constructor pattern with Arc<Config>, Arc<ChainDbFactory>, managed nodes
  • Proper Chain ID Conversion: Fixed previous unwrap issue with proper error handling in supervisor.rs:293-299

⚠️ Areas for Improvement:

  • JSON Serialization in Hot Path: Lines supervisor.rs:232,239 serialize to JSON in critical path without caching - consider pre-serialization for performance
  • Database Factory Assignment: Line service.rs:243 has a potential improvement opportunity based on review comments

🎭 Syncnode Refactoring & Actor System

Excellent Improvements:

  • Command Pattern: command.rs introduces clean command abstraction with 5 well-defined commands
  • Actor Lifecycle Management: ManagedNodeActor properly handles both subscription and command tasks
  • Retry Logic: spawn_task_with_retry provides resilience for subscription tasks
  • Clean Separation: ManagedNode focuses on business logic, ManagedNodeActor handles execution

Strong Points:

  • Error Handling: Comprehensive error types and proper trait implementations
  • Event Processing: Good error handling for each event type in subscription handling
  • Resource Management: Proper use of Arc for shared resources
  • Cancellation Support: Good use of CancellationToken for graceful shutdown
  • Chain ID Caching: Smart caching of chain ID in node.rs:58-73 to avoid repeated async calls
  • Subscription Reconnection: Good reconnection logic with proper error handling

Minor Issues:

  • Channel Capacity: Creates channels with capacity 1000 - reasonable but could document rationale
  • Infinite Retries: usize::MAX retries might be excessive - consider exponential backoff
  • Actor Error Type: actors/node.rs:32 uses SupervisorRpcActorError for ManagedNodeActor - should be ManagedNodeActorError

⚙️ Chain Processor Changes

Architecture Improvements:

  • Handler Pattern: Clean separation of concerns with dedicated handlers for different event types
  • Metrics Integration: Good metrics recording throughout handlers
  • State Management: ProcessorState provides clean state tracking
  • Error Propagation: Proper error handling and logging

Positive Changes:

  • Modular Design: Each handler (UnsafeBlockHandler, SafeBlockHandler, etc.) has single responsibility
  • Dependency Injection: Clean constructor injection pattern
  • Async/Await: Proper async patterns throughout
  • Generic Design: Well-designed generics for BlockProvider, InteropValidator, storage traits

📊 Test Coverage Concerns

Major Issue: 67.07% patch coverage with 457 lines missing coverage.

Files with Poor Coverage:

  • service.rs: 0.0% coverage (243 missing lines)
  • actors/node.rs: 29.3% coverage (106 missing lines)
  • syncnode/node.rs: 95.4% coverage (25 missing lines) - This is actually quite good!
  • supervisor.rs: 0.0% coverage (23 missing lines)

Recommendations:

  1. Add Integration Tests: Focus on testing actor interactions and event flows
  2. Unit Tests: Add tests for error scenarios and edge cases
  3. Mock Testing: Use the existing mock framework more extensively
  4. Actor Tests: Test command handling and subscription processing

🔒 Security & Performance Analysis

Security Strengths:

  • Input Validation: Good validation in access list checking (supervisor.rs:284-340)
  • Error Boundary: Errors are properly contained and logged
  • Proper Error Handling: Chain ID parsing now uses proper error handling instead of panics

Security Concerns:

  • Resource Exhaustion: Unbounded channels could consume excessive memory
  • Infinite Retries: usize::MAX retries could amplify DoS attacks

Performance Considerations:

  • ✅ Good: Actor-based design should improve concurrency
  • ✅ Good: Proper use of Arc for shared immutable data
  • ✅ Good: Channel-based event processing for non-blocking operations
  • ✅ Good: Chain ID caching optimization reduces redundant async calls
  • ⚠️ Concern: JSON serialization in hot paths without caching
  • ⚠️ Concern: Channel capacity (1000) might cause memory pressure under load

📝 Summary & Recommendations

Overall Assessment: This is a well-architected refactoring that significantly improves the codebase structure. The actor-based design is a solid improvement over the previous task-based approach.

Priority Fixes Required:

  1. 🔥 Medium Priority:

    • Improve test coverage (currently 67.07% - target 80%+)
    • Add integration tests for actor interactions
    • Consider caching JSON serialization in hot paths
    • Fix actor error type naming inconsistency
  2. 💡 Nice to Have:

    • Add comprehensive error scenario testing
    • Document channel capacity choices
    • Add property-based tests for state transitions
    • Implement exponential backoff instead of infinite retries

Strengths to Celebrate:

  • Clean separation of concerns with the new actor system
  • Excellent command pattern implementation
  • Good use of modern Rust async patterns
  • Strong error type definitions and handling patterns
  • Proper resource management with Arc
  • Smart chain ID caching optimization
  • Improved Error Handling: Chain ID parsing now properly handles errors

Verdict: Approve with requested changes. The architectural improvements are significant and valuable. While test coverage needs improvement, the core design is sound and represents a major step forward for the codebase.


Copy link
Copy Markdown
Collaborator

@itschaindev itschaindev left a comment

Choose a reason for hiding this comment

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

first pass


impl Service {
/// Creates a new Supervisor service instance.
pub fn new(config: Config) -> Self {
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

imo, we should get rid of this constructor since it's not really configuring it. Instead we can either use the initialise() directly or use new() to contain the entire initialisation() logic.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

also following the same pattern to initialisation logic elsewhere in the code.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

It’s idiomatic for constructor to only setup struct fields. Since our initialization can fail and is async, we separate it into another method. This avoids making new fallible or async and helps keep the API clear and robust.

impl Service {
/// Creates a new Supervisor service instance.
pub fn new(config: Config) -> Self {
let database_factory = Arc::new(ChainDbFactory::new(config.datadir.clone()).with_metrics());
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

e.g. we are already doing this in initialise()

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

This has been removed from the initialise.

Copy link
Copy Markdown
Contributor

@emhane emhane left a comment

Choose a reason for hiding this comment

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

the scope of this pr is too big. can we pls open a separate pr for changes in crates/node to the extent possible

Comment on lines +19 to 28
managed_nodes: HashMap<ChainId, Arc<C>>,
}
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.

nice

Copy link
Copy Markdown
Contributor

@emhane emhane left a comment

Choose a reason for hiding this comment

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

nvm, seemed to me that some commits where in kona-node, but they aren't

Copy link
Copy Markdown
Collaborator

@itschaindev itschaindev left a comment

Choose a reason for hiding this comment

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

we have a much cleaner structure now.. 🙌

@claude
Copy link
Copy Markdown
Contributor

claude bot commented Aug 5, 2025

Claude finished @dhyaniarun1993's task —— View job


Code Review Analysis

Comprehensive review of this supervisor refactoring PR focusing on code quality, potential issues, performance, security, and test coverage.

Todo List:

  • Analyze the overall refactoring scope and architecture changes
  • Review core supervisor changes
  • Review syncnode refactoring and new actor system
  • Review chain processor changes
  • Evaluate test coverage concerns
  • Provide security and performance feedback
  • Summary and recommendations

🏗️ Overall Architecture Analysis

This is a major refactoring that transforms the supervisor from a task-based architecture to an actor-based system. The scope is substantial with 53 commits, 35 changed files, +2782/-1865 lines.

Major Changes:

  • Task → Actor Migration: Removed task.rs files (~1000+ lines) and introduced dedicated actors
  • Command Pattern: New ManagedNodeCommand enum for decoupled communication
  • Event-Driven Design: Enhanced event handling through dedicated actors
  • Better Separation of Concerns: Clean separation between core logic and service orchestration

🎯 Core Supervisor Changes

Strengths:

  • Simplified Interface: supervisor.rs now focuses on implementing the SupervisorService trait cleanly
  • Better Error Handling: Consistent error handling with proper logging throughout
  • Dependency Injection: Clean constructor pattern with Arc<Config>, Arc<ChainDbFactory>, managed nodes
  • Proper Chain ID Conversion: Fixed previous unwrap issue with proper error handling in supervisor.rs:293-299

⚠️ Areas for Improvement:

  • JSON Serialization in Hot Path: Lines supervisor.rs:232,239 serialize to JSON in critical path without caching - consider pre-serialization for performance
  • Service.rs Line 243: Potential issue flagged by review comments about database factory assignment

🎭 Syncnode Refactoring & Actor System

Excellent Improvements:

  • Command Pattern: command.rs introduces clean command abstraction with 5 well-defined commands
  • Actor Lifecycle Management: ManagedNodeActor properly handles both subscription and command tasks
  • Retry Logic: spawn_task_with_retry provides resilience for subscription tasks
  • Clean Separation: ManagedNode focuses on business logic, ManagedNodeActor handles execution

Strong Points:

  • Error Handling: Comprehensive error types and proper trait implementations
  • Event Processing: Good error handling for each event type in subscription handling
  • Resource Management: Proper use of Arc for shared resources
  • Cancellation Support: Good use of CancellationToken for graceful shutdown
  • Chain ID Caching: Smart caching of chain ID in node.rs:58-73 to avoid repeated async calls
  • Subscription Reconnection: Good reconnection logic with proper error handling

Minor Issues:

  • Channel Capacity: Creates channels with capacity 1000 - reasonable but could document rationale
  • Infinite Retries: usize::MAX retries might be excessive - consider exponential backoff
  • Actor Error Type: actors/node.rs:32 uses SupervisorRpcActorError for ManagedNodeActor - should be ManagedNodeActorError

⚙️ Chain Processor Changes

Architecture Improvements:

  • Handler Pattern: Clean separation of concerns with dedicated handlers for different event types
  • Metrics Integration: Good metrics recording throughout handlers
  • State Management: ProcessorState provides clean state tracking
  • Error Propagation: Proper error handling and logging

Positive Changes:

  • Modular Design: Each handler (UnsafeBlockHandler, SafeBlockHandler, etc.) has single responsibility
  • Dependency Injection: Clean constructor injection pattern
  • Async/Await: Proper async patterns throughout
  • Generic Design: Well-designed generics for BlockProvider, InteropValidator, storage traits

📊 Test Coverage Concerns

Major Issue: 67.07% patch coverage with 457 lines missing coverage.

Files with Poor Coverage:

  • service.rs: 0.0% coverage (243 missing lines)
  • actors/node.rs: 29.3% coverage (106 missing lines)
  • syncnode/node.rs: 95.4% coverage (25 missing lines) - This is actually quite good!
  • supervisor.rs: 0.0% coverage (23 missing lines)

Positive Testing Notes:

  • Mock Framework: Good use of mockall for testing - seen in actors/node.rs:303-332
  • Unit Tests Present: Found unit tests for command handling in actors/node.rs:334-361
  • 37 Files with Tests: Found #[cfg(test)] in 37 supervisor files, indicating decent test infrastructure

Recommendations:

  1. Add Integration Tests: Focus on testing actor interactions and event flows
  2. Unit Tests: Add tests for error scenarios and edge cases
  3. Mock Testing: Use the existing mock framework more extensively
  4. Actor Tests: Test command handling and subscription processing

🔒 Security & Performance Analysis

Security Strengths:

  • Input Validation: Good validation in access list checking (supervisor.rs:284-340)
  • Error Boundary: Errors are properly contained and logged
  • Proper Error Handling: Chain ID parsing now uses proper error handling instead of panics

Security Concerns:

  • Resource Exhaustion: Unbounded channels could consume excessive memory
  • Infinite Retries: usize::MAX retries could amplify DoS attacks

Performance Considerations:

  • ✅ Good: Actor-based design should improve concurrency
  • ✅ Good: Proper use of Arc for shared immutable data
  • ✅ Good: Channel-based event processing for non-blocking operations
  • ✅ Good: Chain ID caching optimization reduces redundant async calls
  • ⚠️ Concern: JSON serialization in hot paths without caching
  • ⚠️ Concern: Channel capacity (1000) might cause memory pressure under load

📝 Summary & Recommendations

Overall Assessment: This is a well-architected refactoring that significantly improves the codebase structure. The actor-based design is a solid improvement over the previous task-based approach.

Priority Fixes Required:

  1. 🔥 Medium Priority:

    • Improve test coverage (currently 67.07% - target 80%+)
    • Add integration tests for actor interactions
    • Consider caching JSON serialization in hot paths
    • Fix actor error type naming inconsistency
  2. 💡 Nice to Have:

    • Add comprehensive error scenario testing
    • Document channel capacity choices
    • Add property-based tests for state transitions
    • Implement exponential backoff instead of infinite retries

Strengths to Celebrate:

  • Clean separation of concerns with the new actor system
  • Excellent command pattern implementation
  • Good use of modern Rust async patterns
  • Strong error type definitions and handling patterns
  • Proper resource management with Arc
  • Smart chain ID caching optimization
  • Improved Error Handling: Chain ID parsing now properly handles errors

Verdict: Approve with requested changes. The architectural improvements are significant and valuable. While test coverage needs improvement, the core design is sound and represents a major step forward for the codebase.


@claude
Copy link
Copy Markdown
Contributor

claude bot commented Aug 5, 2025

Claude finished @dhyaniarun1993's task —— View job


Code Review Analysis

Comprehensive review of this supervisor refactoring PR focusing on code quality, potential issues, performance, security, and test coverage.

Todo List:

  • Analyze the overall refactoring scope and architecture changes
  • Review core supervisor changes
  • Review syncnode refactoring and new actor system
  • Review chain processor changes
  • Evaluate test coverage concerns
  • Provide security and performance feedback
  • Summary and recommendations

🏗️ Overall Architecture Analysis

This is a major refactoring that transforms the supervisor from a task-based architecture to an actor-based system. The scope is substantial with 53 commits, 35 changed files, +2782/-1865 lines.

Major Changes:

  • Task → Actor Migration: Removed task.rs files (~1000+ lines) and introduced dedicated actors
  • Command Pattern: New ManagedNodeCommand enum for decoupled communication
  • Event-Driven Design: Enhanced event handling through dedicated actors
  • Better Separation of Concerns: Clean separation between core logic and service orchestration

🎯 Core Supervisor Changes

Strengths:

  • Simplified Interface: supervisor.rs now focuses on implementing the SupervisorService trait cleanly
  • Better Error Handling: Consistent error handling with proper logging throughout
  • Dependency Injection: Clean constructor pattern with Arc<Config>, Arc<ChainDbFactory>, managed nodes
  • Proper Chain ID Conversion: Fixed previous unwrap issue with proper error handling in supervisor.rs:293-299

⚠️ Areas for Improvement:

  • JSON Serialization in Hot Path: Lines supervisor.rs:232,239 serialize to JSON in critical path without caching - consider pre-serialization for performance

🎭 Syncnode Refactoring & Actor System

Excellent Improvements:

  • Command Pattern: command.rs introduces clean command abstraction with 5 well-defined commands
  • Actor Lifecycle Management: ManagedNodeActor properly handles both subscription and command tasks
  • Retry Logic: spawn_task_with_retry provides resilience with exponential backoff (2^attempt up to 30s cap)
  • Clean Separation: ManagedNode focuses on business logic, ManagedNodeActor handles execution

Strong Points:

  • Error Handling: Comprehensive error types and proper trait implementations
  • Event Processing: Good error handling for each event type in subscription handling
  • Resource Management: Proper use of Arc for shared resources
  • Cancellation Support: Good use of CancellationToken for graceful shutdown
  • Chain ID Caching: Smart caching of chain ID in node.rs:58-73 to avoid repeated async calls
  • Subscription Reconnection: Good reconnection logic with proper error handling

Minor Issues:

  • Channel Capacity: Creates channels with capacity 1000 - reasonable but could document rationale
  • Infinite Retries: usize::MAX retries might be excessive - consider exponential backoff
  • Actor Error Type: actors/node.rs:32 uses SupervisorRpcActorError for ManagedNodeActor - should be ManagedNodeActorError

⚙️ Chain Processor Changes

Architecture Improvements:

  • Handler Pattern: Clean separation of concerns with dedicated handlers for different event types
  • Metrics Integration: Good metrics recording throughout handlers
  • State Management: ProcessorState provides clean state tracking
  • Error Propagation: Proper error handling and logging

Positive Changes:

  • Modular Design: Each handler (UnsafeBlockHandler, SafeBlockHandler, etc.) has single responsibility
  • Dependency Injection: Clean constructor injection pattern
  • Async/Await: Proper async patterns throughout
  • Generic Design: Well-designed generics for BlockProvider, InteropValidator, storage traits

📊 Test Coverage Concerns

Major Issue: 66.38% patch coverage with 473 lines missing coverage.

Files with Poor Coverage:

  • service.rs: 0.0% coverage (253 missing lines)
  • actors/node.rs: 29.3% coverage (106 missing lines)
  • syncnode/node.rs: 95.4% coverage (25 missing lines) - This is actually quite good!
  • supervisor.rs: 0.0% coverage (23 missing lines)

Test Analysis: Found 208 test cases across 37 files, showing significant testing effort. However, the new actor-based code lacks comprehensive coverage.

Recommendations:

  1. Add Integration Tests: Focus on testing actor interactions and event flows
  2. Unit Tests: Add tests for error scenarios and edge cases
  3. Mock Testing: Use the existing mock framework more extensively
  4. Actor Tests: Test command handling and subscription processing

🔒 Security & Performance Analysis

Security Strengths:

  • Input Validation: Good validation in access list checking (supervisor.rs:284-340)
  • Error Boundary: Errors are properly contained and logged
  • Proper Error Handling: Chain ID parsing now uses proper error handling instead of panics
  • No Direct Panics: Most code uses proper error handling (only found unwrap/expect in test files and utility functions)

Security Concerns:

  • Resource Exhaustion: Unbounded channels could consume excessive memory
  • Infinite Retries: usize::MAX retries could amplify DoS attacks

Performance Considerations:

  • ✅ Good: Actor-based design should improve concurrency
  • ✅ Good: Proper use of Arc for shared immutable data
  • ✅ Good: Channel-based event processing for non-blocking operations
  • ✅ Good: Chain ID caching optimization reduces redundant async calls
  • ✅ Good: Exponential backoff with cap prevents excessive retry delays
  • ⚠️ Concern: JSON serialization in hot paths without caching
  • ⚠️ Concern: Channel capacity (1000) might cause memory pressure under load

📝 Summary & Recommendations

Overall Assessment: This is a well-architected refactoring that significantly improves the codebase structure. The actor-based design is a solid improvement over the previous task-based approach.

Priority Fixes Required:

  1. 🔥 Medium Priority:

    • Dramatically improve test coverage (currently 66.38% - target 80%+)
    • Add integration tests for actor interactions
    • Consider caching JSON serialization in hot paths
    • Fix actor error type naming inconsistency
  2. 💡 Nice to Have:

    • Add comprehensive error scenario testing
    • Document channel capacity choices
    • Add property-based tests for state transitions
    • Consider finite retry limits with exponential backoff for subscription tasks

Strengths to Celebrate:

  • Clean separation of concerns with the new actor system
  • Excellent command pattern implementation
  • Good use of modern Rust async patterns
  • Strong error type definitions and handling patterns
  • Proper resource management with Arc
  • Smart chain ID caching optimization
  • Improved Error Handling: Chain ID parsing now properly handles errors
  • Well-designed Retry Logic: Exponential backoff with proper cancellation

Verdict: Approve with requested changes. The architectural improvements are significant and valuable. While test coverage needs improvement, the core design is sound and represents a major step forward for the codebase.


@dhyaniarun1993 dhyaniarun1993 added this pull request to the merge queue Aug 5, 2025
Merged via the queue into main with commit 0a09188 Aug 5, 2025
32 of 33 checks passed
@dhyaniarun1993 dhyaniarun1993 deleted the chore/refactor-managed-node branch August 5, 2025 15:21
theochap pushed a commit to ethereum-optimism/optimism that referenced this pull request Dec 10, 2025
Closes op-rs/kona#2563

---------

Co-authored-by: sadiq1971 <sadiqurr8@gmail.com>
theochap pushed a commit to ethereum-optimism/optimism that referenced this pull request Jan 14, 2026
Closes #2563

---------

Co-authored-by: sadiq1971 <sadiqurr8@gmail.com>
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

K-chore Kind: chore W-supervisor Workstream: supervisor

Projects

None yet

Development

Successfully merging this pull request may close these issues.

chore(supervisor/core): Replace direct method call with event driven design in ChainProcessorTask

5 participants