Make tree creation logic more transparent
This commit is contained in:
parent
bb398cdb2a
commit
ce1273a32c
@ -10,6 +10,7 @@ import (
|
||||
"github.com/anytypeio/go-anytype-infrastructure-experiments/common/app/logger"
|
||||
"github.com/anytypeio/go-anytype-infrastructure-experiments/common/app/ocache"
|
||||
"github.com/anytypeio/go-anytype-infrastructure-experiments/common/commonspace/object/tree/objecttree"
|
||||
"github.com/anytypeio/go-anytype-infrastructure-experiments/common/commonspace/object/tree/treestorage"
|
||||
"github.com/anytypeio/go-anytype-infrastructure-experiments/common/commonspace/object/treegetter"
|
||||
"go.uber.org/zap"
|
||||
"time"
|
||||
@ -20,7 +21,10 @@ var ErrCacheObjectWithoutTree = errors.New("cache object contains no tree")
|
||||
|
||||
type ctxKey int
|
||||
|
||||
const spaceKey ctxKey = 0
|
||||
const (
|
||||
spaceKey ctxKey = iota
|
||||
treeCreateKey
|
||||
)
|
||||
|
||||
type treeCache struct {
|
||||
gcttl int
|
||||
@ -31,6 +35,7 @@ type treeCache struct {
|
||||
|
||||
type TreeCache interface {
|
||||
treegetter.TreeGetter
|
||||
treegetter.TreePutter
|
||||
GetDocument(ctx context.Context, spaceId, id string) (doc textdocument.TextDocument, err error)
|
||||
}
|
||||
|
||||
@ -75,6 +80,10 @@ func (c *treeCache) Init(a *app.App) (err error) {
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
createPayload, exists := ctx.Value(treeCreateKey).(treestorage.TreeStorageCreatePayload)
|
||||
if exists {
|
||||
return textdocument.CreateTextDocument(ctx, space, createPayload, &updateListener{}, c.account)
|
||||
}
|
||||
return textdocument.NewTextDocument(ctx, space, id, &updateListener{}, c.account)
|
||||
},
|
||||
ocache.WithLogger(log.Sugar()),
|
||||
@ -108,6 +117,16 @@ func (c *treeCache) GetTree(ctx context.Context, spaceId, id string) (tr objectt
|
||||
return
|
||||
}
|
||||
|
||||
func (c *treeCache) PutTree(ctx context.Context, spaceId string, payload treestorage.TreeStorageCreatePayload) (ot objecttree.ObjectTree, err error) {
|
||||
ctx = context.WithValue(ctx, spaceKey, spaceId)
|
||||
ctx = context.WithValue(ctx, treeCreateKey, payload)
|
||||
v, err := c.cache.Get(ctx, payload.RootRawChange.Id)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
return v.(objecttree.ObjectTree), nil
|
||||
}
|
||||
|
||||
func (c *treeCache) DeleteTree(ctx context.Context, spaceId, treeId string) (err error) {
|
||||
tr, err := c.GetTree(ctx, spaceId, treeId)
|
||||
if err != nil {
|
||||
|
||||
@ -4,11 +4,11 @@ import (
|
||||
"context"
|
||||
"github.com/anytypeio/go-anytype-infrastructure-experiments/client/clientspace"
|
||||
"github.com/anytypeio/go-anytype-infrastructure-experiments/client/clientspace/clientcache"
|
||||
"github.com/anytypeio/go-anytype-infrastructure-experiments/client/document/textdocument"
|
||||
"github.com/anytypeio/go-anytype-infrastructure-experiments/common/accountservice"
|
||||
"github.com/anytypeio/go-anytype-infrastructure-experiments/common/app"
|
||||
"github.com/anytypeio/go-anytype-infrastructure-experiments/common/app/logger"
|
||||
"github.com/anytypeio/go-anytype-infrastructure-experiments/common/commonspace/headsync"
|
||||
"github.com/anytypeio/go-anytype-infrastructure-experiments/common/commonspace/object/tree/objecttree"
|
||||
"github.com/anytypeio/go-anytype-infrastructure-experiments/common/commonspace/object/treegetter"
|
||||
)
|
||||
|
||||
@ -53,7 +53,17 @@ func (s *service) CreateDocument(spaceId string) (id string, err error) {
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
return textdocument.CreateTextDocument(context.Background(), space, s.account)
|
||||
payload := objecttree.ObjectTreeCreatePayload{
|
||||
SignKey: s.account.Account().SignKey,
|
||||
SpaceId: space.Id(),
|
||||
Identity: s.account.Account().Identity,
|
||||
}
|
||||
tree, err := space.CreateTree(context.Background(), payload)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
id = tree.Id()
|
||||
return
|
||||
}
|
||||
|
||||
func (s *service) DeleteDocument(spaceId, documentId string) (err error) {
|
||||
|
||||
@ -7,6 +7,7 @@ import (
|
||||
"github.com/anytypeio/go-anytype-infrastructure-experiments/common/commonspace"
|
||||
"github.com/anytypeio/go-anytype-infrastructure-experiments/common/commonspace/object/tree/objecttree"
|
||||
"github.com/anytypeio/go-anytype-infrastructure-experiments/common/commonspace/object/tree/synctree/updatelistener"
|
||||
"github.com/anytypeio/go-anytype-infrastructure-experiments/common/commonspace/object/tree/treestorage"
|
||||
"github.com/gogo/protobuf/proto"
|
||||
)
|
||||
|
||||
@ -27,18 +28,17 @@ type textDocument struct {
|
||||
func CreateTextDocument(
|
||||
ctx context.Context,
|
||||
space commonspace.Space,
|
||||
account accountservice.Service) (id string, err error) {
|
||||
payload := objecttree.ObjectTreeCreatePayload{
|
||||
SignKey: account.Account().SignKey,
|
||||
SpaceId: space.Id(),
|
||||
Identity: account.Account().Identity,
|
||||
}
|
||||
obj, err := space.CreateTree(ctx, payload)
|
||||
payload treestorage.TreeStorageCreatePayload,
|
||||
listener updatelistener.UpdateListener,
|
||||
account accountservice.Service) (doc TextDocument, err error) {
|
||||
t, err := space.PutTree(ctx, payload, listener)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
id = obj.Id()
|
||||
return
|
||||
return &textDocument{
|
||||
ObjectTree: t,
|
||||
account: account,
|
||||
}, nil
|
||||
}
|
||||
|
||||
func NewTextDocument(ctx context.Context, space commonspace.Space, id string, listener updatelistener.UpdateListener, account accountservice.Service) (doc TextDocument, err error) {
|
||||
|
||||
@ -1,3 +1,4 @@
|
||||
//go:generate mockgen -destination mock_confconnector/mock_confconnector.go github.com/anytypeio/go-anytype-infrastructure-experiments/common/commonspace/confconnector ConfConnector
|
||||
package confconnector
|
||||
|
||||
import (
|
||||
|
||||
@ -0,0 +1,96 @@
|
||||
// Code generated by MockGen. DO NOT EDIT.
|
||||
// Source: github.com/anytypeio/go-anytype-infrastructure-experiments/common/commonspace/confconnector (interfaces: ConfConnector)
|
||||
|
||||
// Package mock_confconnector is a generated GoMock package.
|
||||
package mock_confconnector
|
||||
|
||||
import (
|
||||
context "context"
|
||||
reflect "reflect"
|
||||
|
||||
peer "github.com/anytypeio/go-anytype-infrastructure-experiments/common/net/peer"
|
||||
pool "github.com/anytypeio/go-anytype-infrastructure-experiments/common/net/pool"
|
||||
nodeconf "github.com/anytypeio/go-anytype-infrastructure-experiments/common/nodeconf"
|
||||
gomock "github.com/golang/mock/gomock"
|
||||
)
|
||||
|
||||
// MockConfConnector is a mock of ConfConnector interface.
|
||||
type MockConfConnector struct {
|
||||
ctrl *gomock.Controller
|
||||
recorder *MockConfConnectorMockRecorder
|
||||
}
|
||||
|
||||
// MockConfConnectorMockRecorder is the mock recorder for MockConfConnector.
|
||||
type MockConfConnectorMockRecorder struct {
|
||||
mock *MockConfConnector
|
||||
}
|
||||
|
||||
// NewMockConfConnector creates a new mock instance.
|
||||
func NewMockConfConnector(ctrl *gomock.Controller) *MockConfConnector {
|
||||
mock := &MockConfConnector{ctrl: ctrl}
|
||||
mock.recorder = &MockConfConnectorMockRecorder{mock}
|
||||
return mock
|
||||
}
|
||||
|
||||
// EXPECT returns an object that allows the caller to indicate expected use.
|
||||
func (m *MockConfConnector) EXPECT() *MockConfConnectorMockRecorder {
|
||||
return m.recorder
|
||||
}
|
||||
|
||||
// Configuration mocks base method.
|
||||
func (m *MockConfConnector) Configuration() nodeconf.Configuration {
|
||||
m.ctrl.T.Helper()
|
||||
ret := m.ctrl.Call(m, "Configuration")
|
||||
ret0, _ := ret[0].(nodeconf.Configuration)
|
||||
return ret0
|
||||
}
|
||||
|
||||
// Configuration indicates an expected call of Configuration.
|
||||
func (mr *MockConfConnectorMockRecorder) Configuration() *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Configuration", reflect.TypeOf((*MockConfConnector)(nil).Configuration))
|
||||
}
|
||||
|
||||
// DialInactiveResponsiblePeers mocks base method.
|
||||
func (m *MockConfConnector) DialInactiveResponsiblePeers(arg0 context.Context, arg1 string, arg2 []string) ([]peer.Peer, error) {
|
||||
m.ctrl.T.Helper()
|
||||
ret := m.ctrl.Call(m, "DialInactiveResponsiblePeers", arg0, arg1, arg2)
|
||||
ret0, _ := ret[0].([]peer.Peer)
|
||||
ret1, _ := ret[1].(error)
|
||||
return ret0, ret1
|
||||
}
|
||||
|
||||
// DialInactiveResponsiblePeers indicates an expected call of DialInactiveResponsiblePeers.
|
||||
func (mr *MockConfConnectorMockRecorder) DialInactiveResponsiblePeers(arg0, arg1, arg2 interface{}) *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DialInactiveResponsiblePeers", reflect.TypeOf((*MockConfConnector)(nil).DialInactiveResponsiblePeers), arg0, arg1, arg2)
|
||||
}
|
||||
|
||||
// GetResponsiblePeers mocks base method.
|
||||
func (m *MockConfConnector) GetResponsiblePeers(arg0 context.Context, arg1 string) ([]peer.Peer, error) {
|
||||
m.ctrl.T.Helper()
|
||||
ret := m.ctrl.Call(m, "GetResponsiblePeers", arg0, arg1)
|
||||
ret0, _ := ret[0].([]peer.Peer)
|
||||
ret1, _ := ret[1].(error)
|
||||
return ret0, ret1
|
||||
}
|
||||
|
||||
// GetResponsiblePeers indicates an expected call of GetResponsiblePeers.
|
||||
func (mr *MockConfConnectorMockRecorder) GetResponsiblePeers(arg0, arg1 interface{}) *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetResponsiblePeers", reflect.TypeOf((*MockConfConnector)(nil).GetResponsiblePeers), arg0, arg1)
|
||||
}
|
||||
|
||||
// Pool mocks base method.
|
||||
func (m *MockConfConnector) Pool() pool.Pool {
|
||||
m.ctrl.T.Helper()
|
||||
ret := m.ctrl.Call(m, "Pool")
|
||||
ret0, _ := ret[0].(pool.Pool)
|
||||
return ret0
|
||||
}
|
||||
|
||||
// Pool indicates an expected call of Pool.
|
||||
func (mr *MockConfConnectorMockRecorder) Pool() *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Pool", reflect.TypeOf((*MockConfConnector)(nil).Pool))
|
||||
}
|
||||
@ -6,6 +6,7 @@ import (
|
||||
"github.com/anytypeio/go-anytype-infrastructure-experiments/common/app/ldiff"
|
||||
"github.com/anytypeio/go-anytype-infrastructure-experiments/common/app/ldiff/mock_ldiff"
|
||||
"github.com/anytypeio/go-anytype-infrastructure-experiments/common/app/logger"
|
||||
"github.com/anytypeio/go-anytype-infrastructure-experiments/common/commonspace/confconnector/mock_confconnector"
|
||||
"github.com/anytypeio/go-anytype-infrastructure-experiments/common/commonspace/object/acl/aclrecordproto"
|
||||
"github.com/anytypeio/go-anytype-infrastructure-experiments/common/commonspace/object/tree/treechangeproto"
|
||||
mock_treestorage "github.com/anytypeio/go-anytype-infrastructure-experiments/common/commonspace/object/tree/treestorage/mock_treestorage"
|
||||
@ -16,7 +17,6 @@ import (
|
||||
"github.com/anytypeio/go-anytype-infrastructure-experiments/common/commonspace/spacesyncproto/mock_spacesyncproto"
|
||||
"github.com/anytypeio/go-anytype-infrastructure-experiments/common/commonspace/syncstatus"
|
||||
"github.com/anytypeio/go-anytype-infrastructure-experiments/common/net/peer"
|
||||
"github.com/anytypeio/go-anytype-infrastructure-experiments/common/nodeconf/mock_nodeconf"
|
||||
"github.com/golang/mock/gomock"
|
||||
"github.com/libp2p/go-libp2p/core/sec"
|
||||
"github.com/stretchr/testify/require"
|
||||
@ -98,7 +98,7 @@ func TestDiffSyncer_Sync(t *testing.T) {
|
||||
defer ctrl.Finish()
|
||||
|
||||
diffMock := mock_ldiff.NewMockDiff(ctrl)
|
||||
connectorMock := mock_nodeconf.NewMockConfConnector(ctrl)
|
||||
connectorMock := mock_confconnector.NewMockConfConnector(ctrl)
|
||||
cacheMock := mock_treegetter.NewMockTreeGetter(ctrl)
|
||||
stMock := mock_spacestorage.NewMockSpaceStorage(ctrl)
|
||||
clientMock := mock_spacesyncproto.NewMockDRPCSpaceSyncClient(ctrl)
|
||||
|
||||
@ -10,6 +10,7 @@ import (
|
||||
|
||||
app "github.com/anytypeio/go-anytype-infrastructure-experiments/common/app"
|
||||
objecttree "github.com/anytypeio/go-anytype-infrastructure-experiments/common/commonspace/object/tree/objecttree"
|
||||
treestorage "github.com/anytypeio/go-anytype-infrastructure-experiments/common/commonspace/object/tree/treestorage"
|
||||
gomock "github.com/golang/mock/gomock"
|
||||
)
|
||||
|
||||
@ -107,6 +108,21 @@ func (mr *MockTreeGetterMockRecorder) Name() *gomock.Call {
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Name", reflect.TypeOf((*MockTreeGetter)(nil).Name))
|
||||
}
|
||||
|
||||
// PutTree mocks base method.
|
||||
func (m *MockTreeGetter) PutTree(arg0 context.Context, arg1 string, arg2 treestorage.TreeStorageCreatePayload) (objecttree.ObjectTree, error) {
|
||||
m.ctrl.T.Helper()
|
||||
ret := m.ctrl.Call(m, "PutTree", arg0, arg1, arg2)
|
||||
ret0, _ := ret[0].(objecttree.ObjectTree)
|
||||
ret1, _ := ret[1].(error)
|
||||
return ret0, ret1
|
||||
}
|
||||
|
||||
// PutTree indicates an expected call of PutTree.
|
||||
func (mr *MockTreeGetterMockRecorder) PutTree(arg0, arg1, arg2 interface{}) *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PutTree", reflect.TypeOf((*MockTreeGetter)(nil).PutTree), arg0, arg1, arg2)
|
||||
}
|
||||
|
||||
// Run mocks base method.
|
||||
func (m *MockTreeGetter) Run(arg0 context.Context) error {
|
||||
m.ctrl.T.Helper()
|
||||
|
||||
@ -5,6 +5,7 @@ import (
|
||||
"context"
|
||||
"github.com/anytypeio/go-anytype-infrastructure-experiments/common/app"
|
||||
"github.com/anytypeio/go-anytype-infrastructure-experiments/common/commonspace/object/tree/objecttree"
|
||||
"github.com/anytypeio/go-anytype-infrastructure-experiments/common/commonspace/object/tree/treestorage"
|
||||
)
|
||||
|
||||
const CName = "common.object.treegetter"
|
||||
@ -14,3 +15,7 @@ type TreeGetter interface {
|
||||
GetTree(ctx context.Context, spaceId, treeId string) (objecttree.ObjectTree, error)
|
||||
DeleteTree(ctx context.Context, spaceId, treeId string) error
|
||||
}
|
||||
|
||||
type TreePutter interface {
|
||||
PutTree(ctx context.Context, spaceId string, payload treestorage.TreeStorageCreatePayload) (objecttree.ObjectTree, error)
|
||||
}
|
||||
|
||||
@ -31,7 +31,10 @@ import (
|
||||
"time"
|
||||
)
|
||||
|
||||
var ErrSpaceClosed = errors.New("space is closed")
|
||||
var (
|
||||
ErrSpaceClosed = errors.New("space is closed")
|
||||
ErrPutNotImplemented = errors.New("put tree is not implemented")
|
||||
)
|
||||
|
||||
type SpaceCreatePayload struct {
|
||||
// SigningKey is the signing key of the owner
|
||||
@ -46,10 +49,6 @@ type SpaceCreatePayload struct {
|
||||
ReplicationKey uint64
|
||||
}
|
||||
|
||||
type spaceCtxKey int
|
||||
|
||||
const treePayloadKey spaceCtxKey = 0
|
||||
|
||||
const SpaceTypeDerived = "derived.space"
|
||||
|
||||
type SpaceDerivePayload struct {
|
||||
@ -84,10 +83,12 @@ type Space interface {
|
||||
|
||||
DeriveTree(ctx context.Context, payload objecttree.ObjectTreeCreatePayload) (objecttree.ObjectTree, error)
|
||||
CreateTree(ctx context.Context, payload objecttree.ObjectTreeCreatePayload) (objecttree.ObjectTree, error)
|
||||
PutTree(ctx context.Context, payload treestorage.TreeStorageCreatePayload, listener updatelistener.UpdateListener) (t objecttree.ObjectTree, err error)
|
||||
BuildTree(ctx context.Context, id string, listener updatelistener.UpdateListener) (objecttree.ObjectTree, error)
|
||||
DeleteTree(ctx context.Context, id string) (err error)
|
||||
|
||||
SyncStatus() syncstatus.StatusUpdater
|
||||
Storage() spacestorage.SpaceStorage
|
||||
|
||||
Close() error
|
||||
}
|
||||
@ -217,6 +218,10 @@ func (s *space) SyncStatus() syncstatus.StatusUpdater {
|
||||
return s.syncStatus
|
||||
}
|
||||
|
||||
func (s *space) Storage() spacestorage.SpaceStorage {
|
||||
return s.storage
|
||||
}
|
||||
|
||||
func (s *space) StoredIds() []string {
|
||||
return s.headSync.AllIds()
|
||||
}
|
||||
@ -230,6 +235,11 @@ func (s *space) DeriveTree(ctx context.Context, payload objecttree.ObjectTreeCre
|
||||
err = ErrSpaceClosed
|
||||
return
|
||||
}
|
||||
treePutter, conforms := s.cache.(treegetter.TreePutter)
|
||||
if !conforms {
|
||||
err = ErrPutNotImplemented
|
||||
return
|
||||
}
|
||||
root, err := objecttree.DeriveObjectTreeRoot(payload, s.aclList)
|
||||
if err != nil {
|
||||
return
|
||||
@ -239,10 +249,9 @@ func (s *space) DeriveTree(ctx context.Context, payload objecttree.ObjectTreeCre
|
||||
Changes: []*treechangeproto.RawTreeChangeWithId{root},
|
||||
Heads: []string{root.Id},
|
||||
}
|
||||
ctx = context.WithValue(ctx, treePayloadKey, res)
|
||||
// here we must be sure that the object is created synchronously,
|
||||
// so there won't be any conflicts, therefore we do it through cache
|
||||
return s.cache.GetTree(ctx, s.id, root.Id)
|
||||
return treePutter.PutTree(ctx, s.id, res)
|
||||
}
|
||||
|
||||
func (s *space) CreateTree(ctx context.Context, payload objecttree.ObjectTreeCreatePayload) (t objecttree.ObjectTree, err error) {
|
||||
@ -250,6 +259,11 @@ func (s *space) CreateTree(ctx context.Context, payload objecttree.ObjectTreeCre
|
||||
err = ErrSpaceClosed
|
||||
return
|
||||
}
|
||||
treePutter, conforms := s.cache.(treegetter.TreePutter)
|
||||
if !conforms {
|
||||
err = ErrPutNotImplemented
|
||||
return
|
||||
}
|
||||
root, err := objecttree.CreateObjectTreeRoot(payload, s.aclList)
|
||||
if err != nil {
|
||||
return
|
||||
@ -260,8 +274,31 @@ func (s *space) CreateTree(ctx context.Context, payload objecttree.ObjectTreeCre
|
||||
Changes: []*treechangeproto.RawTreeChangeWithId{root},
|
||||
Heads: []string{root.Id},
|
||||
}
|
||||
ctx = context.WithValue(ctx, treePayloadKey, res)
|
||||
return s.cache.GetTree(ctx, s.id, root.Id)
|
||||
return treePutter.PutTree(ctx, s.id, res)
|
||||
}
|
||||
|
||||
func (s *space) PutTree(ctx context.Context, payload treestorage.TreeStorageCreatePayload, listener updatelistener.UpdateListener) (t objecttree.ObjectTree, err error) {
|
||||
if s.isClosed.Load() {
|
||||
err = ErrSpaceClosed
|
||||
return
|
||||
}
|
||||
deps := synctree.BuildDeps{
|
||||
SpaceId: s.id,
|
||||
ObjectSync: s.objectSync,
|
||||
Configuration: s.configuration,
|
||||
HeadNotifiable: s.headSync,
|
||||
Listener: listener,
|
||||
AclList: s.aclList,
|
||||
SpaceStorage: s.storage,
|
||||
TreeUsage: &s.treesUsed,
|
||||
SyncStatus: s.syncStatus,
|
||||
}
|
||||
t, err = synctree.PutSyncTree(ctx, payload, deps)
|
||||
// this can happen only for derived trees, when we've synced same tree already
|
||||
if err == treestorage.ErrTreeExists {
|
||||
return synctree.BuildSyncTreeOrGetRemote(ctx, payload.RootRawChange.Id, deps)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func (s *space) BuildTree(ctx context.Context, id string, listener updatelistener.UpdateListener) (t objecttree.ObjectTree, err error) {
|
||||
@ -269,9 +306,6 @@ func (s *space) BuildTree(ctx context.Context, id string, listener updatelistene
|
||||
err = ErrSpaceClosed
|
||||
return
|
||||
}
|
||||
if payload, exists := ctx.Value(treePayloadKey).(treestorage.TreeStorageCreatePayload); exists {
|
||||
return s.putTree(ctx, payload, listener)
|
||||
}
|
||||
|
||||
deps := synctree.BuildDeps{
|
||||
SpaceId: s.id,
|
||||
@ -319,27 +353,3 @@ func (s *space) Close() error {
|
||||
|
||||
return mError.Err()
|
||||
}
|
||||
|
||||
func (s *space) putTree(ctx context.Context, payload treestorage.TreeStorageCreatePayload, listener updatelistener.UpdateListener) (t objecttree.ObjectTree, err error) {
|
||||
if s.isClosed.Load() {
|
||||
err = ErrSpaceClosed
|
||||
return
|
||||
}
|
||||
deps := synctree.BuildDeps{
|
||||
SpaceId: s.id,
|
||||
ObjectSync: s.objectSync,
|
||||
Configuration: s.configuration,
|
||||
HeadNotifiable: s.headSync,
|
||||
Listener: listener,
|
||||
AclList: s.aclList,
|
||||
SpaceStorage: s.storage,
|
||||
TreeUsage: &s.treesUsed,
|
||||
SyncStatus: s.syncStatus,
|
||||
}
|
||||
t, err = synctree.PutSyncTree(ctx, payload, deps)
|
||||
// this can happen only for derived trees, when we've synced same tree already
|
||||
if err == treestorage.ErrTreeExists {
|
||||
return synctree.BuildSyncTreeOrGetRemote(ctx, payload.RootRawChange.Id, deps)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
@ -81,6 +81,20 @@ func (mr *MockSpaceStorageProviderMockRecorder) Name() *gomock.Call {
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Name", reflect.TypeOf((*MockSpaceStorageProvider)(nil).Name))
|
||||
}
|
||||
|
||||
// SpaceExists mocks base method.
|
||||
func (m *MockSpaceStorageProvider) SpaceExists(arg0 string) bool {
|
||||
m.ctrl.T.Helper()
|
||||
ret := m.ctrl.Call(m, "SpaceExists", arg0)
|
||||
ret0, _ := ret[0].(bool)
|
||||
return ret0
|
||||
}
|
||||
|
||||
// SpaceExists indicates an expected call of SpaceExists.
|
||||
func (mr *MockSpaceStorageProviderMockRecorder) SpaceExists(arg0 interface{}) *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SpaceExists", reflect.TypeOf((*MockSpaceStorageProvider)(nil).SpaceExists), arg0)
|
||||
}
|
||||
|
||||
// SpaceStorage mocks base method.
|
||||
func (m *MockSpaceStorageProvider) SpaceStorage(arg0 string) (spacestorage.SpaceStorage, error) {
|
||||
m.ctrl.T.Helper()
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
//go:generate mockgen -destination mock_nodeconf/mock_nodeconf.go github.com/anytypeio/go-anytype-infrastructure-experiments/common/nodeconf Service,Configuration,ConfConnector
|
||||
//go:generate mockgen -destination mock_nodeconf/mock_nodeconf.go github.com/anytypeio/go-anytype-infrastructure-experiments/common/nodeconf Service,Configuration
|
||||
package nodeconf
|
||||
|
||||
import (
|
||||
|
||||
@ -1,16 +1,13 @@
|
||||
// Code generated by MockGen. DO NOT EDIT.
|
||||
// Source: github.com/anytypeio/go-anytype-infrastructure-experiments/common/nodeconf (interfaces: Service,Configuration,ConfConnector)
|
||||
// Source: github.com/anytypeio/go-anytype-infrastructure-experiments/common/nodeconf (interfaces: Service,Configuration)
|
||||
|
||||
// Package mock_nodeconf is a generated GoMock package.
|
||||
package mock_nodeconf
|
||||
|
||||
import (
|
||||
context "context"
|
||||
reflect "reflect"
|
||||
|
||||
app "github.com/anytypeio/go-anytype-infrastructure-experiments/common/app"
|
||||
peer "github.com/anytypeio/go-anytype-infrastructure-experiments/common/net/peer"
|
||||
pool "github.com/anytypeio/go-anytype-infrastructure-experiments/common/net/pool"
|
||||
nodeconf "github.com/anytypeio/go-anytype-infrastructure-experiments/common/nodeconf"
|
||||
gomock "github.com/golang/mock/gomock"
|
||||
)
|
||||
@ -117,6 +114,20 @@ func (m *MockConfiguration) EXPECT() *MockConfigurationMockRecorder {
|
||||
return m.recorder
|
||||
}
|
||||
|
||||
// Addresses mocks base method.
|
||||
func (m *MockConfiguration) Addresses() map[string][]string {
|
||||
m.ctrl.T.Helper()
|
||||
ret := m.ctrl.Call(m, "Addresses")
|
||||
ret0, _ := ret[0].(map[string][]string)
|
||||
return ret0
|
||||
}
|
||||
|
||||
// Addresses indicates an expected call of Addresses.
|
||||
func (mr *MockConfigurationMockRecorder) Addresses() *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Addresses", reflect.TypeOf((*MockConfiguration)(nil).Addresses))
|
||||
}
|
||||
|
||||
// ConsensusPeers mocks base method.
|
||||
func (m *MockConfiguration) ConsensusPeers() []string {
|
||||
m.ctrl.T.Helper()
|
||||
@ -186,84 +197,3 @@ func (mr *MockConfigurationMockRecorder) NodeIds(arg0 interface{}) *gomock.Call
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "NodeIds", reflect.TypeOf((*MockConfiguration)(nil).NodeIds), arg0)
|
||||
}
|
||||
|
||||
// MockConfConnector is a mock of ConfConnector interface.
|
||||
type MockConfConnector struct {
|
||||
ctrl *gomock.Controller
|
||||
recorder *MockConfConnectorMockRecorder
|
||||
}
|
||||
|
||||
// MockConfConnectorMockRecorder is the mock recorder for MockConfConnector.
|
||||
type MockConfConnectorMockRecorder struct {
|
||||
mock *MockConfConnector
|
||||
}
|
||||
|
||||
// NewMockConfConnector creates a new mock instance.
|
||||
func NewMockConfConnector(ctrl *gomock.Controller) *MockConfConnector {
|
||||
mock := &MockConfConnector{ctrl: ctrl}
|
||||
mock.recorder = &MockConfConnectorMockRecorder{mock}
|
||||
return mock
|
||||
}
|
||||
|
||||
// EXPECT returns an object that allows the caller to indicate expected use.
|
||||
func (m *MockConfConnector) EXPECT() *MockConfConnectorMockRecorder {
|
||||
return m.recorder
|
||||
}
|
||||
|
||||
// Configuration mocks base method.
|
||||
func (m *MockConfConnector) Configuration() nodeconf.Configuration {
|
||||
m.ctrl.T.Helper()
|
||||
ret := m.ctrl.Call(m, "Configuration")
|
||||
ret0, _ := ret[0].(nodeconf.Configuration)
|
||||
return ret0
|
||||
}
|
||||
|
||||
// Configuration indicates an expected call of Configuration.
|
||||
func (mr *MockConfConnectorMockRecorder) Configuration() *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Configuration", reflect.TypeOf((*MockConfConnector)(nil).Configuration))
|
||||
}
|
||||
|
||||
// DialInactiveResponsiblePeers mocks base method.
|
||||
func (m *MockConfConnector) DialInactiveResponsiblePeers(arg0 context.Context, arg1 string, arg2 []string) ([]peer.Peer, error) {
|
||||
m.ctrl.T.Helper()
|
||||
ret := m.ctrl.Call(m, "DialInactiveResponsiblePeers", arg0, arg1, arg2)
|
||||
ret0, _ := ret[0].([]peer.Peer)
|
||||
ret1, _ := ret[1].(error)
|
||||
return ret0, ret1
|
||||
}
|
||||
|
||||
// DialInactiveResponsiblePeers indicates an expected call of DialInactiveResponsiblePeers.
|
||||
func (mr *MockConfConnectorMockRecorder) DialInactiveResponsiblePeers(arg0, arg1, arg2 interface{}) *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DialInactiveResponsiblePeers", reflect.TypeOf((*MockConfConnector)(nil).DialInactiveResponsiblePeers), arg0, arg1, arg2)
|
||||
}
|
||||
|
||||
// GetResponsiblePeers mocks base method.
|
||||
func (m *MockConfConnector) GetResponsiblePeers(arg0 context.Context, arg1 string) ([]peer.Peer, error) {
|
||||
m.ctrl.T.Helper()
|
||||
ret := m.ctrl.Call(m, "GetResponsiblePeers", arg0, arg1)
|
||||
ret0, _ := ret[0].([]peer.Peer)
|
||||
ret1, _ := ret[1].(error)
|
||||
return ret0, ret1
|
||||
}
|
||||
|
||||
// GetResponsiblePeers indicates an expected call of GetResponsiblePeers.
|
||||
func (mr *MockConfConnectorMockRecorder) GetResponsiblePeers(arg0, arg1 interface{}) *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetResponsiblePeers", reflect.TypeOf((*MockConfConnector)(nil).GetResponsiblePeers), arg0, arg1)
|
||||
}
|
||||
|
||||
// Pool mocks base method.
|
||||
func (m *MockConfConnector) Pool() pool.Pool {
|
||||
m.ctrl.T.Helper()
|
||||
ret := m.ctrl.Call(m, "Pool")
|
||||
ret0, _ := ret[0].(pool.Pool)
|
||||
return ret0
|
||||
}
|
||||
|
||||
// Pool indicates an expected call of Pool.
|
||||
func (mr *MockConfConnectorMockRecorder) Pool() *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Pool", reflect.TypeOf((*MockConfConnector)(nil).Pool))
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user