1
0
Fork 0
mirror of https://github.com/anyproto/anytype-heart.git synced 2025-06-09 09:35:00 +09:00

GO-4146 Merge remote-tracking branch 'origin/main' into GO-4146-new-spacestore

# Conflicts:
#	go.mod
This commit is contained in:
mcrakhman 2025-02-07 21:35:37 +01:00
commit 81ace0291e
No known key found for this signature in database
GPG key ID: DED12CFEF5B8396B
20 changed files with 398 additions and 75 deletions

View file

@ -859,6 +859,7 @@ func (e *exportContext) addNestedObject(id string, nestedDocs map[string]*Doc) {
Collection: true,
NoHiddenBundledRelations: true,
NoBackLinks: !e.includeBackLinks,
CreatorModifierWorkspace: true,
})
return nil
})

View file

@ -2392,6 +2392,116 @@ func Test_docsForExport(t *testing.T) {
assert.Nil(t, err)
assert.Equal(t, 2, len(expCtx.docs))
})
t.Run("export participant", func(t *testing.T) {
// given
storeFixture := objectstore.NewStoreFixture(t)
objectTypeId := "objectTypeId"
objectTypeUniqueKey, err := domain.NewUniqueKey(smartblock.SmartBlockTypeObjectType, objectTypeId)
assert.Nil(t, err)
participantId := domain.NewParticipantId(spaceId, "identity")
storeFixture.AddObjects(t, spaceId, []objectstore.TestObject{
{
bundle.RelationKeyId: domain.String("id"),
bundle.RelationKeyName: domain.String("name1"),
bundle.RelationKeySpaceId: domain.String(spaceId),
bundle.RelationKeyType: domain.String(objectTypeId),
},
{
bundle.RelationKeyId: domain.String(participantId),
bundle.RelationKeyName: domain.String("test"),
bundle.RelationKeySpaceId: domain.String(spaceId),
bundle.RelationKeyType: domain.String(objectTypeId),
},
{
bundle.RelationKeyId: domain.String(objectTypeId),
bundle.RelationKeyUniqueKey: domain.String(objectTypeUniqueKey.Marshal()),
bundle.RelationKeyLayout: domain.Int64(int64(model.ObjectType_objectType)),
bundle.RelationKeySpaceId: domain.String(spaceId),
bundle.RelationKeyType: domain.String(objectTypeId),
},
})
smartBlockTest := smarttest.New("id")
doc := smartBlockTest.NewState().SetDetails(domain.NewDetailsFromMap(map[domain.RelationKey]domain.Value{
bundle.RelationKeyId: domain.String("id"),
bundle.RelationKeyType: domain.String(objectTypeId),
bundle.RelationKeyLastModifiedBy: domain.String(participantId),
bundle.RelationKeyCreator: domain.String(participantId),
}))
doc.AddRelationLinks(&model.RelationLink{
Key: bundle.RelationKeyId.String(),
Format: model.RelationFormat_longtext,
}, &model.RelationLink{
Key: bundle.RelationKeyType.String(),
Format: model.RelationFormat_longtext,
}, &model.RelationLink{
Key: bundle.RelationKeyLastModifiedBy.String(),
Format: model.RelationFormat_object,
}, &model.RelationLink{
Key: bundle.RelationKeyCreator.String(),
Format: model.RelationFormat_object,
})
smartBlockTest.Doc = doc
objectType := smarttest.New(objectTypeId)
objectTypeDoc := objectType.NewState().SetDetails(domain.NewDetailsFromMap(map[domain.RelationKey]domain.Value{
bundle.RelationKeyId: domain.String(objectTypeId),
bundle.RelationKeyType: domain.String(objectTypeId),
}))
objectTypeDoc.AddRelationLinks(&model.RelationLink{
Key: bundle.RelationKeyId.String(),
Format: model.RelationFormat_longtext,
}, &model.RelationLink{
Key: bundle.RelationKeyType.String(),
Format: model.RelationFormat_longtext,
})
objectType.Doc = objectTypeDoc
participant := smarttest.New(participantId)
participantDoc := participant.NewState().SetDetails(domain.NewDetailsFromMap(map[domain.RelationKey]domain.Value{
bundle.RelationKeyId: domain.String(participantId),
bundle.RelationKeyType: domain.String(objectTypeId),
}))
participantDoc.AddRelationLinks(&model.RelationLink{
Key: bundle.RelationKeyId.String(),
Format: model.RelationFormat_longtext,
}, &model.RelationLink{
Key: bundle.RelationKeyType.String(),
Format: model.RelationFormat_longtext,
})
participant.Doc = participantDoc
objectGetter := mock_cache.NewMockObjectGetter(t)
objectGetter.EXPECT().GetObject(context.Background(), "id").Return(smartBlockTest, nil)
objectGetter.EXPECT().GetObject(context.Background(), objectTypeId).Return(objectType, nil)
objectGetter.EXPECT().GetObject(context.Background(), participantId).Return(participant, nil)
provider := mock_typeprovider.NewMockSmartBlockTypeProvider(t)
provider.EXPECT().Type(spaceId, participantId).Return(smartblock.SmartBlockTypeParticipant, nil)
e := &export{
objectStore: storeFixture,
picker: objectGetter,
sbtProvider: provider,
}
expCtx := newExportContext(e, pb.RpcObjectListExportRequest{
SpaceId: spaceId,
ObjectIds: []string{"id"},
IncludeNested: true,
Format: model.Export_Protobuf,
})
// when
err = expCtx.docsForExport()
// then
assert.Nil(t, err)
assert.Equal(t, 3, len(expCtx.docs))
assert.NotNil(t, expCtx.docs[participantId])
})
}
func Test_provideFileName(t *testing.T) {

View file

@ -156,13 +156,20 @@ func (s *service) newSource(ctx context.Context, space Space, id string, buildOp
case smartblock.SmartBlockTypeBundledRelation:
return NewBundledRelation(id), nil
case smartblock.SmartBlockTypeParticipant:
spaceId, _, err := domain.ParseParticipantId(id)
if err != nil {
return nil, err
}
if spaceId != space.Id() {
return nil, fmt.Errorf("invalid space id for participant object")
}
participantState := state.NewDoc(id, nil).(*state.State)
// Set object type here in order to derive value of Type relation in smartblock.Init
participantState.SetObjectTypeKey(bundle.TypeKeyParticipant)
params := StaticSourceParams{
Id: domain.FullID{
ObjectID: id,
SpaceID: space.Id(),
SpaceID: spaceId,
},
State: participantState,
SbType: smartblock.SmartBlockTypeParticipant,

View file

@ -17,3 +17,15 @@ func NewParticipantId(spaceId, identity string) string {
spaceId = strings.Replace(spaceId, ".", "_", 1)
return fmt.Sprintf("%s%s_%s", ParticipantPrefix, spaceId, identity)
}
func ParseParticipantId(participantId string) (string, string, error) {
if !strings.HasPrefix(participantId, ParticipantPrefix) {
return "", "", fmt.Errorf("participant id must start with _participant_")
}
parts := strings.Split(participantId, "_")
if len(parts) != 5 {
return "", "", fmt.Errorf("can't extract space id")
}
return fmt.Sprintf("%s.%s", parts[2], parts[3]), parts[4], nil
}

33
core/domain/id_test.go Normal file
View file

@ -0,0 +1,33 @@
package domain
import (
"testing"
"github.com/stretchr/testify/assert"
)
func TestExtractSpaceId(t *testing.T) {
tests := []struct {
participantId string
expectedSpaceId string
expectedId string
expectError bool
}{
{"prefix_space_123", "", "", true},
{"_participant_space.participant_456", "", "", true},
{"invalid_format", "", "", true},
{"_participant_spacepref_spacesuf_participantid", "spacepref.spacesuf", "participantid", false},
{"_participant_spacepref_spacesuf", "", "", true},
}
for _, test := range tests {
spaceId, id, err := ParseParticipantId(test.participantId)
if test.expectError {
assert.Error(t, err, "Expected error for input %s", test.participantId)
} else {
assert.NoError(t, err, "Unexpected error for input %s", test.participantId)
assert.Equal(t, test.expectedSpaceId, spaceId, "For input space %s", test.participantId)
assert.Equal(t, test.expectedId, id, "For input id %s", test.participantId)
}
}
}

View file

@ -68,8 +68,12 @@ func (c *client) opLoop(ctx context.Context) {
c.mu.Lock()
allowWrite := c.allowWrite
c.mu.Unlock()
cond := c.taskQueue.NewCond().WithFilter(func(t *task) bool {
if t.write && !allowWrite {
writeCond := c.taskQueue.NewCond().WithFilter(func(t *task) bool {
if !t.write {
return false
}
if !allowWrite {
return false
}
if slices.Index(t.denyPeerIds, c.peerId) != -1 {
@ -77,12 +81,40 @@ func (c *client) opLoop(ctx context.Context) {
}
return c.checkSpaceFilter(t)
})
readCond := c.taskQueue.NewCond().WithFilter(func(t *task) bool {
if t.write {
return false
}
if slices.Index(t.denyPeerIds, c.peerId) != -1 {
return false
}
return c.checkSpaceFilter(t)
})
go func() {
c.runWorkers(ctx, maxSubConnections, readCond)
}()
c.runWorkers(ctx, maxSubConnections, writeCond)
}
func (c *client) runWorkers(ctx context.Context, count int, waitCond mb.WaitCond[*task]) {
connections := make(chan struct{}, count)
for {
t, err := cond.WithPriority(c.stat.Score()).WaitOne(ctx)
t, err := waitCond.WithPriority(c.stat.Score()).WaitOne(ctx)
if err != nil {
return
}
t.execWithClient(c)
if count == 1 {
t.execWithClient(c)
} else {
connections <- struct{}{}
go func() {
t.execWithClient(c)
<-connections
}()
}
}
}

View file

@ -20,8 +20,9 @@ import (
)
const (
maxConnections = 10
maxTasks = 100
maxConnections = 10
maxSubConnections = 10
maxTasks = 100
)
type operationNameKeyType string

View file

@ -14,6 +14,7 @@ type reindexFlags struct {
removeOldFiles bool
deletedObjects bool
eraseLinks bool
removeParticipants bool
}
func (f *reindexFlags) any() bool {
@ -27,6 +28,7 @@ func (f *reindexFlags) any() bool {
f.fileKeys ||
f.removeOldFiles ||
f.deletedObjects ||
f.removeParticipants ||
f.eraseLinks
}
@ -41,6 +43,7 @@ func (f *reindexFlags) enableAll() {
f.fileKeys = true
f.removeOldFiles = true
f.deletedObjects = true
f.removeParticipants = true
f.eraseLinks = true
}

View file

@ -2,6 +2,7 @@ package indexer
import (
"context"
"fmt"
"sync"
"github.com/anyproto/any-sync/app"
@ -121,7 +122,8 @@ func (i *indexer) Close(ctx context.Context) (err error) {
}
func (i *indexer) RemoveAclIndexes(spaceId string) (err error) {
ids, _, err := i.store.SpaceIndex(spaceId).QueryObjectIds(database.Query{
store := i.store.SpaceIndex(spaceId)
ids, _, err := store.QueryObjectIds(database.Query{
Filters: []database.FilterRequest{
{
RelationKey: bundle.RelationKeyLayout,
@ -131,9 +133,9 @@ func (i *indexer) RemoveAclIndexes(spaceId string) (err error) {
},
})
if err != nil {
return
return fmt.Errorf("remove acl: %w", err)
}
return i.store.SpaceIndex(spaceId).DeleteDetails(i.runCtx, ids)
return store.DeleteDetails(i.runCtx, ids)
}
func (i *indexer) Index(info smartblock.DocInfo, options ...smartblock.IndexOption) error {

View file

@ -47,6 +47,8 @@ const (
ForceMarketplaceReindex int32 = 1
ForceReindexDeletedObjectsCounter int32 = 1
ForceReindexParticipantsCounter int32 = 1
)
type allDeletedIdsProvider interface {
@ -73,6 +75,7 @@ func (i *indexer) buildFlags(spaceID string) (reindexFlags, error) {
BundledObjects: ForceBundledObjectsReindexCounter,
AreOldFilesRemoved: true,
ReindexDeletedObjects: 0, // Set to zero to force reindexing of deleted objects when objectstore was deleted
ReindexParticipants: ForceReindexParticipantsCounter,
}
}
@ -107,6 +110,9 @@ func (i *indexer) buildFlags(spaceID string) (reindexFlags, error) {
if checksums.ReindexDeletedObjects != ForceReindexDeletedObjectsCounter {
flags.deletedObjects = true
}
if checksums.ReindexParticipants != ForceReindexParticipantsCounter {
flags.removeParticipants = true
}
if checksums.LinksErase != ForceLinksReindexCounter {
flags.eraseLinks = true
}
@ -202,6 +208,13 @@ func (i *indexer) ReindexSpace(space clientspace.Space) (err error) {
}
}
if flags.removeParticipants {
err = i.RemoveAclIndexes(space.Id())
if err != nil {
log.Error("reindex deleted objects", zap.Error(err))
}
}
go i.addSyncDetails(space)
return i.saveLatestChecksums(space.Id())
@ -495,6 +508,7 @@ func (i *indexer) getLatestChecksums(isMarketplace bool) (checksums model.Object
AreDeletedObjectsReindexed: true,
LinksErase: ForceLinksReindexCounter,
ReindexDeletedObjects: ForceReindexDeletedObjectsCounter,
ReindexParticipants: ForceReindexParticipantsCounter,
}
if isMarketplace {
checksums.MarketplaceForceReindexCounter = ForceMarketplaceReindex

View file

@ -145,6 +145,77 @@ func TestReindexMarketplaceSpace(t *testing.T) {
})
}
func TestIndexer_ReindexSpace_RemoveParticipants(t *testing.T) {
const (
spaceId1 = "space1"
spaceId2 = "space2"
)
fx := NewIndexerFixture(t)
fx.objectStore.AddObjects(t, spaceId1, []objectstore.TestObject{
{
bundle.RelationKeyId: domain.String("_part1"),
bundle.RelationKeyLayout: domain.Int64(model.ObjectType_participant),
bundle.RelationKeySpaceId: domain.String(spaceId1),
},
{
bundle.RelationKeyId: domain.String("rand1"),
bundle.RelationKeyLayout: domain.Int64(model.SmartBlockType_Page),
bundle.RelationKeySpaceId: domain.String(spaceId1),
},
})
fx.objectStore.AddObjects(t, spaceId2, []objectstore.TestObject{
{
bundle.RelationKeyId: domain.String("_part2"),
bundle.RelationKeyLayout: domain.Int64(model.ObjectType_participant),
bundle.RelationKeySpaceId: domain.String(spaceId2),
},
{
bundle.RelationKeyId: domain.String("_part21"),
bundle.RelationKeyLayout: domain.Int64(model.ObjectType_participant),
bundle.RelationKeySpaceId: domain.String(spaceId2),
},
{
bundle.RelationKeyId: domain.String("rand2"),
bundle.RelationKeyLayout: domain.Int64(model.SmartBlockType_Page),
bundle.RelationKeySpaceId: domain.String(spaceId1),
},
})
checksums := fx.getLatestChecksums(false)
checksums.ReindexParticipants = checksums.ReindexParticipants - 1
err := fx.objectStore.SaveChecksums(spaceId1, &checksums)
require.NoError(t, err)
err = fx.objectStore.SaveChecksums(spaceId2, &checksums)
require.NoError(t, err)
for _, space := range []string{spaceId1, spaceId2} {
t.Run("reindex - participants deleted - when flag doesn't match", func(t *testing.T) {
// given
store := fx.store.SpaceIndex(space)
spc := mock_space.NewMockSpace(t)
spc.EXPECT().Id().Return(space)
spc.EXPECT().StoredIds().Return([]string{}).Maybe()
fx.sourceFx.EXPECT().IDsListerBySmartblockType(mock.Anything, mock.Anything).Return(idsLister{Ids: []string{}}, nil).Maybe()
// when
err = fx.ReindexSpace(spc)
assert.NoError(t, err)
// then
ids, err := store.ListIds()
assert.NoError(t, err)
assert.Len(t, ids, 1)
storeChecksums, err := fx.store.GetChecksums(space)
assert.Equal(t, ForceReindexParticipantsCounter, storeChecksums.ReindexParticipants)
})
}
}
func TestIndexer_ReindexSpace_EraseLinks(t *testing.T) {
const (
spaceId1 = "space1"

View file

@ -3,24 +3,13 @@ package core
import (
"context"
"go.uber.org/zap"
"github.com/anyproto/anytype-heart/core/publish"
"github.com/anyproto/anytype-heart/pb"
)
// rpc PublishingCreate (anytype.Rpc.Publishing.Create.Request) returns (anytype.Rpc.Publishing.Create.Response)
// rpc PublishingRemove (anytype.Rpc.Publishing.Remove.Request) returns (anytype.Rpc.Publishing.Remove.Response)
// rpc PublishingList (anytype.Rpc.Publishing.List.Request) returns (anytype.Rpc.Publishing.List.Response)
// rpc PublishingResolveUri (anytype.Rpc.Publishing.ResolveUri.Request) returns (anytype.Rpc.Publishing.ResolveUri.Response)
// rpc PublishingGetStatus (anytype.Rpc.Publishing.GetStatus.Request) returns (anytype.Rpc.Publishing.GetStatus.Response)
func (mw *Middleware) PublishingCreate(ctx context.Context, req *pb.RpcPublishingCreateRequest) *pb.RpcPublishingCreateResponse {
log.Error("PublishingCreate called", zap.String("objectId", req.ObjectId))
publishService := mustService[publish.Service](mw)
res, err := publishService.Publish(ctx, req.SpaceId, req.ObjectId, req.Uri, req.JoinSpace)
log.Error("PublishingCreate called", zap.String("objectId", req.ObjectId))
code := mapErrorCode(err,
errToCode(nil, pb.RpcPublishingCreateResponseError_NULL),
errToCode(publish.ErrLimitExceeded, pb.RpcPublishingCreateResponseError_LIMIT_EXCEEDED),

View file

@ -25,6 +25,9 @@ var documentRelationsWhiteList = append(slices.Clone(allObjectsRelationsWhiteLis
bundle.RelationKeyIconEmoji.String(),
bundle.RelationKeyCoverType.String(),
bundle.RelationKeyCoverId.String(),
bundle.RelationKeyCoverX.String(),
bundle.RelationKeyCoverY.String(),
bundle.RelationKeyCoverScale.String(),
)
var todoRelationsWhiteList = append(slices.Clone(documentRelationsWhiteList), bundle.RelationKeyDone.String())
@ -46,6 +49,11 @@ var fileRelationsWhiteList = append(
bundle.RelationKeySource.String(),
)
var imageRelationsWhiteList = append(slices.Clone(fileRelationsWhiteList),
bundle.RelationKeyMediaArtistName.String(),
bundle.RelationKeyMediaArtistURL.String(),
)
var publishingRelationsWhiteList = map[model.ObjectTypeLayout][]string{
model.ObjectType_basic: documentRelationsWhiteList,
model.ObjectType_profile: documentRelationsWhiteList,
@ -56,7 +64,7 @@ var publishingRelationsWhiteList = map[model.ObjectTypeLayout][]string{
model.ObjectType_relation: relationsWhiteList,
model.ObjectType_file: fileRelationsWhiteList,
model.ObjectType_dashboard: allObjectsRelationsWhiteList,
model.ObjectType_image: fileRelationsWhiteList,
model.ObjectType_image: imageRelationsWhiteList,
model.ObjectType_note: documentRelationsWhiteList,
model.ObjectType_space: allObjectsRelationsWhiteList,

View file

@ -28742,6 +28742,7 @@ Precondition: user A and user B opened the same block
| linksErase | [int32](#int32) | | |
| marketplaceForceReindexCounter | [int32](#int32) | | |
| reindexDeletedObjects | [int32](#int32) | | |
| reindexParticipants | [int32](#int32) | | |

2
go.mod
View file

@ -107,7 +107,7 @@ require (
golang.org/x/image v0.24.0
golang.org/x/mobile v0.0.0-20241108191957-fa514ef75a0f
golang.org/x/net v0.34.0
golang.org/x/oauth2 v0.25.0
golang.org/x/oauth2 v0.26.0
golang.org/x/sys v0.29.0
golang.org/x/text v0.22.0
google.golang.org/grpc v1.70.0

4
go.sum
View file

@ -1320,8 +1320,8 @@ golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ
golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
golang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
golang.org/x/oauth2 v0.25.0 h1:CY4y7XT9v0cRI9oupztF8AgiIu99L/ksR/Xp/6jrZ70=
golang.org/x/oauth2 v0.25.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI=
golang.org/x/oauth2 v0.26.0 h1:afQXWNNaeC4nvZ0Ed9XvCCzXM6UHJG7iCg0W4fPqSBE=
golang.org/x/oauth2 v0.26.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI=
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=

View file

@ -9,7 +9,7 @@ import (
"github.com/anyproto/anytype-heart/pkg/lib/pb/model"
)
const RelationChecksum = "5694f1d0c15a9a770f961a84dd5ee2af89886c00522f4150c601d40dadc502e0"
const RelationChecksum = "7e14cc433fd3903623ab8f25cfdcfea52317aa59aee7b0925f1ba68afe46c5f5"
const (
RelationKeyTag domain.RelationKey = "tag"
RelationKeyCamera domain.RelationKey = "camera"

View file

@ -470,7 +470,7 @@
"source": "details"
},
{
"description": "1-image, 2-color, 3-gradient, 4-prebuilt bg image. Value stored in coverId",
"description": "1-image, 2-color, 3-gradient, 4-prebuilt bg image, 5 - unsplash image. Value stored in coverId",
"format": "number",
"hidden": true,
"key": "coverType",

View file

@ -452,6 +452,7 @@ type ObjectStoreChecksums struct {
LinksErase int32 `protobuf:"varint,14,opt,name=linksErase,proto3" json:"linksErase,omitempty"`
MarketplaceForceReindexCounter int32 `protobuf:"varint,15,opt,name=marketplaceForceReindexCounter,proto3" json:"marketplaceForceReindexCounter,omitempty"`
ReindexDeletedObjects int32 `protobuf:"varint,16,opt,name=reindexDeletedObjects,proto3" json:"reindexDeletedObjects,omitempty"`
ReindexParticipants int32 `protobuf:"varint,17,opt,name=reindexParticipants,proto3" json:"reindexParticipants,omitempty"`
}
func (m *ObjectStoreChecksums) Reset() { *m = ObjectStoreChecksums{} }
@ -599,6 +600,13 @@ func (m *ObjectStoreChecksums) GetReindexDeletedObjects() int32 {
return 0
}
func (m *ObjectStoreChecksums) GetReindexParticipants() int32 {
if m != nil {
return m.ReindexParticipants
}
return 0
}
func init() {
proto.RegisterType((*ObjectInfo)(nil), "anytype.model.ObjectInfo")
proto.RegisterType((*ObjectDetails)(nil), "anytype.model.ObjectDetails")
@ -615,54 +623,55 @@ func init() {
}
var fileDescriptor_9c35df71910469a5 = []byte{
// 751 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x55, 0x4d, 0x6f, 0xd3, 0x4a,
0x14, 0xad, 0x93, 0x26, 0x69, 0x6e, 0x5e, 0xda, 0xbe, 0x79, 0xef, 0xe9, 0xcd, 0xeb, 0x43, 0x96,
0x15, 0x55, 0x28, 0xaa, 0x20, 0x11, 0xfd, 0xd8, 0xb0, 0x00, 0xa9, 0x2d, 0x95, 0x0a, 0x95, 0x22,
0xb9, 0x45, 0x48, 0xec, 0xec, 0xf8, 0xa6, 0x35, 0x99, 0x78, 0x2c, 0xcf, 0x18, 0x35, 0x0b, 0x96,
0x6c, 0x58, 0xf1, 0x07, 0xf8, 0x33, 0xac, 0x58, 0x76, 0xc9, 0x12, 0xb5, 0xff, 0x80, 0x5f, 0x80,
0x3c, 0xe3, 0xa4, 0x8e, 0xeb, 0xa6, 0x48, 0xb0, 0xf4, 0xb9, 0xe7, 0x1c, 0x9f, 0xb9, 0xd7, 0x73,
0x0d, 0xed, 0x70, 0x78, 0xda, 0x65, 0xbe, 0xdb, 0x0d, 0xdd, 0xee, 0x88, 0x7b, 0xc8, 0xba, 0x61,
0xc4, 0x25, 0x17, 0x5d, 0xc6, 0xfb, 0x0e, 0x13, 0x92, 0x47, 0xd8, 0x51, 0x08, 0x69, 0x3a, 0xc1,
0x58, 0x8e, 0x43, 0xec, 0x28, 0xda, 0xda, 0xbd, 0x53, 0xce, 0x4f, 0x19, 0x6a, 0xba, 0x1b, 0x0f,
0xba, 0x42, 0x46, 0x71, 0x5f, 0x6a, 0xf2, 0xda, 0xfa, 0x6d, 0xb6, 0xea, 0x41, 0x68, 0x56, 0xeb,
0xbb, 0x01, 0xd0, 0x73, 0xdf, 0x60, 0x5f, 0x1e, 0x06, 0x03, 0x4e, 0x96, 0xa1, 0xe4, 0x7b, 0xd4,
0xb0, 0x8c, 0x76, 0xdd, 0x2e, 0xf9, 0x1e, 0xb9, 0x0f, 0xcb, 0x5c, 0x55, 0x4f, 0xc6, 0x21, 0xbe,
0x8c, 0x98, 0xa0, 0x25, 0xab, 0xdc, 0xae, 0xdb, 0x39, 0x94, 0x3c, 0x82, 0x9a, 0x87, 0xd2, 0xf1,
0x99, 0xa0, 0x65, 0xcb, 0x68, 0x37, 0x36, 0xff, 0xed, 0xe8, 0x70, 0x9d, 0x49, 0xb8, 0xce, 0xb1,
0x0a, 0x67, 0x4f, 0x78, 0x64, 0x07, 0xea, 0x11, 0x32, 0x47, 0xfa, 0x3c, 0x10, 0x74, 0xd1, 0x2a,
0x2b, 0xd1, 0xcc, 0x01, 0x3b, 0x76, 0x5a, 0xb7, 0xaf, 0x99, 0x84, 0x42, 0x4d, 0x04, 0x7e, 0x18,
0xa2, 0xa4, 0x15, 0x15, 0x73, 0xf2, 0x48, 0xda, 0xb0, 0x72, 0xe6, 0x88, 0xc3, 0xc0, 0xe5, 0x71,
0xe0, 0x1d, 0xf9, 0xc1, 0x50, 0xd0, 0xaa, 0x65, 0xb4, 0x97, 0xec, 0x3c, 0xdc, 0xda, 0x85, 0xa6,
0x3e, 0xf3, 0x7e, 0x9a, 0x25, 0x13, 0xdf, 0xf8, 0xb9, 0xf8, 0xad, 0x1e, 0x34, 0xb4, 0x87, 0xb2,
0x24, 0x26, 0x80, 0xaf, 0x5f, 0x71, 0xb8, 0x9f, 0x98, 0x24, 0x4d, 0xca, 0x20, 0xc4, 0x82, 0x06,
0x8f, 0xe5, 0x94, 0xa0, 0xbb, 0x98, 0x85, 0x5a, 0xef, 0x60, 0x25, 0x63, 0xa8, 0xa6, 0xb1, 0x05,
0xb5, 0xd4, 0x42, 0x39, 0x36, 0x36, 0xff, 0xcb, 0x35, 0xe8, 0x7a, 0x72, 0xf6, 0x84, 0x49, 0x76,
0x60, 0x69, 0x62, 0xab, 0x5e, 0x33, 0x57, 0x35, 0xa5, 0xb6, 0x3e, 0x18, 0xf0, 0xd7, 0x75, 0xe1,
0x95, 0x2f, 0xcf, 0xf4, 0xc1, 0xf2, 0x5f, 0xc4, 0x43, 0x58, 0xf4, 0x83, 0x01, 0xa7, 0x25, 0xd5,
0xa7, 0x39, 0xd6, 0x8a, 0x46, 0xb6, 0xa1, 0xc2, 0xd4, 0x28, 0xf4, 0x67, 0x61, 0x16, 0xf2, 0xa7,
0x27, 0xb6, 0x35, 0xb9, 0xf5, 0xc9, 0x80, 0xff, 0x67, 0xc3, 0xf4, 0xd2, 0x9c, 0xbf, 0x25, 0xd4,
0x53, 0x68, 0xf2, 0xac, 0x1f, 0x2d, 0xdf, 0xd5, 0xa7, 0x59, 0x7e, 0xeb, 0xbd, 0x01, 0xe6, 0x9c,
0x7c, 0xc9, 0xc0, 0x7f, 0x31, 0xe2, 0x7a, 0x51, 0xc4, 0x7a, 0x3e, 0xc7, 0xe7, 0x2a, 0xfc, 0xad,
0xa5, 0xc7, 0xc9, 0x9a, 0xd8, 0x3b, 0xc3, 0xfe, 0x50, 0xc4, 0x23, 0x41, 0x3a, 0x40, 0xdc, 0x38,
0xf0, 0x18, 0x7a, 0xbd, 0xe9, 0x45, 0x15, 0x69, 0x9a, 0x82, 0x0a, 0xd9, 0x80, 0xd5, 0x14, 0xb5,
0xa7, 0x77, 0xb2, 0xa4, 0xd8, 0x37, 0xf0, 0x64, 0x27, 0xa4, 0xd8, 0x91, 0x33, 0xe6, 0xb1, 0xd4,
0xb3, 0xad, 0xdb, 0x39, 0x94, 0x3c, 0x81, 0x35, 0xbd, 0x25, 0xc4, 0x01, 0x8f, 0xfa, 0x68, 0xa3,
0x1f, 0x78, 0x78, 0xbe, 0xc7, 0xe3, 0x40, 0x62, 0x44, 0x17, 0x2d, 0xa3, 0x5d, 0xb1, 0xe7, 0x30,
0xc8, 0x63, 0xa0, 0x03, 0x9f, 0x61, 0xa1, 0xba, 0xa2, 0xd4, 0xb7, 0xd6, 0xc9, 0x03, 0xf8, 0xd3,
0xf7, 0xce, 0x6d, 0x74, 0x63, 0x9f, 0x79, 0x13, 0x51, 0x55, 0x89, 0x6e, 0x16, 0x92, 0xcd, 0x31,
0x88, 0x19, 0x93, 0x78, 0x2e, 0xd3, 0x0a, 0xad, 0x29, 0x6e, 0x1e, 0x4e, 0xc6, 0x32, 0x81, 0x9e,
0x45, 0x8e, 0x40, 0xda, 0x50, 0xbc, 0x59, 0x30, 0xd3, 0xcd, 0x13, 0x1c, 0x85, 0xcc, 0x91, 0x28,
0xe8, 0xd2, 0x4c, 0x37, 0xa7, 0x78, 0xa6, 0x9b, 0x7a, 0x1e, 0x82, 0xd6, 0x95, 0x65, 0x0e, 0x25,
0xcf, 0xc1, 0x52, 0xa7, 0x4d, 0xe6, 0xfc, 0x02, 0xc7, 0x85, 0x5d, 0x01, 0xa5, 0xbc, 0x93, 0x97,
0x7c, 0x1d, 0x4e, 0x84, 0x3d, 0xe6, 0x1d, 0x24, 0x4c, 0x1b, 0x47, 0xfc, 0x2d, 0x7a, 0xf4, 0x0f,
0xb5, 0x2c, 0x0b, 0x2a, 0xc9, 0x24, 0x9d, 0x08, 0xf7, 0x91, 0xa1, 0x9c, 0x06, 0x4a, 0x2d, 0xd1,
0xa3, 0x4d, 0xa5, 0x9b, 0xc3, 0x48, 0x96, 0xa3, 0xba, 0xd7, 0xba, 0x65, 0xcb, 0x2a, 0x65, 0x06,
0x21, 0x07, 0x60, 0x8e, 0x9c, 0x68, 0x88, 0x32, 0x64, 0x4e, 0x1f, 0x8b, 0x4e, 0xb6, 0xa2, 0x34,
0x77, 0xb0, 0xc8, 0x36, 0xfc, 0x13, 0x69, 0x64, 0x36, 0x09, 0x5d, 0x55, 0xf2, 0xe2, 0xe2, 0xee,
0xc6, 0x97, 0x4b, 0xd3, 0xb8, 0xb8, 0x34, 0x8d, 0x6f, 0x97, 0xa6, 0xf1, 0xf1, 0xca, 0x5c, 0xb8,
0xb8, 0x32, 0x17, 0xbe, 0x5e, 0x99, 0x0b, 0xaf, 0x57, 0xf3, 0xbf, 0x50, 0xb7, 0xaa, 0xfe, 0x07,
0x5b, 0x3f, 0x02, 0x00, 0x00, 0xff, 0xff, 0x63, 0xd8, 0x76, 0xf5, 0xb4, 0x07, 0x00, 0x00,
// 766 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x55, 0xcb, 0x6e, 0xd3, 0x40,
0x14, 0xad, 0x93, 0x26, 0x69, 0x6e, 0x48, 0x1f, 0x53, 0x10, 0x43, 0x41, 0x96, 0x15, 0x55, 0x28,
0xaa, 0x20, 0x81, 0x3e, 0x36, 0x2c, 0x40, 0x6a, 0x4b, 0xa5, 0x42, 0xa5, 0x20, 0xb7, 0x08, 0x89,
0x9d, 0x1d, 0x4f, 0xda, 0x21, 0x13, 0x8f, 0xe5, 0x19, 0xa3, 0x66, 0xc1, 0x92, 0x0d, 0x2b, 0x7e,
0x80, 0xff, 0x61, 0xd9, 0x25, 0x4b, 0xd4, 0xfe, 0x01, 0xe2, 0x03, 0x90, 0x67, 0x9c, 0xd4, 0x71,
0xdd, 0x14, 0x09, 0x96, 0x3e, 0xf7, 0x9c, 0xe3, 0x33, 0xf7, 0x7a, 0xae, 0xa1, 0x19, 0xf4, 0x8f,
0xdb, 0x8c, 0xba, 0xed, 0xc0, 0x6d, 0x0f, 0xb8, 0x47, 0x58, 0x3b, 0x08, 0xb9, 0xe4, 0xa2, 0xcd,
0x78, 0xd7, 0x61, 0x42, 0xf2, 0x90, 0xb4, 0x14, 0x82, 0xea, 0x8e, 0x3f, 0x94, 0xc3, 0x80, 0xb4,
0x14, 0x6d, 0xe5, 0xc1, 0x31, 0xe7, 0xc7, 0x8c, 0x68, 0xba, 0x1b, 0xf5, 0xda, 0x42, 0x86, 0x51,
0x57, 0x6a, 0xf2, 0xca, 0xea, 0x75, 0xb6, 0xea, 0x41, 0x68, 0x56, 0xe3, 0x97, 0x01, 0xd0, 0x71,
0x3f, 0x90, 0xae, 0xdc, 0xf7, 0x7b, 0x1c, 0xcd, 0x43, 0x81, 0x7a, 0xd8, 0xb0, 0x8c, 0x66, 0xd5,
0x2e, 0x50, 0x0f, 0x3d, 0x84, 0x79, 0xae, 0xaa, 0x47, 0xc3, 0x80, 0xbc, 0x0d, 0x99, 0xc0, 0x05,
0xab, 0xd8, 0xac, 0xda, 0x19, 0x14, 0x3d, 0x85, 0x8a, 0x47, 0xa4, 0x43, 0x99, 0xc0, 0x45, 0xcb,
0x68, 0xd6, 0xd6, 0xef, 0xb6, 0x74, 0xb8, 0xd6, 0x28, 0x5c, 0xeb, 0x50, 0x85, 0xb3, 0x47, 0x3c,
0xb4, 0x05, 0xd5, 0x90, 0x30, 0x47, 0x52, 0xee, 0x0b, 0x3c, 0x6b, 0x15, 0x95, 0x68, 0xe2, 0x80,
0x2d, 0x3b, 0xa9, 0xdb, 0x97, 0x4c, 0x84, 0xa1, 0x22, 0x7c, 0x1a, 0x04, 0x44, 0xe2, 0x92, 0x8a,
0x39, 0x7a, 0x44, 0x4d, 0x58, 0x38, 0x71, 0xc4, 0xbe, 0xef, 0xf2, 0xc8, 0xf7, 0x0e, 0xa8, 0xdf,
0x17, 0xb8, 0x6c, 0x19, 0xcd, 0x39, 0x3b, 0x0b, 0x37, 0xb6, 0xa1, 0xae, 0xcf, 0xbc, 0x9b, 0x64,
0x49, 0xc5, 0x37, 0xfe, 0x2e, 0x7e, 0xa3, 0x03, 0x35, 0xed, 0xa1, 0x2c, 0x91, 0x09, 0x40, 0xf5,
0x2b, 0xf6, 0x77, 0x63, 0x93, 0xb8, 0x49, 0x29, 0x04, 0x59, 0x50, 0xe3, 0x91, 0x1c, 0x13, 0x74,
0x17, 0xd3, 0x50, 0xe3, 0x13, 0x2c, 0xa4, 0x0c, 0xd5, 0x34, 0x36, 0xa0, 0x92, 0x58, 0x28, 0xc7,
0xda, 0xfa, 0xbd, 0x4c, 0x83, 0x2e, 0x27, 0x67, 0x8f, 0x98, 0x68, 0x0b, 0xe6, 0x46, 0xb6, 0xea,
0x35, 0x53, 0x55, 0x63, 0x6a, 0xe3, 0x8b, 0x01, 0xcb, 0x97, 0x85, 0x77, 0x54, 0x9e, 0xe8, 0x83,
0x65, 0xbf, 0x88, 0xc7, 0x30, 0x4b, 0xfd, 0x1e, 0xc7, 0x05, 0xd5, 0xa7, 0x29, 0xd6, 0x8a, 0x86,
0x36, 0xa1, 0xc4, 0xd4, 0x28, 0xf4, 0x67, 0x61, 0xe6, 0xf2, 0xc7, 0x27, 0xb6, 0x35, 0xb9, 0xf1,
0xcd, 0x80, 0xfb, 0x93, 0x61, 0x3a, 0x49, 0xce, 0xff, 0x12, 0xea, 0x05, 0xd4, 0x79, 0xda, 0x0f,
0x17, 0x6f, 0xea, 0xd3, 0x24, 0xbf, 0xf1, 0xd9, 0x00, 0x73, 0x4a, 0xbe, 0x78, 0xe0, 0xff, 0x18,
0x71, 0x35, 0x2f, 0x62, 0x35, 0x9b, 0xe3, 0x77, 0x19, 0x6e, 0x6b, 0xe9, 0x61, 0xbc, 0x26, 0x76,
0x4e, 0x48, 0xb7, 0x2f, 0xa2, 0x81, 0x40, 0x2d, 0x40, 0x6e, 0xe4, 0x7b, 0x8c, 0x78, 0x9d, 0xf1,
0x45, 0x15, 0x49, 0x9a, 0x9c, 0x0a, 0x5a, 0x83, 0xc5, 0x04, 0xb5, 0xc7, 0x77, 0xb2, 0xa0, 0xd8,
0x57, 0xf0, 0x78, 0x27, 0x24, 0xd8, 0x81, 0x33, 0xe4, 0x91, 0xd4, 0xb3, 0xad, 0xda, 0x19, 0x14,
0x3d, 0x87, 0x15, 0xbd, 0x25, 0xc4, 0x1e, 0x0f, 0xbb, 0xc4, 0x26, 0xd4, 0xf7, 0xc8, 0xe9, 0x0e,
0x8f, 0x7c, 0x49, 0x42, 0x3c, 0x6b, 0x19, 0xcd, 0x92, 0x3d, 0x85, 0x81, 0x9e, 0x01, 0xee, 0x51,
0x46, 0x72, 0xd5, 0x25, 0xa5, 0xbe, 0xb6, 0x8e, 0x1e, 0xc1, 0x12, 0xf5, 0x4e, 0x6d, 0xe2, 0x46,
0x94, 0x79, 0x23, 0x51, 0x59, 0x89, 0xae, 0x16, 0xe2, 0xcd, 0xd1, 0x8b, 0x18, 0x93, 0xe4, 0x54,
0x26, 0x15, 0x5c, 0x51, 0xdc, 0x2c, 0x1c, 0x8f, 0x65, 0x04, 0xbd, 0x0c, 0x1d, 0x41, 0x70, 0x4d,
0xf1, 0x26, 0xc1, 0x54, 0x37, 0x8f, 0xc8, 0x20, 0x60, 0x8e, 0x24, 0x02, 0xcf, 0x4d, 0x74, 0x73,
0x8c, 0xa7, 0xba, 0xa9, 0xe7, 0x21, 0x70, 0x55, 0x59, 0x66, 0x50, 0xf4, 0x0a, 0x2c, 0x75, 0xda,
0x78, 0xce, 0xaf, 0xc9, 0x30, 0xb7, 0x2b, 0xa0, 0x94, 0x37, 0xf2, 0xe2, 0xaf, 0xc3, 0x09, 0x49,
0x87, 0x79, 0x7b, 0x31, 0xd3, 0x26, 0x03, 0xfe, 0x91, 0x78, 0xf8, 0x96, 0x5a, 0x96, 0x39, 0x95,
0x78, 0x92, 0x4e, 0x48, 0x76, 0x09, 0x23, 0x72, 0x1c, 0x28, 0xb1, 0x24, 0x1e, 0xae, 0x2b, 0xdd,
0x14, 0x46, 0xbc, 0x1c, 0xd5, 0xbd, 0xd6, 0x2d, 0x9b, 0x57, 0x29, 0x53, 0x08, 0xda, 0x03, 0x73,
0xe0, 0x84, 0x7d, 0x22, 0x03, 0xe6, 0x74, 0x49, 0xde, 0xc9, 0x16, 0x94, 0xe6, 0x06, 0x16, 0xda,
0x84, 0x3b, 0xa1, 0x46, 0x26, 0x93, 0xe0, 0x45, 0x25, 0xcf, 0x2f, 0xa2, 0x27, 0xb0, 0x9c, 0x14,
0xde, 0x38, 0xa1, 0xa4, 0x5d, 0x1a, 0x38, 0xbe, 0x14, 0x78, 0x49, 0x69, 0xf2, 0x4a, 0xdb, 0x6b,
0xdf, 0xcf, 0x4d, 0xe3, 0xec, 0xdc, 0x34, 0x7e, 0x9e, 0x9b, 0xc6, 0xd7, 0x0b, 0x73, 0xe6, 0xec,
0xc2, 0x9c, 0xf9, 0x71, 0x61, 0xce, 0xbc, 0x5f, 0xcc, 0xfe, 0x74, 0xdd, 0xb2, 0xfa, 0x83, 0x6c,
0xfc, 0x09, 0x00, 0x00, 0xff, 0xff, 0x63, 0x84, 0x4f, 0x64, 0xe6, 0x07, 0x00, 0x00,
}
func (m *ObjectInfo) Marshal() (dAtA []byte, err error) {
@ -1055,6 +1064,13 @@ func (m *ObjectStoreChecksums) MarshalToSizedBuffer(dAtA []byte) (int, error) {
_ = i
var l int
_ = l
if m.ReindexParticipants != 0 {
i = encodeVarintLocalstore(dAtA, i, uint64(m.ReindexParticipants))
i--
dAtA[i] = 0x1
i--
dAtA[i] = 0x88
}
if m.ReindexDeletedObjects != 0 {
i = encodeVarintLocalstore(dAtA, i, uint64(m.ReindexDeletedObjects))
i--
@ -1385,6 +1401,9 @@ func (m *ObjectStoreChecksums) Size() (n int) {
if m.ReindexDeletedObjects != 0 {
n += 2 + sovLocalstore(uint64(m.ReindexDeletedObjects))
}
if m.ReindexParticipants != 0 {
n += 2 + sovLocalstore(uint64(m.ReindexParticipants))
}
return n
}
@ -2791,6 +2810,25 @@ func (m *ObjectStoreChecksums) Unmarshal(dAtA []byte) error {
break
}
}
case 17:
if wireType != 0 {
return fmt.Errorf("proto: wrong wireType = %d for field ReindexParticipants", wireType)
}
m.ReindexParticipants = 0
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowLocalstore
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
m.ReindexParticipants |= int32(b&0x7F) << shift
if b < 0x80 {
break
}
}
default:
iNdEx = preIndex
skippy, err := skipLocalstore(dAtA[iNdEx:])

View file

@ -64,4 +64,5 @@ message ObjectStoreChecksums {
int32 linksErase = 14;
int32 marketplaceForceReindexCounter = 15;
int32 reindexDeletedObjects = 16;
int32 reindexParticipants = 17;
}