Update internal/cluster/raft_coordinator.go
This commit is contained in:
1 parent
f191e5b328
commit
2541233e40
1 file changed
+26
-4
@@ -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
|
||||
// =============================================================================
|
||||
@@ -4405,4 +4427,4 @@ type ClusterStatus struct {
|
||||
}
|
||||
|
||||
// Гарантируем, что runtime импортирован для кроссплатформенности
|
||||
var _ = runtime.GOOS
|
||||
var _ = runtime.GOOS
|
||||
Reference in new issue
Block a user