Add some deletion logic

This commit is contained in:
mcrakhman 2023-02-20 21:43:14 +01:00 committed by Mikhail Iudin
parent 04512cee0d
commit 09387888de
No known key found for this signature in database
GPG Key ID: FAAAA8BAABDFF1C0
7 changed files with 545 additions and 98 deletions

View File

@ -0,0 +1,55 @@
package settings
import (
"github.com/anytypeio/any-sync/commonspace/object/treegetter"
"github.com/anytypeio/any-sync/commonspace/settings/deletionstate"
"time"
)
type SpaceIdsProvider interface {
AllIds() []string
}
type SpaceDeleter interface {
DeleteSpace(spaceId string)
}
type DeletionManager interface {
UpdateState(state *State) (err error)
}
func newDeletionManager(
spaceId string,
deletionState deletionstate.DeletionState,
provider SpaceIdsProvider,
deletionInterval time.Duration) DeletionManager {
return &deletionManager{
spaceId: spaceId,
deletionState: deletionState,
provider: provider,
deletionInterval: deletionInterval,
}
}
type deletionManager struct {
deletionState deletionstate.DeletionState
provider SpaceIdsProvider
treeGetter treegetter.TreeGetter
deletionInterval time.Duration
spaceId string
}
func (d *deletionManager) UpdateState(state *State) (err error) {
err = d.deletionState.Add(state.DeletedIds)
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())
spaceDeleter, ok := d.treeGetter.(SpaceDeleter)
if ok {
spaceDeleter.DeleteSpace(d.spaceId)
}
}
return
}

View File

