Update internal/cluster/raft_coordinator.go

This commit is contained in:
gvsafronov committed 2026-10-05 21:30:44 +00:00
1 parent f191e5b328
commit 2541233e40
1 file changed
+25 -3
+25 -3
View File
@@ -58,6 +58,11 @@
// Все публичные методы *cluster.SagaManager (GetOrchestrator,
// GetMetrics, GetActiveSagas, Stop) сохранены — они используются
// в repl.go и main.go.
//
// ДОБАВЛЕНО (2026-10, кластерный SagaManager):
// - Метод GetAllSagas() у *SagaManager — возвращает все SAGA
// транзакции (активные и завершённые). Используется REPL-командой
// "saga list --all". Возвращает локальный тип cluster.SagaTransaction.
package cluster
@@ -828,7 +833,6 @@ func (rsm *RangeShardManager) Rebalance() error {
return nil
}
// =============================================================================
// INMEM STORE ДЛЯ RAFT (реализует raft.LogStore и raft.StableStore)
// =============================================================================
@@ -1551,6 +1555,26 @@ func (sm *SagaManager) GetActiveSagas() []*SagaTransaction {
return result
}
// GetAllSagas возвращает все SAGA транзакции — и активные, и завершённые.
//
// ДОБАВЛЕНО (2026-10): используется REPL-командой "saga list --all".
// В кластерной версии SAGA-менеджер хранит все транзакции в sync.Map
// (sm.sagas). Реплики и завершённые SAGA не удаляются — sync.Map
// накапливает их в течение жизни процесса. Это позволяет отдавать
// полный список без обращения к диску.
func (sm *SagaManager) GetAllSagas() []*SagaTransaction {
result := make([]*SagaTransaction, 0)
sm.sagas.Range(func(key, value interface{}) bool {
saga, ok := value.(*SagaTransaction)
if !ok || saga == nil {
return true
}
result = append(result, saga)
return true
})
return result
}
// Stop останавливает Saga-менеджер.
// Реализован, чтобы main.go мог вызвать sagaManager.Stop() единообразно
// как для storage.SagaOrchestrator, так и для cluster.SagaManager.
@@ -1963,7 +1987,6 @@ func (sbd *SplitBrainDetector) IsQuarantined(nodeID string) bool {
}
return false
}
// =============================================================================
// RECOVERY MANAGER - ПЕРЕИМЕНОВАН В ClusterNodeState ДЛЯ ИЗБЕЖАНИЯ КОНФЛИКТА
// =============================================================================
@@ -3134,7 +3157,6 @@ func (lfm *LeaderFallbackManager) Stop() {
close(lfm.stopChan)
lfm.wg.Wait()
}
// =============================================================================
// RAFT CLUSTER STATE
// =============================================================================