(closer *z.Closer)
| 843 | } |
| 844 | |
| 845 | func (n *node) snapshotPeriodically(closer *z.Closer) { |
| 846 | defer closer.Done() |
| 847 | ticker := time.Tick(time.Minute) |
| 848 | |
| 849 | for { |
| 850 | select { |
| 851 | case <-ticker: |
| 852 | if err := n.calculateAndProposeSnapshot(); err != nil { |
| 853 | glog.Errorf("While calculateAndProposeSnapshot: %v", err) |
| 854 | } |
| 855 | |
| 856 | case <-closer.HasBeenClosed(): |
| 857 | return |
| 858 | } |
| 859 | } |
| 860 | } |
| 861 | |
| 862 | // calculateAndProposeSnapshot works by tracking Alpha group leaders' checkpoint timestamps. It then |
| 863 | // finds the minimum checkpoint ts across these groups, say Tmin. And then, iterates over Zero Raft |
no test coverage detected