@ -13,10 +13,13 @@ import (
"github.com/anytypeio/any-sync/commonspace/settings/deletionstate"
spacestorage "github.com/anytypeio/any-sync/commonspace/spacestorage"
"go.uber.org/zap"
"time"
)
var log = logger.NewNamed("common.commonspace.settings")
const spaceDeletionInterval = time.Hour * 24 * 7
type SettingsObject interface {
synctree.SyncTree
Init(ctx context.Context) (err error)
@ -37,9 +40,11 @@ type Deps struct {
TreeGetter treegetter.TreeGetter
Store spacestorage.SpaceStorage
DeletionState deletionstate.DeletionState
Provider SpaceIdsProvider
// testing dependencies
prov DeletedIdsProvider
builder StateBuilder
del Deleter
delManager DeletionManager
}
type settingsObject struct {
@ -48,21 +53,35 @@ type settingsObject struct {
spaceId string
treeGetter treegetter.TreeGetter
store spacestorage.SpaceStorage
prov DeletedIdsProvider
builder StateBuilder
buildFunc BuildTreeFunc
loop *deleteLoop
deletionState deletionstate.DeletionState
lastChangeId string
deletionManager DeletionManager
}
func NewSettingsObject(deps Deps, spaceId string) (obj SettingsObject) {
var deleter Deleter
var (
deleter Deleter
deletionManager DeletionManager
builder StateBuilder
)
if deps.del == nil {
deleter = newDeleter(deps.Store, deps.DeletionState, deps.TreeGetter)
} else {
deleter = deps.del
}
if deps.delManager == nil {
deletionManager = newDeletionManager(spaceId, deps.DeletionState, deps.Provider, spaceDeletionInterval)
} else {
deletionManager = deps.delManager
}
if deps.builder == nil {
builder = newStateBuilder()
} else {
builder = deps.builder
}
loop := newDeleteLoop(func() {
deleter.Delete()
@ -79,41 +98,33 @@ func NewSettingsObject(deps Deps, spaceId string) (obj SettingsObject) {
treeGetter: deps.TreeGetter,
store: deps.Store,
buildFunc: deps.BuildFunc,
builder: builder,
deletionManager: deletionManager,
}
// this is needed mainly for testing
if deps.prov == nil {
s.prov = &provider{}
} else {
s.prov = deps.prov
}
obj = s
return
}
func (s *settingsObject) updateIds(tr objecttree.ObjectTree, lastChangeId string) {
s.lastChangeId = lastChangeId
ids, lastId, err := s.prov.ProvideIds(tr, s.lastChangeId)
func (s *settingsObject) updateIds(tr objecttree.ObjectTree, isUpdate bool) {
state, err := s.builder.Build(tr, isUpdate)
if err != nil {
log.With(zap.Strings("ids", ids), zap.Error(err)).Error("failed to update state")
log.Error("failed to build state", zap.Error(err))
return
}
s.lastChangeId = lastId
if err = s.deletionState.Add(ids); err != nil {
log.With(zap.Strings("ids", ids), zap.Error(err)).Error("failed to queue ids to delete")
if err = s.deletionManager.UpdateState(state); err != nil {
log.Error("failed to update state", zap.Error(err))
}
}
// Update is called as part of UpdateListener interface
func (s *settingsObject) Update(tr objecttree.ObjectTree) {
s.updateIds(tr, s.lastChangeId)
s.updateIds(tr, true)
}
// Rebuild is called as part of UpdateListener interface (including when the object is built for the first time, e.g. on Init call)
func (s *settingsObject) Rebuild(tr objecttree.ObjectTree) {
// at initial build "s" may not contain the object tree, so it is safer to provide it from the function parameter
s.updateIds(tr, "")
s.updateIds(tr, false)
}
func (s *settingsObject) Init(ctx context.Context) (err error) {
@ -133,6 +144,14 @@ func (s *settingsObject) Close() error {
return s.SyncTree.Close()
}
func (s *settingsObject) DeleteAccount() (err error) {
return nil
}
func (s *settingsObject) RestoreAccount() (err error) {
return nil
}
func (s *settingsObject) DeleteObject(id string) (err error) {
s.Lock()
defer s.Unlock()

View File

@ -0,0 +1,9 @@
package settings
import "time"
type State struct {
DeletedIds []string
SpaceDeletionDate time.Time
LastIteratedId string
}

View File

@ -0,0 +1,85 @@
package settings
import (
"github.com/anytypeio/any-sync/commonspace/object/tree/objecttree"
"github.com/anytypeio/any-sync/commonspace/spacesyncproto"
"github.com/gogo/protobuf/proto"
"time"
)
type StateBuilder interface {
Build(tree objecttree.ObjectTree, isUpdate bool) (*State, error)
}
func newStateBuilder() StateBuilder {
return &stateBuilder{}
}
type stateBuilder struct {
state *State
}
func (s *stateBuilder) Build(tr objecttree.ObjectTree, isUpdate bool) (state *State, err error) {
state = s.state
defer func() {
if err == nil {
s.state = state
}
}()
if !isUpdate || state == nil {
state = &State{}
}
var (
rootId = tr.Root().Id
startId = state.LastIteratedId
)
process := func(change *objecttree.Change) bool {
state.LastIteratedId = change.Id
state = s.processChange(change, rootId, startId, state)
return true
}
convert := func(decrypted []byte) (res any, err error) {
deleteChange := &spacesyncproto.SettingsData{}
err = proto.Unmarshal(decrypted, deleteChange)
if err != nil {
return nil, err
}
return deleteChange, nil
}
if startId == "" {
startId = rootId
}
err = tr.IterateFrom(state.LastIteratedId, convert, process)
return
}
func (s *stateBuilder) processChange(change *objecttree.Change, rootId, startId string, state *State) *State {
// ignoring root change which has empty model or startId change
if change.Model == nil || (change.Id == startId && startId != "") {
return state
}
deleteChange := change.Model.(*spacesyncproto.SettingsData)
// getting data from snapshot if we start from it
if change.Id == rootId {
state = &State{
DeletedIds: deleteChange.Snapshot.DeletedIds,
SpaceDeletionDate: time.Unix(0, deleteChange.Snapshot.SpaceDeletionTimestamp),
LastIteratedId: rootId,
}
return state
}
// otherwise getting data from content
for _, cnt := range deleteChange.Content {
switch {
case cnt.GetObjectDelete() != nil:
state.DeletedIds = append(state.DeletedIds, cnt.GetObjectDelete().GetId())
case cnt.GetSpaceDelete() != nil:
state.SpaceDeletionDate = time.Unix(0, cnt.GetSpaceDelete().GetTimestamp())
}
}
return state
}

View File

@ -208,6 +208,7 @@ func (s *space) Init(ctx context.Context) (err error) {
TreeGetter: s.cache,
Store: s.storage,
DeletionState: deletionState,
Provider: s.headSync,
}
s.settingsObject = settings.NewSettingsObject(deps, s.id)
s.objectSync.Init()

View File

@ -60,8 +60,6 @@ message ObjectSyncMessage {
string replyId = 3;
bytes payload = 4;
string objectId = 5;
// string identity = 5;
// string peerSignature = 6;
}
// SpacePushRequest is a request to add space on a node containing only one acl record
@ -116,6 +114,7 @@ message RawSpaceHeaderWithId {
message SpaceSettingsContent {
oneof value {
ObjectDelete objectDelete = 1;
SpaceDelete spaceDelete = 2;
}
}
@ -124,9 +123,15 @@ message ObjectDelete {
string id = 1;
}
// SpaceDelete is a message containing timestamp when space was deleted
message SpaceDelete {
int64 timestamp = 1;
}
// SpaceSettingsSnapshot contains all the deleted ids in a snapshot
message SpaceSettingsSnapshot {
repeated string deletedIds = 1;
int64 spaceDeletionTimestamp = 2;
}
// SettingsData contains ObjectTree change payload

View File

@ -869,6 +869,7 @@ type SpaceSettingsContent struct {
// Types that are valid to be assigned to Value:
//
// *SpaceSettingsContent_ObjectDelete
// *SpaceSettingsContent_SpaceDelete
Value isSpaceSettingsContent_Value `protobuf_oneof:"value"`
}
@ -914,8 +915,12 @@ type isSpaceSettingsContent_Value interface {
type SpaceSettingsContent_ObjectDelete struct {
ObjectDelete *ObjectDelete `protobuf:"bytes,1,opt,name=objectDelete,proto3,oneof" json:"objectDelete,omitempty"`
}
type SpaceSettingsContent_SpaceDelete struct {
SpaceDelete *SpaceDelete `protobuf:"bytes,2,opt,name=spaceDelete,proto3,oneof" json:"spaceDelete,omitempty"`
}
func (*SpaceSettingsContent_ObjectDelete) isSpaceSettingsContent_Value() {}
func (*SpaceSettingsContent_SpaceDelete) isSpaceSettingsContent_Value() {}
func (m *SpaceSettingsContent) GetValue() isSpaceSettingsContent_Value {
if m != nil {
@ -931,10 +936,18 @@ func (m *SpaceSettingsContent) GetObjectDelete() *ObjectDelete {
return nil
}
func (m *SpaceSettingsContent) GetSpaceDelete() *SpaceDelete {
if x, ok := m.GetValue().(*SpaceSettingsContent_SpaceDelete); ok {
return x.SpaceDelete
}
return nil
}
// XXX_OneofWrappers is for the internal use of the proto package.
func (*SpaceSettingsContent) XXX_OneofWrappers() []interface{} {
return []interface{}{
(*SpaceSettingsContent_ObjectDelete)(nil),
(*SpaceSettingsContent_SpaceDelete)(nil),
}
}
@ -983,16 +996,62 @@ func (m *ObjectDelete) GetId() string {
return ""
}
// SpaceDelete is a message containing timestamp when space was deleted
type SpaceDelete struct {
Timestamp int64 `protobuf:"varint,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"`
}
func (m *SpaceDelete) Reset() { *m = SpaceDelete{} }
func (m *SpaceDelete) String() string { return proto.CompactTextString(m) }
func (*SpaceDelete) ProtoMessage() {}
func (*SpaceDelete) Descriptor() ([]byte, []int) {
return fileDescriptor_80e49f1f4ac27799, []int{16}
}
func (m *SpaceDelete) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
}
func (m *SpaceDelete) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
if deterministic {
return xxx_messageInfo_SpaceDelete.Marshal(b, m, deterministic)
} else {
b = b[:cap(b)]
n, err := m.MarshalToSizedBuffer(b)
if err != nil {
return nil, err
}
return b[:n], nil
}
}
func (m *SpaceDelete) XXX_Merge(src proto.Message) {
xxx_messageInfo_SpaceDelete.Merge(m, src)
}
func (m *SpaceDelete) XXX_Size() int {
return m.Size()
}
func (m *SpaceDelete) XXX_DiscardUnknown() {
xxx_messageInfo_SpaceDelete.DiscardUnknown(m)
}
var xxx_messageInfo_SpaceDelete proto.InternalMessageInfo
func (m *SpaceDelete) GetTimestamp() int64 {
if m != nil {
return m.Timestamp
}
return 0
}
// SpaceSettingsSnapshot contains all the deleted ids in a snapshot
type SpaceSettingsSnapshot struct {
DeletedIds []string `protobuf:"bytes,1,rep,name=deletedIds,proto3" json:"deletedIds,omitempty"`
SpaceDeletionTimestamp int64 `protobuf:"varint,2,opt,name=spaceDeletionTimestamp,proto3" json:"spaceDeletionTimestamp,omitempty"`
}
func (m *SpaceSettingsSnapshot) Reset() { *m = SpaceSettingsSnapshot{} }
func (m *SpaceSettingsSnapshot) String() string { return proto.CompactTextString(m) }
func (*SpaceSettingsSnapshot) ProtoMessage() {}
func (*SpaceSettingsSnapshot) Descriptor() ([]byte, []int) {
return fileDescriptor_80e49f1f4ac27799, []int{16}
return fileDescriptor_80e49f1f4ac27799, []int{17}
}
func (m *SpaceSettingsSnapshot) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@ -1028,6 +1087,13 @@ func (m *SpaceSettingsSnapshot) GetDeletedIds() []string {
return nil
}
func (m *SpaceSettingsSnapshot) GetSpaceDeletionTimestamp() int64 {
if m != nil {
return m.SpaceDeletionTimestamp
}
return 0
}
// SettingsData contains ObjectTree change payload
type SettingsData struct {
Content []*SpaceSettingsContent `protobuf:"bytes,1,rep,name=content,proto3" json:"content,omitempty"`
@ -1038,7 +1104,7 @@ func (m *SettingsData) Reset() { *m = SettingsData{} }
func (m *SettingsData) String() string { return proto.CompactTextString(m) }
func (*SettingsData) ProtoMessage() {}
func (*SettingsData) Descriptor() ([]byte, []int) {
return fileDescriptor_80e49f1f4ac27799, []int{17}
return fileDescriptor_80e49f1f4ac27799, []int{18}
}
func (m *SettingsData) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@ -1090,7 +1156,7 @@ func (m *SpaceSubscription) Reset() { *m = SpaceSubscription{} }
func (m *SpaceSubscription) String() string { return proto.CompactTextString(m) }
func (*SpaceSubscription) ProtoMessage() {}
func (*SpaceSubscription) Descriptor() ([]byte, []int) {
return fileDescriptor_80e49f1f4ac27799, []int{18}
return fileDescriptor_80e49f1f4ac27799, []int{19}
}
func (m *SpaceSubscription) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@ -1152,6 +1218,7 @@ func init() {
proto.RegisterType((*RawSpaceHeaderWithId)(nil), "spacesync.RawSpaceHeaderWithId")
proto.RegisterType((*SpaceSettingsContent)(nil), "spacesync.SpaceSettingsContent")
proto.RegisterType((*ObjectDelete)(nil), "spacesync.ObjectDelete")
proto.RegisterType((*SpaceDelete)(nil), "spacesync.SpaceDelete")
proto.RegisterType((*SpaceSettingsSnapshot)(nil), "spacesync.SpaceSettingsSnapshot")
proto.RegisterType((*SettingsData)(nil), "spacesync.SettingsData")
proto.RegisterType((*SpaceSubscription)(nil), "spacesync.SpaceSubscription")
@ -1162,68 +1229,70 @@ func init() {
}
var fileDescriptor_80e49f1f4ac27799 = []byte{
// 971 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x56, 0x4b, 0x6f, 0xdb, 0xc6,
0x13, 0x17, 0xe5, 0xa7, 0xc6, 0xb4, 0xcc, 0x6c, 0x9c, 0x7f, 0xf8, 0x57, 0x0c, 0x45, 0xd8, 0x43,
0x61, 0xe4, 0x90, 0x87, 0x52, 0xb4, 0x48, 0x1f, 0x87, 0xc4, 0x56, 0x1a, 0xa1, 0x48, 0x6d, 0xac,
0x1a, 0x14, 0x28, 0xd0, 0x02, 0x6b, 0x72, 0x2c, 0xb1, 0xa5, 0x96, 0x2c, 0x77, 0xd5, 0x58, 0xc7,
0x9e, 0x7a, 0xed, 0xbd, 0xa7, 0x7e, 0x87, 0x7e, 0x88, 0x1e, 0x73, 0xec, 0xb1, 0xb0, 0xbf, 0x48,
0xb1, 0xcb, 0xb7, 0x45, 0xe7, 0xd0, 0x8b, 0xcc, 0x9d, 0xc7, 0x6f, 0x7e, 0x33, 0xb3, 0x33, 0x6b,
0x78, 0xe2, 0x45, 0xf3, 0x79, 0x24, 0x64, 0xcc, 0x3d, 0x7c, 0x64, 0x7e, 0xe5, 0x52, 0x78, 0x71,
0x12, 0xa9, 0xe8, 0x91, 0xf9, 0x95, 0xa5, 0xf4, 0xa1, 0x11, 0x90, 0x4e, 0x21, 0xa0, 0x63, 0xd8,
0x7d, 0x85, 0xdc, 0x9f, 0x2c, 0x85, 0xc7, 0xb8, 0x98, 0x22, 0x21, 0xb0, 0x7e, 0x9e, 0x44, 0x73,
0xd7, 0x1a, 0x58, 0x87, 0xeb, 0xcc, 0x7c, 0x93, 0x2e, 0xb4, 0x55, 0xe4, 0xb6, 0x8d, 0xa4, 0xad,
0x22, 0xb2, 0x0f, 0x1b, 0x61, 0x30, 0x0f, 0x94, 0xbb, 0x36, 0xb0, 0x0e, 0x77, 0x59, 0x7a, 0xa0,
0x17, 0xd0, 0x2d, 0xa0, 0x50, 0x2e, 0x42, 0xa5, 0xb1, 0x66, 0x5c, 0xce, 0x0c, 0x96, 0xcd, 0xcc,
0x37, 0xf9, 0x0c, 0xb6, 0x31, 0xc4, 0x39, 0x0a, 0x25, 0xdd, 0xf6, 0x60, 0xed, 0x70, 0x67, 0x38,
0x78, 0x58, 0xf2, 0xab, 0x03, 0x8c, 0x52, 0x43, 0x56, 0x78, 0xe8, 0xc8, 0x5e, 0xb4, 0x10, 0x45,
0x64, 0x73, 0xa0, 0x9f, 0xc2, 0x9d, 0x46, 0x47, 0x4d, 0x3c, 0xf0, 0x4d, 0xf8, 0x0e, 0x6b, 0x07,
0xbe, 0x21, 0x84, 0xdc, 0x37, 0xa9, 0x74, 0x98, 0xf9, 0xa6, 0xdf, 0xc1, 0x5e, 0xe9, 0xfc, 0xd3,
0x02, 0xa5, 0x22, 0x2e, 0x6c, 0x19, 0x4a, 0xe3, 0xdc, 0x37, 0x3f, 0x92, 0xc7, 0xb0, 0x99, 0xe8,
0x32, 0xe5, 0xdc, 0xdd, 0x26, 0xee, 0xda, 0x80, 0x65, 0x76, 0xf4, 0x0b, 0x70, 0x2a, 0xdc, 0xe2,
0x48, 0x48, 0x24, 0x4f, 0x61, 0x2b, 0x31, 0x3c, 0xa5, 0x6b, 0x19, 0x98, 0xff, 0xdf, 0x58, 0x02,
0x96, 0x5b, 0xd2, 0xdf, 0x2d, 0xb8, 0x75, 0x72, 0xf6, 0x03, 0x7a, 0x4a, 0x6b, 0x5f, 0xa3, 0x94,
0x7c, 0x8a, 0xef, 0xa1, 0x7a, 0x00, 0x9d, 0x24, 0xcd, 0x67, 0x9c, 0x27, 0x5c, 0x0a, 0xb4, 0x5f,
0x82, 0x71, 0xb8, 0x1c, 0xfb, 0xa6, 0x94, 0x1d, 0x96, 0x1f, 0xb5, 0x26, 0xe6, 0xcb, 0x30, 0xe2,
0xbe, 0xbb, 0x6e, 0xfa, 0x96, 0x1f, 0x49, 0x0f, 0xb6, 0x23, 0x43, 0x60, 0xec, 0xbb, 0x1b, 0xc6,
0xa9, 0x38, 0xd3, 0x11, 0x38, 0x13, 0x1d, 0xf8, 0x74, 0x21, 0x67, 0x79, 0x19, 0x9f, 0x94, 0x48,
0x9a, 0xdb, 0xce, 0xf0, 0x6e, 0x25, 0xcd, 0xd4, 0x3a, 0x55, 0x17, 0x21, 0xe8, 0x6d, 0xb8, 0x55,
0x81, 0x49, 0xcb, 0x45, 0x69, 0x81, 0x1d, 0x86, 0x39, 0xf6, 0xb5, 0xce, 0xd2, 0x97, 0x85, 0xa3,
0xb6, 0xc9, 0xea, 0xfc, 0x1f, 0x08, 0xfc, 0xd2, 0x06, 0xbb, 0xaa, 0x21, 0xcf, 0x61, 0xc7, 0xf8,
0xe8, 0xb6, 0x60, 0x92, 0xe1, 0xdc, 0xaf, 0xe0, 0x30, 0xfe, 0x76, 0x52, 0x1a, 0x7c, 0x13, 0xa8,
0xd9, 0xd8, 0x67, 0x55, 0x1f, 0xd2, 0x07, 0xe0, 0x5e, 0x98, 0x01, 0x9a, 0x56, 0xd8, 0xac, 0x22,
0x21, 0x14, 0xec, 0xf2, 0x54, 0x34, 0xa4, 0x26, 0x23, 0x43, 0xd8, 0x37, 0x90, 0x13, 0x54, 0x2a,
0x10, 0x53, 0x79, 0x5a, 0x6b, 0x51, 0xa3, 0x8e, 0x7c, 0x04, 0xff, 0x6b, 0x92, 0x17, 0xdd, 0xbb,
0x41, 0x4b, 0xff, 0xb0, 0x60, 0xa7, 0x92, 0x92, 0xee, 0x7b, 0xe0, 0xa3, 0x50, 0x81, 0x5a, 0x66,
0xa3, 0x5c, 0x9c, 0xf5, 0x2d, 0x53, 0xc1, 0x1c, 0xa5, 0xe2, 0xf3, 0xd8, 0xa4, 0xb6, 0xc6, 0x4a,
0x81, 0xd6, 0x9a, 0x18, 0x5f, 0x2f, 0x63, 0xcc, 0xd2, 0x2a, 0x05, 0xe4, 0x03, 0xe8, 0xea, 0x4b,
0x17, 0x78, 0x5c, 0x05, 0x91, 0xf8, 0x12, 0x97, 0x26, 0x9b, 0x75, 0x76, 0x4d, 0xaa, 0xa7, 0x56,
0x22, 0xa6, 0xac, 0x6d, 0x66, 0xbe, 0xe9, 0x29, 0x74, 0xeb, 0x85, 0x27, 0x83, 0xd5, 0x46, 0xd9,
0xf5, 0x3e, 0x68, 0x36, 0xc1, 0x54, 0x70, 0xb5, 0x48, 0x30, 0x6b, 0x43, 0x29, 0xa0, 0xc7, 0xb0,
0xdf, 0xd4, 0x4a, 0x33, 0x47, 0xfc, 0x6d, 0x0d, 0xb5, 0x14, 0x64, 0xf7, 0xb0, 0x5d, 0xdc, 0xc3,
0xef, 0x61, 0x7f, 0x52, 0xad, 0xea, 0x51, 0x24, 0x94, 0xde, 0x44, 0x9f, 0x83, 0x9d, 0xce, 0xca,
0x31, 0x86, 0xa8, 0xb0, 0xe1, 0x3e, 0x9e, 0x54, 0xd4, 0xaf, 0x5a, 0xac, 0x66, 0xfe, 0x62, 0x0b,
0x36, 0x7e, 0xe6, 0xe1, 0x02, 0x69, 0x1f, 0xec, 0xaa, 0xe1, 0xca, 0x1c, 0x7c, 0x0c, 0x77, 0x6a,
0xf1, 0x27, 0x82, 0xc7, 0x72, 0x16, 0x29, 0x7d, 0x09, 0x7d, 0xe3, 0xe2, 0x8f, 0xfd, 0x74, 0xed,
0x74, 0x58, 0x45, 0x42, 0x7f, 0xb5, 0xc0, 0xce, 0x9d, 0x8e, 0xb9, 0xe2, 0xe4, 0x19, 0x6c, 0x79,
0x29, 0xf9, 0x6c, 0x49, 0xdd, 0xbf, 0x3e, 0x3c, 0xd7, 0x72, 0x64, 0xb9, 0xbd, 0xde, 0xf1, 0x32,
0x8b, 0x6b, 0x4a, 0x53, 0xdf, 0xf1, 0x8d, 0xfc, 0x58, 0xe1, 0x41, 0x7f, 0xcc, 0x46, 0x79, 0xb2,
0x38, 0x93, 0x5e, 0x12, 0xc4, 0xfa, 0x1a, 0xe8, 0x3b, 0x98, 0x2d, 0xb6, 0x9c, 0x7c, 0x71, 0x26,
0x9f, 0xc0, 0x26, 0xf7, 0xb4, 0x95, 0x09, 0xd6, 0x1d, 0xd2, 0x95, 0x60, 0x15, 0xa4, 0xe7, 0xc6,
0x92, 0x65, 0x1e, 0x0f, 0x3c, 0xd8, 0x1e, 0x25, 0xc9, 0x51, 0xe4, 0xa3, 0x24, 0x5d, 0x80, 0x37,
0x02, 0x2f, 0x62, 0xf4, 0x14, 0xfa, 0x4e, 0x8b, 0x38, 0xd9, 0x2a, 0x78, 0x1d, 0x48, 0x19, 0x88,
0xa9, 0x63, 0x91, 0xbd, 0x6c, 0x30, 0x46, 0x17, 0x81, 0x54, 0xd2, 0x69, 0x93, 0xdb, 0xb0, 0x67,
0x04, 0x5f, 0x45, 0x6a, 0x2c, 0x8e, 0xb8, 0x37, 0x43, 0x67, 0x4d, 0x5b, 0x8d, 0x92, 0x24, 0x4a,
0x4e, 0xce, 0xcf, 0x25, 0x2a, 0xc7, 0x7f, 0xf0, 0x0c, 0xee, 0xde, 0xc0, 0x83, 0xec, 0x42, 0x27,
0x93, 0x9e, 0xa1, 0xd3, 0xd2, 0xae, 0x6f, 0x84, 0x2c, 0x04, 0xd6, 0xf0, 0xcf, 0x36, 0x74, 0x52,
0xdf, 0xa5, 0xf0, 0xc8, 0x11, 0x6c, 0xe7, 0xcf, 0x03, 0xe9, 0x35, 0xbe, 0x19, 0x66, 0x3b, 0xf6,
0xee, 0x35, 0xbf, 0x27, 0xe9, 0x56, 0x7c, 0x99, 0x21, 0xea, 0x1d, 0x4b, 0xee, 0xad, 0x6c, 0xc4,
0x72, 0x81, 0xf7, 0x0e, 0x9a, 0x95, 0x2b, 0x38, 0x61, 0xd8, 0x84, 0x53, 0x2c, 0xeb, 0x26, 0x9c,
0xca, 0x96, 0x66, 0xe0, 0x94, 0xef, 0xda, 0x44, 0x25, 0xc8, 0xe7, 0xe4, 0x60, 0x65, 0x30, 0x2a,
0x8f, 0x5e, 0xef, 0xbd, 0xda, 0x43, 0xeb, 0xb1, 0xf5, 0xe2, 0xc3, 0xbf, 0x2e, 0xfb, 0xd6, 0xbb,
0xcb, 0xbe, 0xf5, 0xcf, 0x65, 0xdf, 0xfa, 0xed, 0xaa, 0xdf, 0x7a, 0x77, 0xd5, 0x6f, 0xfd, 0x7d,
0xd5, 0x6f, 0x7d, 0xdb, 0xbb, 0xf9, 0xdf, 0xa5, 0xb3, 0x4d, 0xf3, 0xe7, 0xe9, 0xbf, 0x01, 0x00,
0x00, 0xff, 0xff, 0x23, 0x56, 0x6f, 0xd6, 0x53, 0x09, 0x00, 0x00,
// 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,
}
func (m *HeadSyncRange) Marshal() (dAtA []byte, err error) {
@ -1856,6 +1925,27 @@ func (m *SpaceSettingsContent_ObjectDelete) MarshalToSizedBuffer(dAtA []byte) (i
}
return len(dAtA) - i, nil
}
func (m *SpaceSettingsContent_SpaceDelete) MarshalTo(dAtA []byte) (int, error) {
size := m.Size()
return m.MarshalToSizedBuffer(dAtA[:size])
}
func (m *SpaceSettingsContent_SpaceDelete) MarshalToSizedBuffer(dAtA []byte) (int, error) {
i := len(dAtA)
if m.SpaceDelete != nil {
{
size, err := m.SpaceDelete.MarshalToSizedBuffer(dAtA[:i])
if err != nil {
return 0, err
}
i -= size
i = encodeVarintSpacesync(dAtA, i, uint64(size))
}
i--
dAtA[i] = 0x12
}
return len(dAtA) - i, nil
}
func (m *ObjectDelete) Marshal() (dAtA []byte, err error) {
size := m.Size()
dAtA = make([]byte, size)
@ -1886,6 +1976,34 @@ func (m *ObjectDelete) MarshalToSizedBuffer(dAtA []byte) (int, error) {
return len(dAtA) - i, nil
}
func (m *SpaceDelete) Marshal() (dAtA []byte, err error) {
size := m.Size()
dAtA = make([]byte, size)
n, err := m.MarshalToSizedBuffer(dAtA[:size])
if err != nil {
return nil, err
}
return dAtA[:n], nil
}
func (m *SpaceDelete) MarshalTo(dAtA []byte) (int, error) {
size := m.Size()
return m.MarshalToSizedBuffer(dAtA[:size])
}
func (m *SpaceDelete) MarshalToSizedBuffer(dAtA []byte) (int, error) {
i := len(dAtA)
_ = i
var l int
_ = l
if m.Timestamp != 0 {
i = encodeVarintSpacesync(dAtA, i, uint64(m.Timestamp))
i--
dAtA[i] = 0x8
}
return len(dAtA) - i, nil
}
func (m *SpaceSettingsSnapshot) Marshal() (dAtA []byte, err error) {
size := m.Size()
dAtA = make([]byte, size)
@ -1906,6 +2024,11 @@ func (m *SpaceSettingsSnapshot) MarshalToSizedBuffer(dAtA []byte) (int, error) {
_ = i
var l int
_ = l
if m.SpaceDeletionTimestamp != 0 {
i = encodeVarintSpacesync(dAtA, i, uint64(m.SpaceDeletionTimestamp))
i--
dAtA[i] = 0x10
}
if len(m.DeletedIds) > 0 {
for iNdEx := len(m.DeletedIds) - 1; iNdEx >= 0; iNdEx-- {
i -= len(m.DeletedIds[iNdEx])
@ -2297,6 +2420,18 @@ func (m *SpaceSettingsContent_ObjectDelete) Size() (n int) {
}
return n
}
func (m *SpaceSettingsContent_SpaceDelete) Size() (n int) {
if m == nil {
return 0
}
var l int
_ = l
if m.SpaceDelete != nil {
l = m.SpaceDelete.Size()
n += 1 + l + sovSpacesync(uint64(l))
}
return n
}
func (m *ObjectDelete) Size() (n int) {
if m == nil {
return 0
@ -2310,6 +2445,18 @@ func (m *ObjectDelete) Size() (n int) {
return n
}
func (m *SpaceDelete) Size() (n int) {
if m == nil {
return 0
}
var l int
_ = l
if m.Timestamp != 0 {
n += 1 + sovSpacesync(uint64(m.Timestamp))
}
return n
}
func (m *SpaceSettingsSnapshot) Size() (n int) {
if m == nil {
return 0
@ -2322,6 +2469,9 @@ func (m *SpaceSettingsSnapshot) Size() (n int) {
n += 1 + l + sovSpacesync(uint64(l))
}
}
if m.SpaceDeletionTimestamp != 0 {
n += 1 + sovSpacesync(uint64(m.SpaceDeletionTimestamp))
}
return n
}
@ -4146,6 +4296,41 @@ func (m *SpaceSettingsContent) Unmarshal(dAtA []byte) error {
}
m.Value = &SpaceSettingsContent_ObjectDelete{v}
iNdEx = postIndex
case 2:
if wireType != 2 {
return fmt.Errorf("proto: wrong wireType = %d for field SpaceDelete", wireType)
}
var msglen int
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowSpacesync
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
msglen |= int(b&0x7F) << shift
if b < 0x80 {
break
}
}
if msglen < 0 {
return ErrInvalidLengthSpacesync
}
postIndex := iNdEx + msglen
if postIndex < 0 {
return ErrInvalidLengthSpacesync
}
if postIndex > l {
return io.ErrUnexpectedEOF
}
v := &SpaceDelete{}
if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
return err
}
m.Value = &SpaceSettingsContent_SpaceDelete{v}
iNdEx = postIndex
default:
iNdEx = preIndex
skippy, err := skipSpacesync(dAtA[iNdEx:])
@ -4249,6 +4434,75 @@ func (m *ObjectDelete) Unmarshal(dAtA []byte) error {
}
return nil
}
func (m *SpaceDelete) Unmarshal(dAtA []byte) error {
l := len(dAtA)
iNdEx := 0
for iNdEx < l {
preIndex := iNdEx
var wire uint64
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowSpacesync
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
wire |= uint64(b&0x7F) << shift
if b < 0x80 {
break
}
}
fieldNum := int32(wire >> 3)
wireType := int(wire & 0x7)
if wireType == 4 {
return fmt.Errorf("proto: SpaceDelete: wiretype end group for non-group")
}
if fieldNum <= 0 {
return fmt.Errorf("proto: SpaceDelete: illegal tag %d (wire type %d)", fieldNum, wire)
}
switch fieldNum {
case 1:
if wireType != 0 {
return fmt.Errorf("proto: wrong wireType = %d for field Timestamp", wireType)
}
m.Timestamp = 0
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowSpacesync
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
m.Timestamp |= int64(b&0x7F) << shift
if b < 0x80 {
break
}
}
default:
iNdEx = preIndex
skippy, err := skipSpacesync(dAtA[iNdEx:])
if err != nil {
return err
}
if (skippy < 0) || (iNdEx+skippy) < 0 {
return ErrInvalidLengthSpacesync
}
if (iNdEx + skippy) > l {
return io.ErrUnexpectedEOF
}
iNdEx += skippy
}
}
if iNdEx > l {
return io.ErrUnexpectedEOF
}
return nil
}
func (m *SpaceSettingsSnapshot) Unmarshal(dAtA []byte) error {
l := len(dAtA)
iNdEx := 0
@ -4310,6 +4564,25 @@ func (m *SpaceSettingsSnapshot) Unmarshal(dAtA []byte) error {
}
m.DeletedIds = append(m.DeletedIds, string(dAtA[iNdEx:postIndex]))
iNdEx = postIndex
case 2:
if wireType != 0 {
return fmt.Errorf("proto: wrong wireType = %d for field SpaceDeletionTimestamp", wireType)
}
m.SpaceDeletionTimestamp = 0
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowSpacesync
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
m.SpaceDeletionTimestamp |= int64(b&0x7F) << shift
if b < 0x80 {
break
}
}
default:
iNdEx = preIndex
skippy, err := skipSpacesync(dAtA[iNdEx:])