Skip to content

[BDLS] Implemented Dynamic Membership Management with Certificate Validation and Retry Logic #32

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 66 commits into
base: main
Choose a base branch
from

Conversation

Sukuna0007Abhi
Copy link

@Sukuna0007Abhi Sukuna0007Abhi commented May 11, 2025

Description

Provides dynamic membership management for BDLS consensus so that orderer nodes can be added and removed via configuration updates.

Changes

  • Introduce configUpdate() function to manage orderer membership changes
  • Introduce certificate validation for new consenters with error handling
  • Introduce connection retry logic with exponential backoff
  • Introduce graceful node removal with cleanup
  • Introduce unit tests for membership changes in chain_test.go
  • Introduce integration test documentation in TESTING.md

Implementation Details

  • Certificate validation for secure node addition
  • Backoff-based connection retry for reliability enhancement
  • Node removal without network disruption
  • Communication layer reconfiguration for cluster stability
  • Error handling in Fabric patterns
  • Logging with visibility into operations

Test Coverage

Unit Tests (chain_test.go):

  • Verify consenter certificate validation
  • Verify node addition and removal scenarios
  • Verify communication reconfiguration
  • Verify error handling paths

Integration Tests (TESTING.md):

  • Network configuration with 4 nodes
  • Dynamic node addition testing
  • Node removal testing
  • Certificate validation testing
  • Connection establishment
  • Consensus continuation

Documentation

  • Included detailed testing instructions in TESTING.md
  • Included code comments detailing the implementation
  • Included error handling and recovery procedures in documentation

Related Issue

Resolves #24

Checklist

  • Code adheres to project style guidelines
  • Unit tests included with adequate coverage
  • Integration tests documented
  • Code comments and documentation updated
  • Error paths tested and handled
  • Signed-off all commits with DCO
  • Updated relevant documentation
  • CI tests pass
  • No new linting issues introduced

Dependencies

  • No new external dependencies added
  • Utilizes existing Fabric crypto and networking primitives

Testing Instructions

See TESTING.md for comprehensive instructions to:

  1. Begin a test network
  2. Add new nodes
  3. Delete nodes
  4. Validate operations
  5. Debug common issues

Additional Notes

  • Implementation patterns follow etcdraft consensus
  • Error handling follows Fabric practice
  • Backward compatibility is maintained
  • No breaking changes added

Signed-off-by: Abhijit(Sukuna0007Abhi) [email protected]

Signed-off-by: Ahmed Al Salih <[email protected]>
Signed-off-by: Ahmed Al Salih <[email protected]>
Signed-off-by: Ahmed Al Salih <[email protected]>
Signed-off-by: Ahmed Al Salih <[email protected]>
Signed-off-by: Ahmed Al Salih <[email protected]>
Signed-off-by: Ahmed Al Salih <[email protected]>
Signed-off-by: Ahmed Al Salih <[email protected]>
Signed-off-by: Ahmed Al Salih <[email protected]>
Signed-off-by: Ahmed Al Salih <[email protected]>
Update The date for the next upcoming community meeting

Signed-off-by: Ahmed Al Salih <[email protected]>
…adyc

Update The date for the next upcoming community meeting
Next meeting: Thursday, June-20, 2024

Signed-off-by: Ahmed Al Salih <[email protected]>
Next meeting: Thursday, June-20, 2024

Signed-off-by: Ahmed Al Salih <[email protected]>
Signed-off-by: Ahmed Al Salih <[email protected]>
Signed-off-by: Ahmed Al Salih <[email protected]>
Signed-off-by: Ahmed Al Salih <[email protected]>
Signed-off-by: Ahmed Al Salih <[email protected]>
ahmed82 and others added 28 commits October 2, 2024 23:52
Signed-off-by: Ahmed Al Salih <[email protected]>
Signed-off-by: Ahmed Al Salih <[email protected]>
Signed-off-by: Ahmed Al Salih <[email protected]>
Signed-off-by: Ahmed Al Salih <[email protected]>
…adyc

Update the next community meeting date
Signed-off-by: Ahmed Al Salih <[email protected]>
Signed-off-by: Ahmed Al Salih <[email protected]>
…adyc

Update with the new data for the BDLS community team
Signed-off-by: Ahmed Al Salih <[email protected]>
Signed-off-by: Ahmed Al Salih <[email protected]>
Signed-off-by: Ahmed Al Salih <[email protected]>
Signed-off-by: Ahmed Al Salih <[email protected]>
Signed-off-by: Ahmed Al Salih <[email protected]>
Signed-off-by: Ahmed Al Salih <[email protected]>
Signed-off-by: Ahmed Al Salih <[email protected]>
Signed-off-by: Ahmed Al Salih <[email protected]>
- Include configUpdate() method to deal with orderer membership update
- Add certificate validation of new consenters
- Include connection retry with backoff for robustness
- Implement graceful node deletion with cleanup
- Update cluster communication config
- Include chain_test.go with unit tests for config updates
- Include TESTING.md with integration test details

This provides dynamic membership management for BDLS consensus
supporting orderer nodes to be added or removed via config updates
without jeopardizing the stability of the network. Maintains test coverage
and documentation.

Signed-off-by:Abhijit (Sukuna0007Abhi)<[email protected]>
@ahmed82 ahmed82 self-requested a review May 13, 2025 14:45
@ahmed82
Copy link
Member

ahmed82 commented May 13, 2025

@Sukuna0007Abhi, Thank you for contributing. Please attend the next Community Call on May 22 or let me know so I can review your contribution with you on a one-to-one call.

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.

2 participants