1
0
Fork 0
mirror of https://github.com/anyproto/any-sync.git synced 2025-06-08 05:57:03 +09:00

Add spaceIsDeleted checks

This commit is contained in:
mcrakhman 2023-02-20 22:51:00 +01:00 committed by Mikhail Iudin
parent 09387888de
commit 7e946d4313
No known key found for this signature in database
GPG key ID: FAAAA8BAABDFF1C0
9 changed files with 137 additions and 94 deletions

View file

@ -14,6 +14,7 @@ import (
"github.com/anytypeio/any-sync/util/periodicsync"
"go.uber.org/zap"
"strings"
"sync/atomic"
"time"
)
@ -41,12 +42,14 @@ type headSync struct {
diff ldiff.Diff
log logger.CtxLogger
syncer DiffSyncer
spaceIsDeleted *atomic.Bool
syncPeriod int
}
func NewHeadSync(
spaceId string,
spaceIsDeleted *atomic.Bool,
syncPeriod int,
storage spacestorage.SpaceStorage,
peerManager peermanager.PeerManager,
@ -58,7 +61,13 @@ func NewHeadSync(
l := log.With(zap.String("spaceId", spaceId))
factory := spacesyncproto.ClientFactoryFunc(spacesyncproto.NewDRPCSpaceSyncClient)
syncer := newDiffSyncer(spaceId, diff, peerManager, cache, storage, factory, syncStatus, l)
periodicSync := periodicsync.NewPeriodicSync(syncPeriod, time.Minute, syncer.Sync, l)
sync := func(ctx context.Context) (err error) {
if spaceIsDeleted.Load() {
return spacesyncproto.ErrSpaceIsDeleted
}
return syncer.Sync(ctx)
}
periodicSync := periodicsync.NewPeriodicSync(syncPeriod, time.Minute, sync, l)
return &headSync{
spaceId: spaceId,
@ -68,6 +77,7 @@ func NewHeadSync(
diff: diff,
log: log,
syncPeriod: syncPeriod,
spaceIsDeleted: spaceIsDeleted,
}
}
@ -78,6 +88,10 @@ func (d *headSync) Init(objectIds []string, deletionState deletionstate.Deletion
}
func (d *headSync) HandleRangeRequest(ctx context.Context, req *spacesyncproto.HeadSyncRequest) (resp *spacesyncproto.HeadSyncResponse, err error) {
if d.spaceIsDeleted.Load() {
err = spacesyncproto.ErrSpaceIsDeleted
return
}
return HandleRangeRequest(ctx, d.diff, req)
}

View file

@ -9,6 +9,7 @@ import (
"github.com/anytypeio/any-sync/commonspace/peermanager"
"github.com/anytypeio/any-sync/commonspace/spacesyncproto"
"go.uber.org/zap"
"sync/atomic"
"time"
)
@ -31,15 +32,18 @@ type objectSync struct {
syncCtx context.Context
cancelSync context.CancelFunc
spaceIsDeleted *atomic.Bool
}
func NewObjectSync(
spaceId string,
spaceIsDeleted *atomic.Bool,
peerManager peermanager.PeerManager,
objectGetter syncobjectgetter.SyncObjectGetter) ObjectSync {
syncCtx, cancel := context.WithCancel(context.Background())
os := newObjectSync(
spaceId,
spaceIsDeleted,
objectGetter,
syncCtx,
cancel)
@ -50,6 +54,7 @@ func NewObjectSync(
func newObjectSync(
spaceId string,
spaceIsDeleted *atomic.Bool,
objectGetter syncobjectgetter.SyncObjectGetter,
syncCtx context.Context,
cancel context.CancelFunc,
@ -59,16 +64,14 @@ func newObjectSync(
spaceId: spaceId,
syncCtx: syncCtx,
cancelSync: cancel,
//actionQueue: NewDefaultActionQueue(),
spaceIsDeleted: spaceIsDeleted,
}
}
func (s *objectSync) Init() {
//s.actionQueue.Run()
}
func (s *objectSync) Close() (err error) {
//s.actionQueue.Close()
s.cancelSync()
return
}
@ -82,6 +85,9 @@ func (s *objectSync) HandleMessage(ctx context.Context, senderId string, message
}
func (s *objectSync) handleMessage(ctx context.Context, senderId string, msg *spacesyncproto.ObjectSyncMessage) (err error) {
if s.spaceIsDeleted.Load() {
return spacesyncproto.ErrSpaceIsDeleted
}
log.With(zap.String("objectId", msg.ObjectId), zap.String("replyId", msg.ReplyId)).DebugCtx(ctx, "handling message")
obj, err := s.objectGetter.GetObject(ctx, msg.ObjectId)
if err != nil {

View file

@ -20,14 +20,16 @@ type DeletionManager interface {
func newDeletionManager(
spaceId string,
deletionInterval time.Duration,
deletionState deletionstate.DeletionState,
provider SpaceIdsProvider,
deletionInterval time.Duration) DeletionManager {
onSpaceDelete func()) DeletionManager {
return &deletionManager{
spaceId: spaceId,
deletionState: deletionState,
provider: provider,
deletionInterval: deletionInterval,
onSpaceDelete: onSpaceDelete,
}
}
@ -37,6 +39,7 @@ type deletionManager struct {
treeGetter treegetter.TreeGetter
deletionInterval time.Duration
spaceId string
onSpaceDelete func()
}
func (d *deletionManager) UpdateState(state *State) (err error) {
@ -44,12 +47,15 @@ func (d *deletionManager) UpdateState(state *State) (err error) {
if err != nil {
log.Warn("failed to add deleted ids to deletion state")
}
if !state.SpaceDeletionDate.IsZero() && state.SpaceDeletionDate.Add(d.deletionInterval).Before(time.Now()) {
err = d.deletionState.Add(d.provider.AllIds())
if !state.SpaceDeletionDate.IsZero() {
spaceDeleter, ok := d.treeGetter.(SpaceDeleter)
if ok {
spaceDeleter.DeleteSpace(d.spaceId)
}
if state.SpaceDeletionDate.Add(d.deletionInterval).Before(time.Now()) {
err = d.deletionState.Add(d.provider.AllIds())
d.onSpaceDelete()
}
}
return
}

View file

@ -41,6 +41,7 @@ type Deps struct {
Store spacestorage.SpaceStorage
DeletionState deletionstate.DeletionState
Provider SpaceIdsProvider
OnSpaceDelete func()
// testing dependencies
builder StateBuilder
del Deleter
@ -73,7 +74,7 @@ func NewSettingsObject(deps Deps, spaceId string) (obj SettingsObject) {
deleter = deps.del
}
if deps.delManager == nil {
deletionManager = newDeletionManager(spaceId, deps.DeletionState, deps.Provider, spaceDeletionInterval)
deletionManager = newDeletionManager(spaceId, spaceDeletionInterval, deps.DeletionState, deps.Provider, deps.OnSpaceDelete)
} else {
deletionManager = deps.delManager
}

View file

@ -128,6 +128,7 @@ type space struct {
handleQueue multiqueue.MultiQueue[HandleMessage]
isClosed *atomic.Bool
isDeleted *atomic.Bool
treesUsed *atomic.Int32
}
@ -209,6 +210,7 @@ func (s *space) Init(ctx context.Context) (err error) {
Store: s.storage,
DeletionState: deletionState,
Provider: s.headSync,
OnSpaceDelete: s.onSpaceDelete,
}
s.settingsObject = settings.NewSettingsObject(deps, s.id)
s.objectSync.Init()
@ -409,6 +411,10 @@ func (s *space) onObjectClose(id string) {
_ = s.handleQueue.CloseThread(id)
}
func (s *space) onSpaceDelete() {
s.isDeleted.Swap(true)
}
func (s *space) Close() error {
if s.isClosed.Swap(true) {
log.Warn("call space.Close on closed space", zap.String("id", s.id))

View file

@ -117,7 +117,10 @@ func (s *spaceService) NewSpace(ctx context.Context, id string) (Space, error) {
}
lastConfiguration := s.configurationService.GetLast()
var spaceIsClosed = &atomic.Bool{}
var (
spaceIsClosed = &atomic.Bool{}
spaceIsDeleted = &atomic.Bool{}
)
getter := newCommonGetter(st.Id(), s.treeGetter, spaceIsClosed)
syncStatus := syncstatus.NewNoOpSyncStatus()
// this will work only for clients, not the best solution, but...
@ -131,8 +134,8 @@ func (s *spaceService) NewSpace(ctx context.Context, id string) (Space, error) {
return nil, err
}
headSync := headsync.NewHeadSync(id, s.config.SyncPeriod, st, peerManager, getter, syncStatus, log)
objectSync := objectsync.NewObjectSync(id, peerManager, getter)
headSync := headsync.NewHeadSync(id, spaceIsDeleted, s.config.SyncPeriod, st, peerManager, getter, syncStatus, log)
objectSync := objectsync.NewObjectSync(id, spaceIsDeleted, peerManager, getter)
sp := &space{
id: id,
objectSync: objectSync,
@ -145,6 +148,7 @@ func (s *spaceService) NewSpace(ctx context.Context, id string) (Space, error) {
storage: st,
treesUsed: &atomic.Int32{},
isClosed: spaceIsClosed,
isDeleted: spaceIsDeleted,
}
return sp, nil
}

View file

@ -12,4 +12,5 @@ var (
ErrSpaceMissing = errGroup.Register(errors.New("space is missing"), uint64(ErrCodes_SpaceMissing))
ErrSpaceExists = errGroup.Register(errors.New("space exists"), uint64(ErrCodes_SpaceExists))
ErrSpaceNotInCache = errGroup.Register(errors.New("space not in cache"), uint64(ErrCodes_SpaceNotInCache))
ErrSpaceIsDeleted = errGroup.Register(errors.New("space is deleted"), uint64(ErrCodes_SpaceIsDeleted))
)

View file

@ -8,6 +8,7 @@ enum ErrCodes {
SpaceMissing = 1;
SpaceExists = 2;
SpaceNotInCache = 3;
SpaceIsDeleted = 4;
ErrorOffset = 100;
}

View file

@ -29,6 +29,7 @@ const (
ErrCodes_SpaceMissing ErrCodes = 1
ErrCodes_SpaceExists ErrCodes = 2
ErrCodes_SpaceNotInCache ErrCodes = 3
ErrCodes_SpaceIsDeleted ErrCodes = 4
ErrCodes_ErrorOffset ErrCodes = 100
)
@ -37,6 +38,7 @@ var ErrCodes_name = map[int32]string{
1: "SpaceMissing",
2: "SpaceExists",
3: "SpaceNotInCache",
4: "SpaceIsDeleted",
100: "ErrorOffset",
}
@ -45,6 +47,7 @@ var ErrCodes_value = map[string]int32{
"SpaceMissing": 1,
"SpaceExists": 2,
"SpaceNotInCache": 3,
"SpaceIsDeleted": 4,
"ErrorOffset": 100,
}
@ -1229,70 +1232,71 @@ func init() {
}
var fileDescriptor_80e49f1f4ac27799 = []byte{
// 1007 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x56, 0xcb, 0x6f, 0x1b, 0x45,
0x18, 0xf7, 0x6e, 0x9e, 0xfe, 0xe2, 0x38, 0xdb, 0x69, 0xda, 0x1a, 0x37, 0x72, 0xad, 0x39, 0xa0,
0xa8, 0x48, 0x7d, 0xa4, 0x08, 0xa9, 0x05, 0x0e, 0x6d, 0xe2, 0x52, 0x0b, 0x95, 0x44, 0xe3, 0x56,
0x48, 0x48, 0x1c, 0x26, 0xbb, 0x13, 0x7b, 0x61, 0x3d, 0xb3, 0xec, 0x8c, 0x69, 0x7c, 0xe4, 0xc4,
0x95, 0x33, 0x9c, 0xf8, 0x1f, 0xf8, 0x23, 0x38, 0xf6, 0xc8, 0x11, 0x25, 0xff, 0x08, 0x9a, 0xd9,
0xd9, 0x97, 0xbd, 0xee, 0x81, 0x8b, 0xb3, 0xdf, 0xeb, 0xf7, 0x3d, 0xe7, 0xfb, 0x02, 0x8f, 0x7d,
0x31, 0x9d, 0x0a, 0x2e, 0x63, 0xea, 0xb3, 0x87, 0xe6, 0x57, 0xce, 0xb9, 0x1f, 0x27, 0x42, 0x89,
0x87, 0xe6, 0x57, 0x16, 0xdc, 0x07, 0x86, 0x81, 0x9a, 0x39, 0x03, 0x0f, 0x61, 0xf7, 0x15, 0xa3,
0xc1, 0x68, 0xce, 0x7d, 0x42, 0xf9, 0x98, 0x21, 0x04, 0xeb, 0x17, 0x89, 0x98, 0x76, 0x9c, 0xbe,
0x73, 0xb8, 0x4e, 0xcc, 0x37, 0x6a, 0x83, 0xab, 0x44, 0xc7, 0x35, 0x1c, 0x57, 0x09, 0xb4, 0x0f,
0x1b, 0x51, 0x38, 0x0d, 0x55, 0x67, 0xad, 0xef, 0x1c, 0xee, 0x92, 0x94, 0xc0, 0x97, 0xd0, 0xce,
0xa1, 0x98, 0x9c, 0x45, 0x4a, 0x63, 0x4d, 0xa8, 0x9c, 0x18, 0xac, 0x16, 0x31, 0xdf, 0xe8, 0x0b,
0xd8, 0x66, 0x11, 0x9b, 0x32, 0xae, 0x64, 0xc7, 0xed, 0xaf, 0x1d, 0xee, 0x1c, 0xf5, 0x1f, 0x14,
0xf1, 0x55, 0x01, 0x06, 0xa9, 0x22, 0xc9, 0x2d, 0xb4, 0x67, 0x5f, 0xcc, 0x78, 0xee, 0xd9, 0x10,
0xf8, 0x73, 0xb8, 0x55, 0x6b, 0xa8, 0x03, 0x0f, 0x03, 0xe3, 0xbe, 0x49, 0xdc, 0x30, 0x30, 0x01,
0x31, 0x1a, 0x98, 0x54, 0x9a, 0xc4, 0x7c, 0xe3, 0xef, 0x61, 0xaf, 0x30, 0xfe, 0x69, 0xc6, 0xa4,
0x42, 0x1d, 0xd8, 0x32, 0x21, 0x0d, 0x33, 0xdb, 0x8c, 0x44, 0x8f, 0x60, 0x33, 0xd1, 0x65, 0xca,
0x62, 0xef, 0xd4, 0xc5, 0xae, 0x15, 0x88, 0xd5, 0xc3, 0x5f, 0x81, 0x57, 0x8a, 0x2d, 0x16, 0x5c,
0x32, 0xf4, 0x04, 0xb6, 0x12, 0x13, 0xa7, 0xec, 0x38, 0x06, 0xe6, 0xa3, 0x95, 0x25, 0x20, 0x99,
0x26, 0xfe, 0xc3, 0x81, 0x1b, 0xa7, 0xe7, 0x3f, 0x30, 0x5f, 0x69, 0xe9, 0x6b, 0x26, 0x25, 0x1d,
0xb3, 0x0f, 0x84, 0x7a, 0x00, 0xcd, 0x24, 0xcd, 0x67, 0x98, 0x25, 0x5c, 0x30, 0xb4, 0x5d, 0xc2,
0xe2, 0x68, 0x3e, 0x0c, 0x4c, 0x29, 0x9b, 0x24, 0x23, 0xb5, 0x24, 0xa6, 0xf3, 0x48, 0xd0, 0xa0,
0xb3, 0x6e, 0xfa, 0x96, 0x91, 0xa8, 0x0b, 0xdb, 0xc2, 0x04, 0x30, 0x0c, 0x3a, 0x1b, 0xc6, 0x28,
0xa7, 0xf1, 0x00, 0xbc, 0x91, 0x76, 0x7c, 0x36, 0x93, 0x93, 0xac, 0x8c, 0x8f, 0x0b, 0x24, 0x1d,
0xdb, 0xce, 0xd1, 0x9d, 0x52, 0x9a, 0xa9, 0x76, 0x2a, 0xce, 0x5d, 0xe0, 0x9b, 0x70, 0xa3, 0x04,
0x93, 0x96, 0x0b, 0xe3, 0x1c, 0x3b, 0x8a, 0x32, 0xec, 0x85, 0xce, 0xe2, 0x97, 0xb9, 0xa1, 0xd6,
0xb1, 0x75, 0xfe, 0x1f, 0x01, 0xfc, 0xe2, 0x42, 0xab, 0x2c, 0x41, 0xcf, 0x61, 0xc7, 0xd8, 0xe8,
0xb6, 0xb0, 0xc4, 0xe2, 0xdc, 0x2b, 0xe1, 0x10, 0xfa, 0x6e, 0x54, 0x28, 0x7c, 0x1b, 0xaa, 0xc9,
0x30, 0x20, 0x65, 0x1b, 0xd4, 0x03, 0xa0, 0x7e, 0x64, 0x01, 0x4d, 0x2b, 0x5a, 0xa4, 0xc4, 0x41,
0x18, 0x5a, 0x05, 0x95, 0x37, 0xa4, 0xc2, 0x43, 0x47, 0xb0, 0x6f, 0x20, 0x47, 0x4c, 0xa9, 0x90,
0x8f, 0xe5, 0x59, 0xa5, 0x45, 0xb5, 0x32, 0xf4, 0x19, 0xdc, 0xae, 0xe3, 0xe7, 0xdd, 0x5b, 0x21,
0xc5, 0x7f, 0x3a, 0xb0, 0x53, 0x4a, 0x49, 0xf7, 0x3d, 0x0c, 0x18, 0x57, 0xa1, 0x9a, 0xdb, 0xa7,
0x9c, 0xd3, 0x7a, 0xca, 0x54, 0x38, 0x65, 0x52, 0xd1, 0x69, 0x6c, 0x52, 0x5b, 0x23, 0x05, 0x43,
0x4b, 0x8d, 0x8f, 0x37, 0xf3, 0x98, 0xd9, 0xb4, 0x0a, 0x06, 0xfa, 0x18, 0xda, 0x7a, 0xe8, 0x42,
0x9f, 0xaa, 0x50, 0xf0, 0xaf, 0xd9, 0xdc, 0x64, 0xb3, 0x4e, 0x16, 0xb8, 0xfa, 0xd5, 0x4a, 0xc6,
0xd2, 0xa8, 0x5b, 0xc4, 0x7c, 0xe3, 0x33, 0x68, 0x57, 0x0b, 0x8f, 0xfa, 0xcb, 0x8d, 0x6a, 0x55,
0xfb, 0xa0, 0xa3, 0x09, 0xc7, 0x9c, 0xaa, 0x59, 0xc2, 0x6c, 0x1b, 0x0a, 0x06, 0x3e, 0x81, 0xfd,
0xba, 0x56, 0x9a, 0x77, 0x44, 0xdf, 0x55, 0x50, 0x0b, 0x86, 0x9d, 0x43, 0x37, 0x9f, 0xc3, 0xdf,
0x1d, 0xd8, 0x1f, 0x95, 0xcb, 0x7a, 0x2c, 0xb8, 0xd2, 0xab, 0xe8, 0x4b, 0x68, 0xa5, 0x8f, 0xe5,
0x84, 0x45, 0x4c, 0xb1, 0x9a, 0x81, 0x3c, 0x2d, 0x89, 0x5f, 0x35, 0x48, 0x45, 0x1d, 0x3d, 0xb3,
0xd9, 0x59, 0x6b, 0xd7, 0x58, 0xdf, 0x5e, 0x1c, 0xe7, 0xdc, 0xb8, 0xac, 0xfc, 0x62, 0x0b, 0x36,
0x7e, 0xa6, 0xd1, 0x8c, 0xe1, 0x1e, 0xb4, 0xca, 0x4e, 0x96, 0x1e, 0xd1, 0x27, 0xb6, 0xef, 0x56,
0x5c, 0xe9, 0xad, 0xb3, 0xd0, 0x5b, 0x2c, 0xe0, 0x56, 0x25, 0xd1, 0x11, 0xa7, 0xb1, 0x9c, 0x08,
0xa5, 0xc7, 0x3d, 0x30, 0x00, 0xc1, 0x30, 0x48, 0x17, 0x5c, 0x93, 0x94, 0x38, 0xf9, 0x58, 0x1a,
0x2f, 0xa1, 0xe0, 0x6f, 0x16, 0xe6, 0x67, 0x85, 0x14, 0xff, 0xea, 0x40, 0x2b, 0x73, 0x76, 0x42,
0x15, 0x45, 0x4f, 0x61, 0xcb, 0x4f, 0xab, 0x6b, 0xd7, 0xe8, 0xbd, 0xc5, 0x7a, 0x2c, 0x34, 0x81,
0x64, 0xfa, 0xfa, 0x0a, 0x49, 0x1b, 0xaf, 0xad, 0x65, 0x7f, 0x95, 0x6d, 0x96, 0x17, 0xc9, 0x2d,
0xf0, 0x8f, 0x76, 0xd9, 0x8c, 0x66, 0xe7, 0xd2, 0x4f, 0xc2, 0x58, 0xc7, 0xa9, 0x5f, 0x89, 0x5d,
0xbd, 0x59, 0xd2, 0x39, 0x8d, 0x9e, 0xc1, 0x26, 0xf5, 0xb5, 0x96, 0x71, 0xd6, 0x3e, 0xc2, 0x4b,
0xce, 0x4a, 0x48, 0xcf, 0x8d, 0x26, 0xb1, 0x16, 0xf7, 0x7d, 0xd8, 0x1e, 0x24, 0xc9, 0xb1, 0x08,
0x98, 0x44, 0x6d, 0x80, 0xb7, 0x9c, 0x5d, 0xc6, 0xcc, 0x57, 0x2c, 0xf0, 0x1a, 0xc8, 0xb3, 0xcb,
0xea, 0x75, 0x28, 0x65, 0xc8, 0xc7, 0x9e, 0x83, 0xf6, 0x6c, 0x0b, 0x07, 0x97, 0xa1, 0x54, 0xd2,
0x73, 0xd1, 0x4d, 0xd8, 0x33, 0x8c, 0x6f, 0x84, 0x1a, 0xf2, 0x63, 0xea, 0x4f, 0x98, 0xb7, 0xa6,
0xb5, 0x06, 0x49, 0x22, 0x92, 0xd3, 0x8b, 0x0b, 0xc9, 0x94, 0x17, 0xdc, 0x7f, 0x0a, 0x77, 0x56,
0xc4, 0x81, 0x76, 0xa1, 0x69, 0xb9, 0xe7, 0xcc, 0x6b, 0x68, 0xd3, 0xb7, 0x5c, 0xe6, 0x0c, 0xe7,
0xe8, 0x2f, 0x17, 0x9a, 0xa9, 0xed, 0x9c, 0xfb, 0xe8, 0x18, 0xb6, 0xb3, 0x03, 0x86, 0xba, 0xb5,
0x57, 0xcd, 0xec, 0xef, 0xee, 0xdd, 0xfa, 0x8b, 0x97, 0xee, 0xed, 0x97, 0x16, 0x51, 0x5f, 0x01,
0x74, 0x77, 0x69, 0x67, 0x17, 0x27, 0xa6, 0x7b, 0x50, 0x2f, 0x5c, 0xc2, 0x89, 0xa2, 0x3a, 0x9c,
0xfc, 0x9c, 0xd4, 0xe1, 0x94, 0xee, 0x08, 0x01, 0xaf, 0xb8, 0xbc, 0x23, 0x95, 0x30, 0x3a, 0x45,
0x07, 0x4b, 0x2f, 0xb7, 0x74, 0x96, 0xbb, 0x1f, 0x94, 0x1e, 0x3a, 0x8f, 0x9c, 0x17, 0x9f, 0xfe,
0x7d, 0xd5, 0x73, 0xde, 0x5f, 0xf5, 0x9c, 0x7f, 0xaf, 0x7a, 0xce, 0x6f, 0xd7, 0xbd, 0xc6, 0xfb,
0xeb, 0x5e, 0xe3, 0x9f, 0xeb, 0x5e, 0xe3, 0xbb, 0xee, 0xea, 0x7f, 0xe8, 0xce, 0x37, 0xcd, 0x9f,
0x27, 0xff, 0x05, 0x00, 0x00, 0xff, 0xff, 0x33, 0x0a, 0x59, 0xe5, 0xf5, 0x09, 0x00, 0x00,
// 1021 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x56, 0xcd, 0x6f, 0x1b, 0x45,
0x14, 0xf7, 0x6e, 0xdc, 0x24, 0x7e, 0x71, 0x9c, 0xed, 0x34, 0x6d, 0x8d, 0x1b, 0xb9, 0xd6, 0x1c,
0x50, 0x54, 0xa4, 0x7e, 0xb8, 0x08, 0xa9, 0x05, 0x0e, 0x6d, 0xe2, 0x52, 0x0b, 0x95, 0x44, 0xe3,
0x56, 0x48, 0x48, 0x1c, 0x26, 0xbb, 0x13, 0x7b, 0x61, 0x3d, 0xb3, 0xec, 0x8c, 0x49, 0x7c, 0xe4,
0xc4, 0x95, 0x33, 0x9c, 0xf8, 0x1f, 0xf8, 0x23, 0x38, 0xf6, 0xc8, 0x11, 0x25, 0xff, 0x08, 0x9a,
0xd9, 0xd9, 0x0f, 0xdb, 0xeb, 0x1e, 0xb8, 0x38, 0x3b, 0xef, 0xe3, 0xf7, 0x3e, 0x7e, 0x33, 0xef,
0x05, 0x9e, 0xf8, 0x62, 0x3a, 0x15, 0x5c, 0xc6, 0xd4, 0x67, 0x8f, 0xcc, 0xaf, 0x9c, 0x73, 0x3f,
0x4e, 0x84, 0x12, 0x8f, 0xcc, 0xaf, 0x2c, 0xa4, 0x0f, 0x8d, 0x00, 0x35, 0x72, 0x01, 0x1e, 0xc2,
0xee, 0x6b, 0x46, 0x83, 0xd1, 0x9c, 0xfb, 0x84, 0xf2, 0x31, 0x43, 0x08, 0xea, 0xe7, 0x89, 0x98,
0xb6, 0x9d, 0x9e, 0x73, 0x58, 0x27, 0xe6, 0x1b, 0xb5, 0xc0, 0x55, 0xa2, 0xed, 0x1a, 0x89, 0xab,
0x04, 0xda, 0x87, 0x1b, 0x51, 0x38, 0x0d, 0x55, 0x7b, 0xa3, 0xe7, 0x1c, 0xee, 0x92, 0xf4, 0x80,
0x2f, 0xa1, 0x95, 0x43, 0x31, 0x39, 0x8b, 0x94, 0xc6, 0x9a, 0x50, 0x39, 0x31, 0x58, 0x4d, 0x62,
0xbe, 0xd1, 0x17, 0xb0, 0xcd, 0x22, 0x36, 0x65, 0x5c, 0xc9, 0xb6, 0xdb, 0xdb, 0x38, 0xdc, 0xe9,
0xf7, 0x1e, 0x16, 0xf9, 0x2d, 0x02, 0x0c, 0x52, 0x43, 0x92, 0x7b, 0xe8, 0xc8, 0xbe, 0x98, 0xf1,
0x3c, 0xb2, 0x39, 0xe0, 0xcf, 0xe1, 0x76, 0xa5, 0xa3, 0x4e, 0x3c, 0x0c, 0x4c, 0xf8, 0x06, 0x71,
0xc3, 0xc0, 0x24, 0xc4, 0x68, 0x60, 0x4a, 0x69, 0x10, 0xf3, 0x8d, 0xbf, 0x87, 0xbd, 0xc2, 0xf9,
0xa7, 0x19, 0x93, 0x0a, 0xb5, 0x61, 0xcb, 0xa4, 0x34, 0xcc, 0x7c, 0xb3, 0x23, 0x7a, 0x0c, 0x9b,
0x89, 0x6e, 0x53, 0x96, 0x7b, 0xbb, 0x2a, 0x77, 0x6d, 0x40, 0xac, 0x1d, 0xfe, 0x0a, 0xbc, 0x52,
0x6e, 0xb1, 0xe0, 0x92, 0xa1, 0xa7, 0xb0, 0x95, 0x98, 0x3c, 0x65, 0xdb, 0x31, 0x30, 0x1f, 0xad,
0x6d, 0x01, 0xc9, 0x2c, 0xf1, 0x1f, 0x0e, 0xdc, 0x3c, 0x39, 0xfb, 0x81, 0xf9, 0x4a, 0x6b, 0xdf,
0x30, 0x29, 0xe9, 0x98, 0x7d, 0x20, 0xd5, 0x03, 0x68, 0x24, 0x69, 0x3d, 0xc3, 0xac, 0xe0, 0x42,
0xa0, 0xfd, 0x12, 0x16, 0x47, 0xf3, 0x61, 0x60, 0x5a, 0xd9, 0x20, 0xd9, 0x51, 0x6b, 0x62, 0x3a,
0x8f, 0x04, 0x0d, 0xda, 0x75, 0xc3, 0x5b, 0x76, 0x44, 0x1d, 0xd8, 0x16, 0x26, 0x81, 0x61, 0xd0,
0xbe, 0x61, 0x9c, 0xf2, 0x33, 0x1e, 0x80, 0x37, 0xd2, 0x81, 0x4f, 0x67, 0x72, 0x92, 0xb5, 0xf1,
0x49, 0x81, 0xa4, 0x73, 0xdb, 0xe9, 0xdf, 0x2d, 0x95, 0x99, 0x5a, 0xa7, 0xea, 0x3c, 0x04, 0xbe,
0x05, 0x37, 0x4b, 0x30, 0x69, 0xbb, 0x30, 0xce, 0xb1, 0xa3, 0x28, 0xc3, 0x5e, 0x62, 0x16, 0xbf,
0xca, 0x1d, 0xb5, 0x8d, 0xed, 0xf3, 0xff, 0x48, 0xe0, 0x17, 0x17, 0x9a, 0x65, 0x0d, 0x7a, 0x01,
0x3b, 0xc6, 0x47, 0xd3, 0xc2, 0x12, 0x8b, 0x73, 0xbf, 0x84, 0x43, 0xe8, 0xc5, 0xa8, 0x30, 0xf8,
0x36, 0x54, 0x93, 0x61, 0x40, 0xca, 0x3e, 0xa8, 0x0b, 0x40, 0xfd, 0xc8, 0x02, 0x1a, 0x2a, 0x9a,
0xa4, 0x24, 0x41, 0x18, 0x9a, 0xc5, 0x29, 0x27, 0x64, 0x41, 0x86, 0xfa, 0xb0, 0x6f, 0x20, 0x47,
0x4c, 0xa9, 0x90, 0x8f, 0xe5, 0xe9, 0x02, 0x45, 0x95, 0x3a, 0xf4, 0x19, 0xdc, 0xa9, 0x92, 0xe7,
0xec, 0xad, 0xd1, 0xe2, 0x3f, 0x1d, 0xd8, 0x29, 0x95, 0xa4, 0x79, 0x0f, 0x03, 0xc6, 0x55, 0xa8,
0xe6, 0xf6, 0x29, 0xe7, 0x67, 0x7d, 0xcb, 0x54, 0x38, 0x65, 0x52, 0xd1, 0x69, 0x6c, 0x4a, 0xdb,
0x20, 0x85, 0x40, 0x6b, 0x4d, 0x8c, 0xb7, 0xf3, 0x98, 0xd9, 0xb2, 0x0a, 0x01, 0xfa, 0x18, 0x5a,
0xfa, 0xd2, 0x85, 0x3e, 0x55, 0xa1, 0xe0, 0x5f, 0xb3, 0xb9, 0xa9, 0xa6, 0x4e, 0x96, 0xa4, 0xfa,
0xd5, 0x4a, 0xc6, 0xd2, 0xac, 0x9b, 0xc4, 0x7c, 0xe3, 0x53, 0x68, 0x2d, 0x36, 0x1e, 0xf5, 0x56,
0x89, 0x6a, 0x2e, 0xf2, 0xa0, 0xb3, 0x09, 0xc7, 0x9c, 0xaa, 0x59, 0xc2, 0x2c, 0x0d, 0x85, 0x00,
0x1f, 0xc3, 0x7e, 0x15, 0x95, 0xe6, 0x1d, 0xd1, 0x8b, 0x05, 0xd4, 0x42, 0x60, 0xef, 0xa1, 0x9b,
0xdf, 0xc3, 0xdf, 0x1d, 0xd8, 0x1f, 0x95, 0xdb, 0x7a, 0x24, 0xb8, 0xd2, 0xa3, 0xe8, 0x4b, 0x68,
0xa6, 0x8f, 0xe5, 0x98, 0x45, 0x4c, 0xb1, 0x8a, 0x0b, 0x79, 0x52, 0x52, 0xbf, 0xae, 0x91, 0x05,
0x73, 0xf4, 0xdc, 0x56, 0x67, 0xbd, 0x5d, 0xe3, 0x7d, 0x67, 0xf9, 0x3a, 0xe7, 0xce, 0x65, 0xe3,
0x97, 0x5b, 0x70, 0xe3, 0x67, 0x1a, 0xcd, 0x18, 0xee, 0x42, 0xb3, 0x1c, 0x64, 0xe5, 0x11, 0x7d,
0x62, 0x79, 0xb7, 0xea, 0x05, 0x6e, 0x9d, 0x25, 0x6e, 0xb1, 0x80, 0xdb, 0x0b, 0x85, 0x8e, 0x38,
0x8d, 0xe5, 0x44, 0x28, 0x7d, 0xdd, 0x03, 0x03, 0x10, 0x0c, 0x83, 0x74, 0xc0, 0x35, 0x48, 0x49,
0x92, 0x5f, 0x4b, 0x13, 0x25, 0x14, 0xfc, 0xed, 0xd2, 0xfd, 0x59, 0xa3, 0xc5, 0xbf, 0x3a, 0xd0,
0xcc, 0x82, 0x1d, 0x53, 0x45, 0xd1, 0x33, 0xd8, 0xf2, 0xd3, 0xee, 0xda, 0x31, 0x7a, 0x7f, 0xb9,
0x1f, 0x4b, 0x24, 0x90, 0xcc, 0x5e, 0x6f, 0x21, 0x69, 0xf3, 0xb5, 0xbd, 0xec, 0xad, 0xf3, 0xcd,
0xea, 0x22, 0xb9, 0x07, 0xfe, 0xd1, 0x0e, 0x9b, 0xd1, 0xec, 0x4c, 0xfa, 0x49, 0x18, 0xeb, 0x3c,
0xf5, 0x2b, 0xb1, 0xa3, 0x37, 0x2b, 0x3a, 0x3f, 0xa3, 0xe7, 0xb0, 0x49, 0x7d, 0x6d, 0x65, 0x82,
0xb5, 0xfa, 0x78, 0x25, 0x58, 0x09, 0xe9, 0x85, 0xb1, 0x24, 0xd6, 0xe3, 0xc1, 0x05, 0x6c, 0x0f,
0x92, 0xe4, 0x48, 0x04, 0x4c, 0xa2, 0x16, 0xc0, 0x3b, 0xce, 0x2e, 0x63, 0xe6, 0x2b, 0x16, 0x78,
0x35, 0xe4, 0xd9, 0x61, 0xf5, 0x26, 0x94, 0x32, 0xe4, 0x63, 0xcf, 0x41, 0x7b, 0x96, 0xc2, 0xc1,
0x65, 0x28, 0x95, 0xf4, 0x5c, 0x74, 0x0b, 0xf6, 0x8c, 0xe0, 0x1b, 0xa1, 0x86, 0xfc, 0x88, 0xfa,
0x13, 0xe6, 0x6d, 0x20, 0x04, 0x2d, 0x23, 0x1c, 0xca, 0x94, 0xea, 0xc0, 0xab, 0x6b, 0xcf, 0x41,
0x92, 0x88, 0xe4, 0xe4, 0xfc, 0x5c, 0x32, 0xe5, 0x05, 0x0f, 0x9e, 0xc1, 0xdd, 0x35, 0xb9, 0xa1,
0x5d, 0x68, 0x58, 0xe9, 0x19, 0xf3, 0x6a, 0xda, 0xf5, 0x1d, 0x97, 0xb9, 0xc0, 0xe9, 0xff, 0xe5,
0x42, 0x23, 0xf5, 0x9d, 0x73, 0x1f, 0x1d, 0xc1, 0x76, 0xb6, 0xd4, 0x50, 0xa7, 0x72, 0xd3, 0x99,
0x99, 0xde, 0xb9, 0x57, 0xbd, 0x05, 0xd3, 0x59, 0xfe, 0xca, 0x22, 0xea, 0xcd, 0x80, 0xee, 0xad,
0xcc, 0xf1, 0x62, 0xed, 0x74, 0x0e, 0xaa, 0x95, 0x2b, 0x38, 0x51, 0x54, 0x85, 0x93, 0xaf, 0x98,
0x2a, 0x9c, 0xd2, 0x6e, 0x21, 0xe0, 0x15, 0xdb, 0x78, 0xa4, 0x12, 0x46, 0xa7, 0xe8, 0x60, 0xe5,
0x35, 0x97, 0x56, 0x75, 0xe7, 0x83, 0xda, 0x43, 0xe7, 0xb1, 0xf3, 0xf2, 0xd3, 0xbf, 0xaf, 0xba,
0xce, 0xfb, 0xab, 0xae, 0xf3, 0xef, 0x55, 0xd7, 0xf9, 0xed, 0xba, 0x5b, 0x7b, 0x7f, 0xdd, 0xad,
0xfd, 0x73, 0xdd, 0xad, 0x7d, 0xd7, 0x59, 0xff, 0x4f, 0xde, 0xd9, 0xa6, 0xf9, 0xf3, 0xf4, 0xbf,
0x00, 0x00, 0x00, 0xff, 0xff, 0xd5, 0xd9, 0x0b, 0xc0, 0x09, 0x0a, 0x00, 0x00,
}
func (m *HeadSyncRange) Marshal() (dAtA []byte, err error) {