Add cluster replication features and membership management
- Introduced a new `ClusterManager` to handle cluster membership events and facilitate event replication across relay peers. - Implemented HTTP endpoints for retrieving the latest serial and fetching events within a specified range. - Enhanced event handling to process cluster membership events (Kind 39108) and update relay lists accordingly. - Updated configuration to support cluster administrators and their management capabilities. - Added comprehensive tests to validate the new cluster replication functionalities. - Documented the cluster replication protocol in a new specification file. - Bumped version to reflect these changes.
This commit is contained in:
@@ -467,6 +467,13 @@ func (l *Listener) HandleEvent(msg []byte) (err error) {
|
||||
}
|
||||
}
|
||||
|
||||
// Handle cluster membership events (Kind 39108)
|
||||
if env.E.Kind == 39108 && l.clusterManager != nil {
|
||||
if err := l.clusterManager.HandleMembershipEvent(env.E); err != nil {
|
||||
log.W.F("invalid cluster membership event %s: %v", hex.Enc(env.E.ID), err)
|
||||
}
|
||||
}
|
||||
|
||||
// Update serial for distributed synchronization
|
||||
if l.syncManager != nil {
|
||||
l.syncManager.UpdateSerial()
|
||||
|
||||
Reference in New Issue
Block a user