fix: harden multi-pod delivery and load verification
This commit is contained in:
@@ -34,6 +34,7 @@ import (
|
||||
_ "github.com/tinode/chat/server/auth/code"
|
||||
_ "github.com/tinode/chat/server/auth/rest"
|
||||
_ "github.com/tinode/chat/server/auth/token"
|
||||
adapter "github.com/tinode/chat/server/db"
|
||||
"github.com/tinode/chat/server/store/types"
|
||||
|
||||
// Database backends
|
||||
@@ -516,6 +517,23 @@ func main() {
|
||||
logs.Info.Println("All done, good bye")
|
||||
}()
|
||||
statsRegisterDbStats()
|
||||
if kafkaConfigured(config.Kafka) {
|
||||
tenants, tenantErr := store.Tenants.ListActive(10000)
|
||||
if tenantErr != nil {
|
||||
logs.Err.Fatal("Failed to list tenants for Kafka message schema validation:", tenantErr)
|
||||
}
|
||||
tenantIDs := make([]types.TenantID, 0, len(tenants))
|
||||
for i := range tenants {
|
||||
tenantIDs = append(tenantIDs, tenants[i].ID)
|
||||
}
|
||||
validator, ok := store.Store.GetAdapter().(adapter.TenantMessageSchemaAdapter)
|
||||
if !ok {
|
||||
logs.Err.Fatal("Kafka message persistence requires a message schema validator")
|
||||
}
|
||||
if err = validator.TenantMessageSchemaValidate(tenantIDs); err != nil {
|
||||
logs.Err.Fatal("Kafka message persistence schema validation failed:", err)
|
||||
}
|
||||
}
|
||||
|
||||
if err = initKafkaRuntime(config.Kafka); err != nil {
|
||||
logs.Err.Fatal("Failed to initialize Kafka:", err)
|
||||
@@ -860,6 +878,7 @@ func main() {
|
||||
mux.HandleFunc(sspath, serveStatus)
|
||||
}
|
||||
mux.HandleFunc("/healthz", serveHealthz)
|
||||
mux.HandleFunc("/livez", serveLivez)
|
||||
mux.HandleFunc("/metrics", serveMetrics)
|
||||
|
||||
// Public legal pages are opened directly by clients before login.
|
||||
|
||||
Reference in New Issue
Block a user