wal-g

Форк
0
/
backup_file_description.go 
50 строк · 1.3 Кб
1
package internal
2

3
import (
4
	"sort"
5
	"time"
6
)
7

8
const MaxCorruptBlocksInFileDesc int = 10
9

10
type BackupFileDescription struct {
11
	IsIncremented bool // should never be both incremented and Skipped
12
	IsSkipped     bool
13
	MTime         time.Time
14
	CorruptBlocks *CorruptBlocksInfo `json:",omitempty"`
15
	UpdatesCount  uint64
16
}
17

18
func NewBackupFileDescription(isIncremented, isSkipped bool, modTime time.Time) *BackupFileDescription {
19
	return &BackupFileDescription{isIncremented, isSkipped, modTime, nil, 0}
20
}
21

22
type CorruptBlocksInfo struct {
23
	CorruptBlocksCount int
24
	SomeCorruptBlocks  []uint32
25
}
26

27
func (desc *BackupFileDescription) SetCorruptBlocks(corruptBlockNumbers []uint32, storeAllBlocks bool) {
28
	if len(corruptBlockNumbers) == 0 {
29
		return
30
	}
31
	sort.Slice(corruptBlockNumbers, func(i, j int) bool {
32
		return corruptBlockNumbers[i] < corruptBlockNumbers[j]
33
	})
34

35
	corruptBlocksCount := len(corruptBlockNumbers)
36
	// write no more than MaxCorruptBlocksInFileDesc
37
	someCorruptBlocks := make([]uint32, 0)
38
	for idx, blockNo := range corruptBlockNumbers {
39
		if !storeAllBlocks && idx >= MaxCorruptBlocksInFileDesc {
40
			break
41
		}
42
		someCorruptBlocks = append(someCorruptBlocks, blockNo)
43
	}
44
	desc.CorruptBlocks = &CorruptBlocksInfo{
45
		CorruptBlocksCount: corruptBlocksCount,
46
		SomeCorruptBlocks:  someCorruptBlocks,
47
	}
48
}
49

50
type BackupFileList map[string]BackupFileDescription
51

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.