Update cmd/futriis/main.go
This commit is contained in:
@@ -85,7 +85,7 @@ func main() {
|
|||||||
aclManager := acl.NewACLManager()
|
aclManager := acl.NewACLManager()
|
||||||
logger.Info("ACL manager initialized")
|
logger.Info("ACL manager initialized")
|
||||||
|
|
||||||
// Исправлено: передаём store как второй аргумент
|
// Передаём store как второй аргумент
|
||||||
raftCoordinator, err := cluster.NewRaftCoordinator(cfg, store, logger)
|
raftCoordinator, err := cluster.NewRaftCoordinator(cfg, store, logger)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logger.Error("Failed to start Raft coordinator: " + err.Error())
|
logger.Error("Failed to start Raft coordinator: " + err.Error())
|
||||||
@@ -93,7 +93,7 @@ func main() {
|
|||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
|
|
||||||
// ========== НОВАЯ ФУНКЦИОНАЛЬНОСТЬ: Проверка статуса миграций схемы данных ==========
|
// ========== Проверка статуса миграций схемы данных ==========
|
||||||
if raftCoordinator != nil {
|
if raftCoordinator != nil {
|
||||||
schemaMigrator := raftCoordinator.GetSchemaMigrator()
|
schemaMigrator := raftCoordinator.GetSchemaMigrator()
|
||||||
if schemaMigrator != nil {
|
if schemaMigrator != nil {
|
||||||
@@ -124,7 +124,7 @@ func main() {
|
|||||||
logger.Warn("Schema migrator not available")
|
logger.Warn("Schema migrator not available")
|
||||||
}
|
}
|
||||||
|
|
||||||
// ========== НОВАЯ ФУНКЦИОНАЛЬНОСТЬ: Проверка статуса Fallback менеджера ==========
|
// ========== Проверка статуса Fallback менеджера ==========
|
||||||
fallbackMgr := raftCoordinator.GetFallbackManager()
|
fallbackMgr := raftCoordinator.GetFallbackManager()
|
||||||
if fallbackMgr != nil {
|
if fallbackMgr != nil {
|
||||||
logger.Info("Leader fallback manager is active (Single Point of Failure protection enabled)")
|
logger.Info("Leader fallback manager is active (Single Point of Failure protection enabled)")
|
||||||
@@ -134,7 +134,7 @@ func main() {
|
|||||||
logger.Warn("Leader fallback manager not available")
|
logger.Warn("Leader fallback manager not available")
|
||||||
}
|
}
|
||||||
|
|
||||||
// ========== НОВАЯ ФУНКЦИОНАЛЬНОСТЬ: Проверка статуса Panic Recovery менеджера ==========
|
// ========== Проверка статуса Panic Recovery менеджера ==========
|
||||||
panicRecoveryMgr := raftCoordinator.GetPanicRecoveryManager()
|
panicRecoveryMgr := raftCoordinator.GetPanicRecoveryManager()
|
||||||
if panicRecoveryMgr != nil {
|
if panicRecoveryMgr != nil {
|
||||||
logger.Info("Panic recovery manager is active (automatic goroutine recovery enabled)")
|
logger.Info("Panic recovery manager is active (automatic goroutine recovery enabled)")
|
||||||
@@ -144,7 +144,7 @@ func main() {
|
|||||||
logger.Warn("Panic recovery manager not available")
|
logger.Warn("Panic recovery manager not available")
|
||||||
}
|
}
|
||||||
|
|
||||||
// ========== НОВАЯ ФУНКЦИОНАЛЬНОСТЬ: Проверка статуса Persistence менеджера ==========
|
// ========== Проверка статуса Persistence менеджера ==========
|
||||||
persistenceMgr := raftCoordinator.GetPersistenceManager()
|
persistenceMgr := raftCoordinator.GetPersistenceManager()
|
||||||
if persistenceMgr != nil {
|
if persistenceMgr != nil {
|
||||||
logger.Info("Persistence manager is active (automatic data persistence enabled)")
|
logger.Info("Persistence manager is active (automatic data persistence enabled)")
|
||||||
@@ -165,7 +165,7 @@ func main() {
|
|||||||
|
|
||||||
node := cluster.NewNode(cfg.Cluster.NodeIP, cfg.Cluster.NodePort, store, logger)
|
node := cluster.NewNode(cfg.Cluster.NodeIP, cfg.Cluster.NodePort, store, logger)
|
||||||
|
|
||||||
// Исправлено: объявляем переменную maxRetries здесь, чтобы она была доступна
|
// Объявляем переменную maxRetries здесь, чтобы она была доступна
|
||||||
maxRetries := 5
|
maxRetries := 5
|
||||||
var registerErr error
|
var registerErr error
|
||||||
for i := 0; i < maxRetries; i++ {
|
for i := 0; i < maxRetries; i++ {
|
||||||
@@ -185,7 +185,7 @@ func main() {
|
|||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Исправлено: передаём отдельные параметры из конфигурации плагинов
|
// Передаём отдельные параметры из конфигурации плагинов
|
||||||
pluginManager := plugin.NewPluginManager(
|
pluginManager := plugin.NewPluginManager(
|
||||||
cfg.Plugins.ScriptDir,
|
cfg.Plugins.ScriptDir,
|
||||||
logger,
|
logger,
|
||||||
@@ -234,7 +234,7 @@ func main() {
|
|||||||
logger.Info("Cluster features enabled: Pipeline Replication, Batch Commit, Dynamic Resharding, Joint Consensus")
|
logger.Info("Cluster features enabled: Pipeline Replication, Batch Commit, Dynamic Resharding, Joint Consensus")
|
||||||
logger.Info("Observability metrics and health checks available at /api/webui/metrics and /api/webui/health")
|
logger.Info("Observability metrics and health checks available at /api/webui/metrics and /api/webui/health")
|
||||||
|
|
||||||
// ========== НОВАЯ ФУНКЦИОНАЛЬНОСТЬ: Вывод информации о новых компонентах ==========
|
// ========== Вывод информации о новых компонентах ==========
|
||||||
logger.Info("Additional features:")
|
logger.Info("Additional features:")
|
||||||
logger.Info(" - Single Point of Failure protection (Leader Fallback) - ENABLED")
|
logger.Info(" - Single Point of Failure protection (Leader Fallback) - ENABLED")
|
||||||
logger.Info(" - Automatic Panic Recovery for goroutines - ENABLED")
|
logger.Info(" - Automatic Panic Recovery for goroutines - ENABLED")
|
||||||
@@ -258,12 +258,12 @@ func main() {
|
|||||||
utils.Println("\nReceived shutdown signal, starting graceful shutdown...")
|
utils.Println("\nReceived shutdown signal, starting graceful shutdown...")
|
||||||
logger.Info("Received shutdown signal, starting graceful shutdown...")
|
logger.Info("Received shutdown signal, starting graceful shutdown...")
|
||||||
|
|
||||||
// 1. Останавливаем REPL
|
// Останавливаем REPL
|
||||||
logger.Info("Stopping REPL...")
|
logger.Info("Stopping REPL...")
|
||||||
replInstance.Close()
|
replInstance.Close()
|
||||||
logger.Info("REPL stopped")
|
logger.Info("REPL stopped")
|
||||||
|
|
||||||
// 2. Останавливаем HTTP сервер с таймаутом
|
// Останавливаем HTTP сервер с таймаутом
|
||||||
logger.Info("Stopping HTTP server...")
|
logger.Info("Stopping HTTP server...")
|
||||||
shutdownCtx, shutdownCancel := context.WithTimeout(context.Background(), 30*time.Second)
|
shutdownCtx, shutdownCancel := context.WithTimeout(context.Background(), 30*time.Second)
|
||||||
defer shutdownCancel()
|
defer shutdownCancel()
|
||||||
@@ -283,7 +283,7 @@ func main() {
|
|||||||
logger.Warn("HTTP server shutdown timeout")
|
logger.Warn("HTTP server shutdown timeout")
|
||||||
}
|
}
|
||||||
|
|
||||||
// 3. Останавливаем WebUI
|
// Останавливаем WebUI
|
||||||
logger.Info("Stopping WebUI...")
|
logger.Info("Stopping WebUI...")
|
||||||
webUIStopDone := make(chan struct{})
|
webUIStopDone := make(chan struct{})
|
||||||
go func() {
|
go func() {
|
||||||
@@ -300,7 +300,7 @@ func main() {
|
|||||||
logger.Warn("WebUI shutdown timeout")
|
logger.Warn("WebUI shutdown timeout")
|
||||||
}
|
}
|
||||||
|
|
||||||
// 4. Останавливаем плагины
|
// Останавливаем плагины
|
||||||
if cfg.Plugins.Enabled && pluginManager != nil {
|
if cfg.Plugins.Enabled && pluginManager != nil {
|
||||||
logger.Info("Stopping plugins...")
|
logger.Info("Stopping plugins...")
|
||||||
plugins := pluginManager.ListPlugins()
|
plugins := pluginManager.ListPlugins()
|
||||||
@@ -322,7 +322,7 @@ func main() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 5. Сохраняем данные на диск
|
// Сохраняем данные на диск
|
||||||
logger.Info("Persisting data to disk...")
|
logger.Info("Persisting data to disk...")
|
||||||
persistDone := make(chan struct{})
|
persistDone := make(chan struct{})
|
||||||
go func() {
|
go func() {
|
||||||
@@ -347,7 +347,7 @@ func main() {
|
|||||||
logger.Warn("Persistence timeout")
|
logger.Warn("Persistence timeout")
|
||||||
}
|
}
|
||||||
|
|
||||||
// 6. Останавливаем координатор
|
// Останавливаем координатор
|
||||||
logger.Info("Stopping Raft coordinator...")
|
logger.Info("Stopping Raft coordinator...")
|
||||||
raftStopDone := make(chan struct{})
|
raftStopDone := make(chan struct{})
|
||||||
go func() {
|
go func() {
|
||||||
@@ -362,7 +362,7 @@ func main() {
|
|||||||
logger.Warn("Raft coordinator shutdown timeout")
|
logger.Warn("Raft coordinator shutdown timeout")
|
||||||
}
|
}
|
||||||
|
|
||||||
// 7. Останавливаем узел
|
// Останавливаем узел
|
||||||
logger.Info("Stopping cluster node...")
|
logger.Info("Stopping cluster node...")
|
||||||
nodeStopDone := make(chan struct{})
|
nodeStopDone := make(chan struct{})
|
||||||
go func() {
|
go func() {
|
||||||
@@ -377,7 +377,7 @@ func main() {
|
|||||||
logger.Warn("Node shutdown timeout")
|
logger.Warn("Node shutdown timeout")
|
||||||
}
|
}
|
||||||
|
|
||||||
// 8. Синхронизируем и закрываем логгер
|
// Синхронизируем и закрываем логгер
|
||||||
logger.Info("Finalizing logger...")
|
logger.Info("Finalizing logger...")
|
||||||
if err := logger.Sync(); err != nil {
|
if err := logger.Sync(); err != nil {
|
||||||
fmt.Printf("Failed to sync logger: %v\n", err)
|
fmt.Printf("Failed to sync logger: %v\n", err)
|
||||||
@@ -413,7 +413,7 @@ func displayBanner(clusterName string, webUIEnabled bool, webUIPort int, httpPor
|
|||||||
bannerLines = append(bannerLines, " Observability endpoints: /api/webui/metrics, /api/webui/health")
|
bannerLines = append(bannerLines, " Observability endpoints: /api/webui/metrics, /api/webui/health")
|
||||||
}
|
}
|
||||||
|
|
||||||
// ========== НОВАЯ ФУНКЦИОНАЛЬНОСТЬ: Добавляем информацию о новых компонентах в баннер ==========
|
// ========== Добавляем информацию о новых компонентах в баннер ==========
|
||||||
bannerLines = append(bannerLines, " Additional features:")
|
bannerLines = append(bannerLines, " Additional features:")
|
||||||
bannerLines = append(bannerLines, " - Single Point of Failure protection (Leader Fallback)")
|
bannerLines = append(bannerLines, " - Single Point of Failure protection (Leader Fallback)")
|
||||||
bannerLines = append(bannerLines, " - Automatic Panic Recovery for goroutines")
|
bannerLines = append(bannerLines, " - Automatic Panic Recovery for goroutines")
|
||||||
|
|||||||
Reference in New Issue
Block a user