mattermost/server/platform/services/remotecluster/README.md

1.6 KiB

Remote Cluster Service

Package remotecluster implements Mattermost's "Secured Connections" feature, which enables communication between different Mattermost clusters. Specifically, this package provides:

Service Management:

  • Manages inter-cluster communication via topic-based messages
  • Handles connection state (active/inactive) based on cluster leadership
  • Maintains concurrent send channels (MaxConcurrentSends = 10) for parallel message processing
  • Implements periodic health checks (pings) to monitor remote cluster connectivity

Message Handling:

  • Sends messages using a pool of goroutines to handle concurrent sends while preserving message order per remote
  • Uses hash-based routing to ensure messages for the same remote ID go to the same channel
  • Supports different types of sends: messages, files, and profile images
  • Implements topic-based message routing with listener callbacks

Connection Management:

  • Handles invitation confirmations between clusters
  • Maintains HTTP client connections with proper timeouts and transport settings
  • Supports connection state listeners for monitoring remote cluster availability
  • Implements ping mechanism to verify remote cluster health

Core Features:

  • Topic-based message routing
  • File transfer capabilities
  • Profile image synchronization
  • Invitation system for establishing connections
  • Health monitoring via pings
  • Concurrent message processing
  • Connection state management

This package is designed to be thread-safe and handles leadership changes in clustered environments, only running active operations on the leader node.