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:
17
app/main.go
17
app/main.go
@@ -152,6 +152,23 @@ func Run(
|
||||
}
|
||||
}
|
||||
|
||||
// Initialize cluster manager for cluster replication
|
||||
var clusterAdminNpubs []string
|
||||
if len(cfg.ClusterAdmins) > 0 {
|
||||
clusterAdminNpubs = cfg.ClusterAdmins
|
||||
} else {
|
||||
// Default to regular admins if no cluster admins specified
|
||||
for _, admin := range cfg.Admins {
|
||||
clusterAdminNpubs = append(clusterAdminNpubs, admin)
|
||||
}
|
||||
}
|
||||
|
||||
if len(clusterAdminNpubs) > 0 {
|
||||
l.clusterManager = dsync.NewClusterManager(ctx, db, clusterAdminNpubs)
|
||||
l.clusterManager.Start()
|
||||
log.I.F("cluster replication manager initialized with %d admin npubs", len(clusterAdminNpubs))
|
||||
}
|
||||
|
||||
// Initialize the user interface
|
||||
l.UserInterface()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user