From a5e5d1e8f549d9be151ee7cbe484cb942edecfe4 Mon Sep 17 00:00:00 2001 From: Anatolii Smolianinov Date: Fri, 24 Jan 2025 13:32:01 +0100 Subject: [PATCH 1/9] GO-4943 use any.org domain --- core/publish/service.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/core/publish/service.go b/core/publish/service.go index dc1c9f702..de00232b3 100644 --- a/core/publish/service.go +++ b/core/publish/service.go @@ -39,9 +39,9 @@ const CName = "common.core.publishservice" const ( membershipLimit = 100 << 20 defaultLimit = 10 << 20 - inviteLinkUrlTemplate = "https://invite.any.coop/%s#%s" - memberUrlTemplate = "https://%s.coop" - defaultUrlTemplate = "https://any.coop/%s" + inviteLinkUrlTemplate = "https://invite.any.org/%s#%s" + memberUrlTemplate = "https://%s.org" + defaultUrlTemplate = "https://any.org/%s" indexFileName = "index.json.gz" ) From 4a9a5f7b974f63ebda6f2097bb0c5cb81ec4609a Mon Sep 17 00:00:00 2001 From: Anatolii Smolianinov Date: Fri, 24 Jan 2025 13:42:35 +0100 Subject: [PATCH 2/9] GO-4943 fix invite links --- core/publish/service.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/publish/service.go b/core/publish/service.go index de00232b3..f0223d28e 100644 --- a/core/publish/service.go +++ b/core/publish/service.go @@ -39,7 +39,7 @@ const CName = "common.core.publishservice" const ( membershipLimit = 100 << 20 defaultLimit = 10 << 20 - inviteLinkUrlTemplate = "https://invite.any.org/%s#%s" + inviteLinkUrlTemplate = "https://invite.any.coop/%s#%s" memberUrlTemplate = "https://%s.org" defaultUrlTemplate = "https://any.org/%s" indexFileName = "index.json.gz" From 2c1a9b8817795082f7eac1d7dd0d930f170b8d4c Mon Sep 17 00:00:00 2001 From: Anatolii Smolianinov Date: Fri, 24 Jan 2025 15:53:29 +0100 Subject: [PATCH 3/9] GO-4943 use any.coop for free users --- core/publish/service.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/publish/service.go b/core/publish/service.go index f0223d28e..ac2593ae3 100644 --- a/core/publish/service.go +++ b/core/publish/service.go @@ -41,7 +41,7 @@ const ( defaultLimit = 10 << 20 inviteLinkUrlTemplate = "https://invite.any.coop/%s#%s" memberUrlTemplate = "https://%s.org" - defaultUrlTemplate = "https://any.org/%s" + defaultUrlTemplate = "https://any.coop/%s" indexFileName = "index.json.gz" ) From 8b2d2bee418cbbf0e30a8620e7c3893b5719af8e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 24 Jan 2025 20:18:51 +0100 Subject: [PATCH 4/9] Bump google.golang.org/grpc from 1.69.4 to 1.70.0 (#2042) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 8 ++++---- go.sum | 20 ++++++++++---------- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/go.mod b/go.mod index 86242e144..65f4c3dd8 100644 --- a/go.mod +++ b/go.mod @@ -110,7 +110,7 @@ require ( golang.org/x/net v0.34.0 golang.org/x/oauth2 v0.25.0 golang.org/x/text v0.21.0 - google.golang.org/grpc v1.69.4 + google.golang.org/grpc v1.70.0 gopkg.in/Graylog2/go-gelf.v2 v2.0.0-20180125164251-1832d8546a9f gopkg.in/natefinch/lumberjack.v2 v2.2.1 gopkg.in/yaml.v3 v3.0.1 @@ -186,7 +186,7 @@ require ( github.com/gogs/chardet v0.0.0-20211120154057-b7413eaefb8f // indirect github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0 // indirect github.com/golang/geo v0.0.0-20210211234256-740aa86cb551 // indirect - github.com/golang/glog v1.2.2 // indirect + github.com/golang/glog v1.2.3 // indirect github.com/golang/protobuf v1.5.4 // indirect github.com/google/flatbuffers v1.12.1 // indirect github.com/google/go-querystring v1.1.0 // indirect @@ -289,8 +289,8 @@ require ( golang.org/x/term v0.28.0 // indirect golang.org/x/time v0.9.0 // indirect golang.org/x/tools v0.29.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20241104194629-dd2ea8efbc28 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20241021214115-324edc3d5d38 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20241202173237-19429a94021a // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a // indirect google.golang.org/protobuf v1.36.2 // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect diff --git a/go.sum b/go.sum index 0d3d50d6b..ded421a5c 100644 --- a/go.sum +++ b/go.sum @@ -415,8 +415,8 @@ github.com/golang/geo v0.0.0-20200319012246-673a6f80352d/go.mod h1:QZ0nwyI2jOfgR github.com/golang/geo v0.0.0-20210211234256-740aa86cb551 h1:gtexQ/VGyN+VVFRXSFiguSNcXmS6rkKT+X7FdIrTtfo= github.com/golang/geo v0.0.0-20210211234256-740aa86cb551/go.mod h1:QZ0nwyI2jOfgRAoBvP+ab5aRr7c9x7lhGEJrKvBwjWI= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= -github.com/golang/glog v1.2.2 h1:1+mZ9upx1Dh6FmUTFR1naJ77miKiXgALjWOZ3NVFPmY= -github.com/golang/glog v1.2.2/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwmO+w= +github.com/golang/glog v1.2.3 h1:oDTdz9f5VGVVNGu/Q7UXKWYsD0873HXLHdJUNBsSEKM= +github.com/golang/glog v1.2.3/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwmO+w= github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= @@ -1141,10 +1141,10 @@ go.opentelemetry.io/otel v1.32.0 h1:WnBN+Xjcteh0zdk01SVqV55d/m62NJLJdIyb4y/WO5U= go.opentelemetry.io/otel v1.32.0/go.mod h1:00DCVSB0RQcnzlwyTfqtxSm+DRr9hpYrHjNGiBHVQIg= go.opentelemetry.io/otel/metric v1.32.0 h1:xV2umtmNcThh2/a/aCP+h64Xx5wsj8qqnkYZktzNa0M= go.opentelemetry.io/otel/metric v1.32.0/go.mod h1:jH7CIbbK6SH2V2wE16W05BHCtIDzauciCRLoc/SyMv8= -go.opentelemetry.io/otel/sdk v1.31.0 h1:xLY3abVHYZ5HSfOg3l2E5LUj2Cwva5Y7yGxnSW9H5Gk= -go.opentelemetry.io/otel/sdk v1.31.0/go.mod h1:TfRbMdhvxIIr/B2N2LQW2S5v9m3gOQ/08KsbbO5BPT0= -go.opentelemetry.io/otel/sdk/metric v1.31.0 h1:i9hxxLJF/9kkvfHppyLL55aW7iIJz4JjxTeYusH7zMc= -go.opentelemetry.io/otel/sdk/metric v1.31.0/go.mod h1:CRInTMVvNhUKgSAMbKyTMxqOBC0zgyxzW55lZzX43Y8= +go.opentelemetry.io/otel/sdk v1.32.0 h1:RNxepc9vK59A8XsgZQouW8ue8Gkb4jpWtJm9ge5lEG4= +go.opentelemetry.io/otel/sdk v1.32.0/go.mod h1:LqgegDBjKMmb2GC6/PrTnteJG39I8/vJCAP9LlJXEjU= +go.opentelemetry.io/otel/sdk/metric v1.32.0 h1:rZvFnvmvawYb0alrYkjraqJq0Z4ZUJAiyYCU9snn1CU= +go.opentelemetry.io/otel/sdk/metric v1.32.0/go.mod h1:PWeZlq0zt9YkYAp3gjKZ0eicRYvOh1Gd+X99x6GHpCQ= go.opentelemetry.io/otel/trace v1.32.0 h1:WIC9mYrXf8TmY/EXuULKc8hR17vE+Hjv2cssQDe03fM= go.opentelemetry.io/otel/trace v1.32.0/go.mod h1:+i4rkvCraA+tG6AzwloGaCtkx53Fa+L+V8e9a7YvhT8= go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= @@ -1603,8 +1603,8 @@ google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6D google.golang.org/genproto v0.0.0-20210108203827-ffc7fda8c3d7/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210126160654-44e461bb6506/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210226172003-ab064af71705/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto/googleapis/api v0.0.0-20241104194629-dd2ea8efbc28 h1:M0KvPgPmDZHPlbRbaNU1APr28TvwvvdUPlSv7PUvy8g= -google.golang.org/genproto/googleapis/api v0.0.0-20241104194629-dd2ea8efbc28/go.mod h1:dguCy7UOdZhTvLzDyt15+rOrawrpM4q7DD9dQ1P11P4= +google.golang.org/genproto/googleapis/api v0.0.0-20241202173237-19429a94021a h1:OAiGFfOiA0v9MRYsSidp3ubZaBnteRUyn3xB2ZQ5G/E= +google.golang.org/genproto/googleapis/api v0.0.0-20241202173237-19429a94021a/go.mod h1:jehYqy3+AhJU9ve55aNOaSml7wUXjF9x6z2LcCfpAhY= google.golang.org/genproto/googleapis/rpc v0.0.0-20241021214115-324edc3d5d38 h1:zciRKQ4kBpFgpfC5QQCVtnnNAcLIqweL7plyZRQHVpI= google.golang.org/genproto/googleapis/rpc v0.0.0-20241021214115-324edc3d5d38/go.mod h1:GX3210XPVPUjJbTUbvwI8f2IpZDMZuPJWDzDuebbviI= google.golang.org/grpc v1.12.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= @@ -1630,8 +1630,8 @@ google.golang.org/grpc v1.32.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= google.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8= google.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= -google.golang.org/grpc v1.69.4 h1:MF5TftSMkd8GLw/m0KM6V8CMOCY6NZ1NQDPGFgbTt4A= -google.golang.org/grpc v1.69.4/go.mod h1:vyjdE6jLBI76dgpDojsFGNaHlxdjXN9ghpnd2o7JGZ4= +google.golang.org/grpc v1.70.0 h1:pWFv03aZoHzlRKHWicjsZytKAiYCtNS0dHbXnIdq7jQ= +google.golang.org/grpc v1.70.0/go.mod h1:ofIJqVKDXx/JiXrwr2IG4/zwdH9txy3IlF40RmcJSQw= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= From 3d74f6d659f45dd5ec15f689ffbe7db0516b604c Mon Sep 17 00:00:00 2001 From: Roman Khafizianov Date: Fri, 24 Jan 2025 21:47:06 +0100 Subject: [PATCH 5/9] GO-4948 applink limited scope: add missing methods --- core/auth.go | 30 ++++++++++++++++++------------ core/grpc_events.go | 4 ++-- 2 files changed, 20 insertions(+), 14 deletions(-) diff --git a/core/auth.go b/core/auth.go index 2dddf9580..ba1cc4cdb 100644 --- a/core/auth.go +++ b/core/auth.go @@ -20,14 +20,18 @@ import ( ) var limitedScopeMethods = map[string]struct{}{ - "ObjectSearch": {}, - "ObjectShow": {}, - "ObjectCreate": {}, - "ObjectCreateFromURL": {}, - "BlockPreview": {}, - "BlockPaste": {}, - "BroadcastPayloadEvent": {}, - "AccountSelect": {}, // need to replace with other method to get info + "ObjectSearch": {}, + "ObjectShow": {}, + "ObjectCreate": {}, + "ObjectCreateFromUrl": {}, + "BlockPreview": {}, + "BlockPaste": {}, + "BroadcastPayloadEvent": {}, + "AccountSelect": {}, + "ListenSessionEvents": {}, + "ObjectSearchSubscribe": {}, + "ObjectCreateRelationOption": {}, + // need to replace with other method to get info } func (mw *Middleware) Authorize(ctx context.Context, req interface{}, info *grpc.UnaryServerInfo, handler grpc.UnaryHandler) (resp interface{}, err error) { @@ -56,11 +60,13 @@ func (mw *Middleware) Authorize(ctx context.Context, req interface{}, info *grpc switch scope { case model.AccountAuth_Full: case model.AccountAuth_Limited: - if _, ok := limitedScopeMethods[strings.TrimPrefix(info.FullMethod, "/anytype.ClientCommands/")]; !ok { - return nil, status.Error(codes.PermissionDenied, "method not allowed for limited scope") + methodTrimmed := strings.TrimPrefix(info.FullMethod, "/anytype.ClientCommands/") + if _, ok := limitedScopeMethods[methodTrimmed]; !ok { + return nil, status.Error(codes.PermissionDenied, fmt.Sprintf("method %s not allowed for %s", methodTrimmed, scope.String())) } - default: - return nil, status.Error(codes.PermissionDenied, fmt.Sprintf("method not allowed for %s scope", scope.String())) + default + + return nil, status.Error(codes.PermissionDenied, fmt.Sprintf("method %s not allowed for %s scope", info.FullMethod, scope.String())) } resp, err = handler(ctx, req) return diff --git a/core/grpc_events.go b/core/grpc_events.go index 8e1150916..37e99f209 100644 --- a/core/grpc_events.go +++ b/core/grpc_events.go @@ -28,9 +28,9 @@ func (mw *Middleware) ListenSessionEvents(req *pb.StreamRequest, server lib.Clie } switch scope { - case model.AccountAuth_Full: + case model.AccountAuth_Full, model.AccountAuth_Limited: default: - log.Errorf("method not allowed for scope %s", scope.String()) + log.Warnf("method ListenSessionEvents not allowed for scope %s", scope.String()) return } var srv event.SessionServer From 38acf7f21c1a2d59215a6ccfbc806eba4e20706e Mon Sep 17 00:00:00 2001 From: Jannis Metrikat <120120832+jmetrikat@users.noreply.github.com> Date: Sat, 25 Jan 2025 00:00:32 +0100 Subject: [PATCH 6/9] GO-4948: Fix lint --- core/auth.go | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/core/auth.go b/core/auth.go index ba1cc4cdb..b9f42b415 100644 --- a/core/auth.go +++ b/core/auth.go @@ -64,8 +64,7 @@ func (mw *Middleware) Authorize(ctx context.Context, req interface{}, info *grpc if _, ok := limitedScopeMethods[methodTrimmed]; !ok { return nil, status.Error(codes.PermissionDenied, fmt.Sprintf("method %s not allowed for %s", methodTrimmed, scope.String())) } - default - + default: return nil, status.Error(codes.PermissionDenied, fmt.Sprintf("method %s not allowed for %s scope", info.FullMethod, scope.String())) } resp, err = handler(ctx, req) From bc8b409b84bb8fe7b89cb2f2a0d47355cf581b97 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 27 Jan 2025 12:06:09 +0100 Subject: [PATCH 7/9] Bump github.com/anyproto/any-store from 0.1.4 to 0.1.5 (#2050) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 65f4c3dd8..edb02a67a 100644 --- a/go.mod +++ b/go.mod @@ -7,7 +7,7 @@ require ( github.com/PuerkitoBio/goquery v1.10.1 github.com/VividCortex/ewma v1.2.0 github.com/adrium/goheif v0.0.0-20230113233934-ca402e77a786 - github.com/anyproto/any-store v0.1.4 + github.com/anyproto/any-store v0.1.5 github.com/anyproto/any-sync v0.5.25 github.com/anyproto/anytype-publish-server/publishclient v0.0.0-20241223184559-a5cacfe0950a github.com/anyproto/go-chash v0.1.0 diff --git a/go.sum b/go.sum index ded421a5c..3217eb406 100644 --- a/go.sum +++ b/go.sum @@ -82,8 +82,8 @@ github.com/alexbrainman/goissue34681 v0.0.0-20191006012335-3fc7a47baff5/go.mod h github.com/andybalholm/cascadia v1.3.1/go.mod h1:R4bJ1UQfqADjvDa4P6HZHLh/3OxWWEqc0Sk8XGwHqvA= github.com/andybalholm/cascadia v1.3.3 h1:AG2YHrzJIm4BZ19iwJ/DAua6Btl3IwJX+VI4kktS1LM= github.com/andybalholm/cascadia v1.3.3/go.mod h1:xNd9bqTn98Ln4DwST8/nG+H0yuB8Hmgu1YHNnWw0GeA= -github.com/anyproto/any-store v0.1.4 h1:rIxMA2XugPtdHl2S/XWnNFAMxdBysFMT9ORoJWdWQwM= -github.com/anyproto/any-store v0.1.4/go.mod h1:nbyRoJYOlvSWU1xDOrmgPP96UeoTf4eYZ9k+qqLK9k8= +github.com/anyproto/any-store v0.1.5 h1:AHOaFr9A+RhUc80MceUI9DL8vWqEW7AVB29lTqUlLL8= +github.com/anyproto/any-store v0.1.5/go.mod h1:nbyRoJYOlvSWU1xDOrmgPP96UeoTf4eYZ9k+qqLK9k8= github.com/anyproto/any-sync v0.5.25 h1:v59eQ+C7YOKC18G1PVql17fuc42Mvgb7c7Ju855tc0Q= github.com/anyproto/any-sync v0.5.25/go.mod h1:NKQZqnU7NzOOjDQc/rKmiRmRDCrARdlEnVLYwWqTcfM= github.com/anyproto/anytype-publish-server/publishclient v0.0.0-20241223184559-a5cacfe0950a h1:kSNyLHsZ40JxlRAglr85YXH2ik2LH3AH5Hd3JL42KGo= From b55fb4b595407c0fb0e82de499aa82ac4797e667 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 27 Jan 2025 12:07:06 +0100 Subject: [PATCH 8/9] Bump github.com/samber/lo from 1.47.0 to 1.49.0 (#2049) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index edb02a67a..8dc8a8fca 100644 --- a/go.mod +++ b/go.mod @@ -85,7 +85,7 @@ require ( github.com/prometheus/client_golang v1.20.5 github.com/pseudomuto/protoc-gen-doc v1.5.1 github.com/rwcarlsen/goexif v0.0.0-20190401172101-9e8deecbddbd - github.com/samber/lo v1.47.0 + github.com/samber/lo v1.49.0 github.com/sasha-s/go-deadlock v0.3.5 github.com/shirou/gopsutil/v3 v3.24.5 github.com/srwiley/oksvg v0.0.0-20221011165216-be6e8873101c diff --git a/go.sum b/go.sum index 3217eb406..60652e252 100644 --- a/go.sum +++ b/go.sum @@ -979,8 +979,8 @@ github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQD github.com/rwcarlsen/goexif v0.0.0-20190401172101-9e8deecbddbd h1:CmH9+J6ZSsIjUK3dcGsnCnO41eRBOnY12zwkn5qVwgc= github.com/rwcarlsen/goexif v0.0.0-20190401172101-9e8deecbddbd/go.mod h1:hPqNNc0+uJM6H+SuU8sEs5K5IQeKccPqeSjfgcKGgPk= github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= -github.com/samber/lo v1.47.0 h1:z7RynLwP5nbyRscyvcD043DWYoOcYRv3mV8lBeqOCLc= -github.com/samber/lo v1.47.0/go.mod h1:RmDH9Ct32Qy3gduHQuKJ3gW1fMHAnE/fAzQuf6He5cU= +github.com/samber/lo v1.49.0 h1:AGnTnQrg1jpFuwECPUSoxZCfVH5W22b605kWSry3YxM= +github.com/samber/lo v1.49.0/go.mod h1:dO6KHFzUKXgP8LDhU0oI8d2hekjXnGOu0DB8Jecxd6o= github.com/samuel/go-zookeeper v0.0.0-20190923202752-2cc03de413da/go.mod h1:gi+0XIa01GRL2eRQVjQkKGqKF3SF9vZR/HnPullcV2E= github.com/sasha-s/go-deadlock v0.3.5 h1:tNCOEEDG6tBqrNDOX35j/7hL5FcFViG6awUGROb2NsU= github.com/sasha-s/go-deadlock v0.3.5/go.mod h1:bugP6EGbdGYObIlx7pUZtWqlvo8k9H6vCBBsiChJQ5U= From f59fb4149611b5787696000468470c2de9e3e55b Mon Sep 17 00:00:00 2001 From: Mikhail Date: Mon, 27 Jan 2025 15:11:19 +0100 Subject: [PATCH 9/9] GO-2076 Fix cold start memory overuse (#2046) --- .mockery.yaml | 1 + core/block/cache/cache.go | 5 + .../mock_cache/mock_CachedObjectGetter.go | 214 ++++++++++++++++++ core/block/object/objectcache/cache.go | 5 + .../mock_objectcache/mock_Cache.go | 56 +++++ core/block/service.go | 19 ++ core/indexer/fulltext.go | 4 + core/indexer/fulltext_test.go | 8 +- core/indexer/indexer.go | 4 +- go.mod | 8 +- go.sum | 16 +- .../mock_clientspace/mock_Space.go | 56 +++++ 12 files changed, 379 insertions(+), 17 deletions(-) create mode 100644 core/block/cache/mock_cache/mock_CachedObjectGetter.go diff --git a/.mockery.yaml b/.mockery.yaml index 883c2078c..f41f5cbc1 100644 --- a/.mockery.yaml +++ b/.mockery.yaml @@ -19,6 +19,7 @@ packages: github.com/anyproto/anytype-heart/core/block/cache: interfaces: ObjectGetter: + CachedObjectGetter: ObjectGetterComponent: github.com/anyproto/anytype-heart/pkg/lib/core: interfaces: diff --git a/core/block/cache/cache.go b/core/block/cache/cache.go index fd18fae99..7373af113 100644 --- a/core/block/cache/cache.go +++ b/core/block/cache/cache.go @@ -22,6 +22,11 @@ type ObjectGetter interface { GetObjectByFullID(ctx context.Context, id domain.FullID) (sb smartblock.SmartBlock, err error) } +type CachedObjectGetter interface { + ObjectGetter + TryRemoveFromCache(ctx context.Context, objectId string) (res bool, err error) +} + func Do[t any](p ObjectGetter, objectID string, apply func(sb t) error) error { ctx := context.Background() sb, err := p.GetObject(ctx, objectID) diff --git a/core/block/cache/mock_cache/mock_CachedObjectGetter.go b/core/block/cache/mock_cache/mock_CachedObjectGetter.go new file mode 100644 index 000000000..194dc2f8b --- /dev/null +++ b/core/block/cache/mock_cache/mock_CachedObjectGetter.go @@ -0,0 +1,214 @@ +// Code generated by mockery. DO NOT EDIT. + +package mock_cache + +import ( + context "context" + + domain "github.com/anyproto/anytype-heart/core/domain" + mock "github.com/stretchr/testify/mock" + + smartblock "github.com/anyproto/anytype-heart/core/block/editor/smartblock" +) + +// MockCachedObjectGetter is an autogenerated mock type for the CachedObjectGetter type +type MockCachedObjectGetter struct { + mock.Mock +} + +type MockCachedObjectGetter_Expecter struct { + mock *mock.Mock +} + +func (_m *MockCachedObjectGetter) EXPECT() *MockCachedObjectGetter_Expecter { + return &MockCachedObjectGetter_Expecter{mock: &_m.Mock} +} + +// GetObject provides a mock function with given fields: ctx, objectID +func (_m *MockCachedObjectGetter) GetObject(ctx context.Context, objectID string) (smartblock.SmartBlock, error) { + ret := _m.Called(ctx, objectID) + + if len(ret) == 0 { + panic("no return value specified for GetObject") + } + + var r0 smartblock.SmartBlock + var r1 error + if rf, ok := ret.Get(0).(func(context.Context, string) (smartblock.SmartBlock, error)); ok { + return rf(ctx, objectID) + } + if rf, ok := ret.Get(0).(func(context.Context, string) smartblock.SmartBlock); ok { + r0 = rf(ctx, objectID) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(smartblock.SmartBlock) + } + } + + if rf, ok := ret.Get(1).(func(context.Context, string) error); ok { + r1 = rf(ctx, objectID) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// MockCachedObjectGetter_GetObject_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'GetObject' +type MockCachedObjectGetter_GetObject_Call struct { + *mock.Call +} + +// GetObject is a helper method to define mock.On call +// - ctx context.Context +// - objectID string +func (_e *MockCachedObjectGetter_Expecter) GetObject(ctx interface{}, objectID interface{}) *MockCachedObjectGetter_GetObject_Call { + return &MockCachedObjectGetter_GetObject_Call{Call: _e.mock.On("GetObject", ctx, objectID)} +} + +func (_c *MockCachedObjectGetter_GetObject_Call) Run(run func(ctx context.Context, objectID string)) *MockCachedObjectGetter_GetObject_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(string)) + }) + return _c +} + +func (_c *MockCachedObjectGetter_GetObject_Call) Return(sb smartblock.SmartBlock, err error) *MockCachedObjectGetter_GetObject_Call { + _c.Call.Return(sb, err) + return _c +} + +func (_c *MockCachedObjectGetter_GetObject_Call) RunAndReturn(run func(context.Context, string) (smartblock.SmartBlock, error)) *MockCachedObjectGetter_GetObject_Call { + _c.Call.Return(run) + return _c +} + +// GetObjectByFullID provides a mock function with given fields: ctx, id +func (_m *MockCachedObjectGetter) GetObjectByFullID(ctx context.Context, id domain.FullID) (smartblock.SmartBlock, error) { + ret := _m.Called(ctx, id) + + if len(ret) == 0 { + panic("no return value specified for GetObjectByFullID") + } + + var r0 smartblock.SmartBlock + var r1 error + if rf, ok := ret.Get(0).(func(context.Context, domain.FullID) (smartblock.SmartBlock, error)); ok { + return rf(ctx, id) + } + if rf, ok := ret.Get(0).(func(context.Context, domain.FullID) smartblock.SmartBlock); ok { + r0 = rf(ctx, id) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(smartblock.SmartBlock) + } + } + + if rf, ok := ret.Get(1).(func(context.Context, domain.FullID) error); ok { + r1 = rf(ctx, id) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// MockCachedObjectGetter_GetObjectByFullID_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'GetObjectByFullID' +type MockCachedObjectGetter_GetObjectByFullID_Call struct { + *mock.Call +} + +// GetObjectByFullID is a helper method to define mock.On call +// - ctx context.Context +// - id domain.FullID +func (_e *MockCachedObjectGetter_Expecter) GetObjectByFullID(ctx interface{}, id interface{}) *MockCachedObjectGetter_GetObjectByFullID_Call { + return &MockCachedObjectGetter_GetObjectByFullID_Call{Call: _e.mock.On("GetObjectByFullID", ctx, id)} +} + +func (_c *MockCachedObjectGetter_GetObjectByFullID_Call) Run(run func(ctx context.Context, id domain.FullID)) *MockCachedObjectGetter_GetObjectByFullID_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(domain.FullID)) + }) + return _c +} + +func (_c *MockCachedObjectGetter_GetObjectByFullID_Call) Return(sb smartblock.SmartBlock, err error) *MockCachedObjectGetter_GetObjectByFullID_Call { + _c.Call.Return(sb, err) + return _c +} + +func (_c *MockCachedObjectGetter_GetObjectByFullID_Call) RunAndReturn(run func(context.Context, domain.FullID) (smartblock.SmartBlock, error)) *MockCachedObjectGetter_GetObjectByFullID_Call { + _c.Call.Return(run) + return _c +} + +// TryRemoveFromCache provides a mock function with given fields: ctx, objectId +func (_m *MockCachedObjectGetter) TryRemoveFromCache(ctx context.Context, objectId string) (bool, error) { + ret := _m.Called(ctx, objectId) + + if len(ret) == 0 { + panic("no return value specified for TryRemoveFromCache") + } + + var r0 bool + var r1 error + if rf, ok := ret.Get(0).(func(context.Context, string) (bool, error)); ok { + return rf(ctx, objectId) + } + if rf, ok := ret.Get(0).(func(context.Context, string) bool); ok { + r0 = rf(ctx, objectId) + } else { + r0 = ret.Get(0).(bool) + } + + if rf, ok := ret.Get(1).(func(context.Context, string) error); ok { + r1 = rf(ctx, objectId) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// MockCachedObjectGetter_TryRemoveFromCache_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'TryRemoveFromCache' +type MockCachedObjectGetter_TryRemoveFromCache_Call struct { + *mock.Call +} + +// TryRemoveFromCache is a helper method to define mock.On call +// - ctx context.Context +// - objectId string +func (_e *MockCachedObjectGetter_Expecter) TryRemoveFromCache(ctx interface{}, objectId interface{}) *MockCachedObjectGetter_TryRemoveFromCache_Call { + return &MockCachedObjectGetter_TryRemoveFromCache_Call{Call: _e.mock.On("TryRemoveFromCache", ctx, objectId)} +} + +func (_c *MockCachedObjectGetter_TryRemoveFromCache_Call) Run(run func(ctx context.Context, objectId string)) *MockCachedObjectGetter_TryRemoveFromCache_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(string)) + }) + return _c +} + +func (_c *MockCachedObjectGetter_TryRemoveFromCache_Call) Return(res bool, err error) *MockCachedObjectGetter_TryRemoveFromCache_Call { + _c.Call.Return(res, err) + return _c +} + +func (_c *MockCachedObjectGetter_TryRemoveFromCache_Call) RunAndReturn(run func(context.Context, string) (bool, error)) *MockCachedObjectGetter_TryRemoveFromCache_Call { + _c.Call.Return(run) + return _c +} + +// NewMockCachedObjectGetter creates a new instance of MockCachedObjectGetter. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations. +// The first argument is typically a *testing.T value. +func NewMockCachedObjectGetter(t interface { + mock.TestingT + Cleanup(func()) +}) *MockCachedObjectGetter { + mock := &MockCachedObjectGetter{} + mock.Mock.Test(t) + + t.Cleanup(func() { mock.AssertExpectations(t) }) + + return mock +} diff --git a/core/block/object/objectcache/cache.go b/core/block/object/objectcache/cache.go index 8eca07abf..56cabaaa3 100644 --- a/core/block/object/objectcache/cache.go +++ b/core/block/object/objectcache/cache.go @@ -52,6 +52,7 @@ type Cache interface { GetObjectWithTimeout(ctx context.Context, id string) (sb smartblock.SmartBlock, err error) DoLockedIfNotExists(objectID string, proc func() error) error Remove(ctx context.Context, objectID string) error + TryRemove(objectId string) (bool, error) CloseBlocks() Close(ctx context.Context) error @@ -155,6 +156,10 @@ func (c *objectCache) Remove(ctx context.Context, objectID string) error { return err } +func (c *objectCache) TryRemove(objectId string) (bool, error) { + return c.cache.TryRemove(objectId) +} + func (c *objectCache) GetObjectWithTimeout(ctx context.Context, id string) (sb smartblock.SmartBlock, err error) { if _, ok := ctx.Deadline(); !ok { var cancel context.CancelFunc diff --git a/core/block/object/objectcache/mock_objectcache/mock_Cache.go b/core/block/object/objectcache/mock_objectcache/mock_Cache.go index 8b77256e0..751b1614d 100644 --- a/core/block/object/objectcache/mock_objectcache/mock_Cache.go +++ b/core/block/object/objectcache/mock_objectcache/mock_Cache.go @@ -785,6 +785,62 @@ func (_c *MockCache_Remove_Call) RunAndReturn(run func(context.Context, string) return _c } +// TryRemove provides a mock function with given fields: objectId +func (_m *MockCache) TryRemove(objectId string) (bool, error) { + ret := _m.Called(objectId) + + if len(ret) == 0 { + panic("no return value specified for TryRemove") + } + + var r0 bool + var r1 error + if rf, ok := ret.Get(0).(func(string) (bool, error)); ok { + return rf(objectId) + } + if rf, ok := ret.Get(0).(func(string) bool); ok { + r0 = rf(objectId) + } else { + r0 = ret.Get(0).(bool) + } + + if rf, ok := ret.Get(1).(func(string) error); ok { + r1 = rf(objectId) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// MockCache_TryRemove_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'TryRemove' +type MockCache_TryRemove_Call struct { + *mock.Call +} + +// TryRemove is a helper method to define mock.On call +// - objectId string +func (_e *MockCache_Expecter) TryRemove(objectId interface{}) *MockCache_TryRemove_Call { + return &MockCache_TryRemove_Call{Call: _e.mock.On("TryRemove", objectId)} +} + +func (_c *MockCache_TryRemove_Call) Run(run func(objectId string)) *MockCache_TryRemove_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(string)) + }) + return _c +} + +func (_c *MockCache_TryRemove_Call) Return(_a0 bool, _a1 error) *MockCache_TryRemove_Call { + _c.Call.Return(_a0, _a1) + return _c +} + +func (_c *MockCache_TryRemove_Call) RunAndReturn(run func(string) (bool, error)) *MockCache_TryRemove_Call { + _c.Call.Return(run) + return _c +} + // NewMockCache creates a new instance of MockCache. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations. // The first argument is typically a *testing.T value. func NewMockCache(t interface { diff --git a/core/block/service.go b/core/block/service.go index 1c10e9c95..c6f8df027 100644 --- a/core/block/service.go +++ b/core/block/service.go @@ -159,6 +159,25 @@ func (s *Service) GetObject(ctx context.Context, objectID string) (sb smartblock return s.GetObjectByFullID(ctx, domain.FullID{SpaceID: spaceID, ObjectID: objectID}) } +func (s *Service) TryRemoveFromCache(ctx context.Context, objectId string) (res bool, err error) { + spaceId, err := s.resolver.ResolveSpaceID(objectId) + if err != nil { + return false, fmt.Errorf("resolve space: %w", err) + } + spc, err := s.spaceService.Get(ctx, spaceId) + if err != nil { + return false, fmt.Errorf("get space: %w", err) + } + mutex.WithLock(s.openedObjs.lock, func() any { + _, contains := s.openedObjs.objects[objectId] + if !contains { + res, err = spc.TryRemove(objectId) + } + return nil + }) + return +} + func (s *Service) GetObjectByFullID(ctx context.Context, id domain.FullID) (sb smartblock.SmartBlock, err error) { spc, err := s.spaceService.Get(ctx, id.SpaceID) if err != nil { diff --git a/core/indexer/fulltext.go b/core/indexer/fulltext.go index 2d56fb747..79013fbc1 100644 --- a/core/indexer/fulltext.go +++ b/core/indexer/fulltext.go @@ -234,6 +234,10 @@ func (i *indexer) prepareSearchDocument(ctx context.Context, id string) (docs [] return nil }) + _, cacheErr := i.picker.TryRemoveFromCache(ctx, id) + if cacheErr != nil { + log.With("objectId", id).Errorf("object cache remove: %v", err) + } return docs, err } diff --git a/core/indexer/fulltext_test.go b/core/indexer/fulltext_test.go index 76bddddf9..4f456028c 100644 --- a/core/indexer/fulltext_test.go +++ b/core/indexer/fulltext_test.go @@ -35,7 +35,7 @@ import ( type IndexerFixture struct { *indexer - pickerFx *mock_cache.MockObjectGetter + pickerFx *mock_cache.MockCachedObjectGetter storageServiceFx *mock_storage.MockClientStorage objectStore *objectstore.StoreFixture sourceFx *mock_source.MockService @@ -82,13 +82,14 @@ func NewIndexerFixture(t *testing.T) *IndexerFixture { indxr.fileStore = fileStore indxr.ftsearch = objectStore.FullText indexerFx.ftsearch = indxr.ftsearch - indexerFx.pickerFx = mock_cache.NewMockObjectGetter(t) + indexerFx.pickerFx = mock_cache.NewMockCachedObjectGetter(t) indxr.picker = indexerFx.pickerFx indxr.spaceIndexers = make(map[string]*spaceIndexer) indxr.forceFt = make(chan struct{}) indxr.config = &config.Config{NetworkMode: pb.RpcAccount_LocalOnly} indxr.runCtx, indxr.runCtxCancel = context.WithCancel(ctx) - // go indxr.indexBatchLoop() + + indexerFx.pickerFx.EXPECT().TryRemoveFromCache(mock.Anything, mock.Anything).Maybe().Return(true, nil) return indexerFx } @@ -105,6 +106,7 @@ func TestPrepareSearchDocument_Success(t *testing.T) { ), ))) indexerFx.pickerFx.EXPECT().GetObject(mock.Anything, mock.Anything).Return(smartTest, nil) + indexerFx.pickerFx.EXPECT().TryRemoveFromCache(mock.Anything, "objectId1").Return(true, nil) docs, err := indexerFx.prepareSearchDocument(context.Background(), "objectId1") assert.NoError(t, err) diff --git a/core/indexer/indexer.go b/core/indexer/indexer.go index 3de996091..85c056d31 100644 --- a/core/indexer/indexer.go +++ b/core/indexer/indexer.go @@ -52,7 +52,7 @@ type indexer struct { store objectstore.ObjectStore fileStore filestore.FileStore source source.Service - picker cache.ObjectGetter + picker cache.CachedObjectGetter ftsearch ftsearch.FTSearch storageService storage.ClientStorage @@ -77,7 +77,7 @@ func (i *indexer) Init(a *app.App) (err error) { i.btHash = a.MustComponent("builtintemplate").(Hasher) i.fileStore = app.MustComponent[filestore.FileStore](a) i.ftsearch = app.MustComponent[ftsearch.FTSearch](a) - i.picker = app.MustComponent[cache.ObjectGetter](a) + i.picker = app.MustComponent[cache.CachedObjectGetter](a) i.runCtx, i.runCtxCancel = context.WithCancel(context.Background()) i.forceFt = make(chan struct{}) i.config = app.MustComponent[*config.Config](a) diff --git a/go.mod b/go.mod index 8dc8a8fca..24d874690 100644 --- a/go.mod +++ b/go.mod @@ -8,7 +8,7 @@ require ( github.com/VividCortex/ewma v1.2.0 github.com/adrium/goheif v0.0.0-20230113233934-ca402e77a786 github.com/anyproto/any-store v0.1.5 - github.com/anyproto/any-sync v0.5.25 + github.com/anyproto/any-sync v0.5.26 github.com/anyproto/anytype-publish-server/publishclient v0.0.0-20241223184559-a5cacfe0950a github.com/anyproto/go-chash v0.1.0 github.com/anyproto/go-naturaldate/v2 v2.0.2-0.20230524105841-9829cfd13438 @@ -52,9 +52,9 @@ require ( github.com/hbagdi/go-unsplash v0.0.0-20230414214043-474fc02c9119 github.com/huandu/skiplist v1.2.1 github.com/improbable-eng/grpc-web v0.15.0 - github.com/ipfs/boxo v0.26.0 + github.com/ipfs/boxo v0.27.0 github.com/ipfs/go-block-format v0.2.0 - github.com/ipfs/go-cid v0.4.1 + github.com/ipfs/go-cid v0.5.0 github.com/ipfs/go-datastore v0.6.0 github.com/ipfs/go-ds-flatfs v0.5.1 github.com/ipfs/go-ipld-format v0.6.0 @@ -218,7 +218,7 @@ require ( github.com/klauspost/cpuid/v2 v2.2.9 // indirect github.com/leodido/go-urn v1.4.0 // indirect github.com/libp2p/go-buffer-pool v0.1.0 // indirect - github.com/libp2p/go-libp2p v0.38.1 // indirect + github.com/libp2p/go-libp2p v0.38.2 // indirect github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 // indirect github.com/mailru/easyjson v0.7.6 // indirect github.com/mattn/go-colorable v0.1.13 // indirect diff --git a/go.sum b/go.sum index 60652e252..e977dd88c 100644 --- a/go.sum +++ b/go.sum @@ -84,8 +84,8 @@ github.com/andybalholm/cascadia v1.3.3 h1:AG2YHrzJIm4BZ19iwJ/DAua6Btl3IwJX+VI4kk github.com/andybalholm/cascadia v1.3.3/go.mod h1:xNd9bqTn98Ln4DwST8/nG+H0yuB8Hmgu1YHNnWw0GeA= github.com/anyproto/any-store v0.1.5 h1:AHOaFr9A+RhUc80MceUI9DL8vWqEW7AVB29lTqUlLL8= github.com/anyproto/any-store v0.1.5/go.mod h1:nbyRoJYOlvSWU1xDOrmgPP96UeoTf4eYZ9k+qqLK9k8= -github.com/anyproto/any-sync v0.5.25 h1:v59eQ+C7YOKC18G1PVql17fuc42Mvgb7c7Ju855tc0Q= -github.com/anyproto/any-sync v0.5.25/go.mod h1:NKQZqnU7NzOOjDQc/rKmiRmRDCrARdlEnVLYwWqTcfM= +github.com/anyproto/any-sync v0.5.26 h1:JWcR/RFGQ22CYWrdh2Ain6uEWNePtYHCLs+LXsm8hhU= +github.com/anyproto/any-sync v0.5.26/go.mod h1:Ljftoz6/mCM/2wP2tK9H1/jtVAxfgqzYplBA4MbiUs0= github.com/anyproto/anytype-publish-server/publishclient v0.0.0-20241223184559-a5cacfe0950a h1:kSNyLHsZ40JxlRAglr85YXH2ik2LH3AH5Hd3JL42KGo= github.com/anyproto/anytype-publish-server/publishclient v0.0.0-20241223184559-a5cacfe0950a/go.mod h1:4fkueCZcGniSMXkrwESO8zzERrh/L7WHimRNWecfGM0= github.com/anyproto/badger/v4 v4.2.1-0.20240110160636-80743fa3d580 h1:Ba80IlCCxkZ9H1GF+7vFu/TSpPvbpDCxXJ5ogc4euYc= @@ -584,14 +584,14 @@ github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLf github.com/influxdata/influxdb1-client v0.0.0-20191209144304-8bf82d3c094d/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo= github.com/ipfs/bbloom v0.0.4 h1:Gi+8EGJ2y5qiD5FbsbpX/TMNcJw8gSqr7eyjHa4Fhvs= github.com/ipfs/bbloom v0.0.4/go.mod h1:cS9YprKXpoZ9lT0n/Mw/a6/aFV6DTjTLYHeA+gyqMG0= -github.com/ipfs/boxo v0.26.0 h1:RRxEon7rJMy8ScVaTLncSZ5/nA6majYhRSbzc80snO8= -github.com/ipfs/boxo v0.26.0/go.mod h1:iHyc9cjoF7/zoiKVY65d2fBWRhoS2zx4cMk8hKgqrac= +github.com/ipfs/boxo v0.27.0 h1:8zu0zQrCXSUMn/0vnXy6oUppscoxstK7hQqiGFwUcjY= +github.com/ipfs/boxo v0.27.0/go.mod h1:qEIRrGNr0bitDedTCzyzBHxzNWqYmyuHgK8LG9Q83EM= github.com/ipfs/go-bitfield v1.1.0 h1:fh7FIo8bSwaJEh6DdTWbCeZ1eqOaOkKFI74SCnsWbGA= github.com/ipfs/go-bitfield v1.1.0/go.mod h1:paqf1wjq/D2BBmzfTVFlJQ9IlFOZpg422HL0HqsGWHU= github.com/ipfs/go-block-format v0.2.0 h1:ZqrkxBA2ICbDRbK8KJs/u0O3dlp6gmAuuXUJNiW1Ycs= github.com/ipfs/go-block-format v0.2.0/go.mod h1:+jpL11nFx5A/SPpsoBn6Bzkra/zaArfSmsknbPMYgzM= -github.com/ipfs/go-cid v0.4.1 h1:A/T3qGvxi4kpKWWcPC/PgbvDA2bjVLO7n4UeVwnbs/s= -github.com/ipfs/go-cid v0.4.1/go.mod h1:uQHwDeX4c6CtyrFwdqyhpNcxVewur1M7l7fNU7LKwZk= +github.com/ipfs/go-cid v0.5.0 h1:goEKKhaGm0ul11IHA7I6p1GmKz8kEYniqFopaB5Otwg= +github.com/ipfs/go-cid v0.5.0/go.mod h1:0L7vmeNXpQpUS9vt+yEARkJ8rOg43DF3iPgn4GIN0mk= github.com/ipfs/go-datastore v0.5.0/go.mod h1:9zhEApYMTl17C8YDp7JmU7sQZi2/wqiYh73hakZ90Bk= github.com/ipfs/go-datastore v0.6.0 h1:JKyz+Gvz1QEZw0LsX1IBn+JFCJQH4SJVFtM4uWU0Myk= github.com/ipfs/go-datastore v0.6.0/go.mod h1:rt5M3nNbSO/8q1t4LNkLyUwRs8HupMeN/8O4Vn9YAT8= @@ -699,8 +699,8 @@ github.com/libp2p/go-buffer-pool v0.1.0 h1:oK4mSFcQz7cTQIfqbe4MIj9gLW+mnanjyFtc6 github.com/libp2p/go-buffer-pool v0.1.0/go.mod h1:N+vh8gMqimBzdKkSMVuydVDq+UV5QTWy5HSiZacSbPg= github.com/libp2p/go-flow-metrics v0.2.0 h1:EIZzjmeOE6c8Dav0sNv35vhZxATIXWZg6j/C08XmmDw= github.com/libp2p/go-flow-metrics v0.2.0/go.mod h1:st3qqfu8+pMfh+9Mzqb2GTiwrAGjIPszEjZmtksN8Jc= -github.com/libp2p/go-libp2p v0.38.1 h1:aT1K7IFWi+gZUsQGCzTHBTlKX5QVZQOahng8DnOr6tQ= -github.com/libp2p/go-libp2p v0.38.1/go.mod h1:QWV4zGL3O9nXKdHirIC59DoRcZ446dfkjbOJ55NEWFo= +github.com/libp2p/go-libp2p v0.38.2 h1:9SZQDOCi82A25An4kx30lEtr6kGTxrtoaDkbs5xrK5k= +github.com/libp2p/go-libp2p v0.38.2/go.mod h1:QWV4zGL3O9nXKdHirIC59DoRcZ446dfkjbOJ55NEWFo= github.com/libp2p/go-libp2p-asn-util v0.4.1 h1:xqL7++IKD9TBFMgnLPZR6/6iYhawHKHl950SO9L6n94= github.com/libp2p/go-libp2p-asn-util v0.4.1/go.mod h1:d/NI6XZ9qxw67b4e+NgpQexCIiFYJjErASrYW4PFDN8= github.com/libp2p/go-libp2p-record v0.2.0 h1:oiNUOCWno2BFuxt3my4i1frNrt7PerzB3queqa1NkQ0= diff --git a/space/clientspace/mock_clientspace/mock_Space.go b/space/clientspace/mock_clientspace/mock_Space.go index a4bff49ae..d601e8001 100644 --- a/space/clientspace/mock_clientspace/mock_Space.go +++ b/space/clientspace/mock_clientspace/mock_Space.go @@ -1651,6 +1651,62 @@ func (_c *MockSpace_TreeBuilder_Call) RunAndReturn(run func() objecttreebuilder. return _c } +// TryRemove provides a mock function with given fields: objectId +func (_m *MockSpace) TryRemove(objectId string) (bool, error) { + ret := _m.Called(objectId) + + if len(ret) == 0 { + panic("no return value specified for TryRemove") + } + + var r0 bool + var r1 error + if rf, ok := ret.Get(0).(func(string) (bool, error)); ok { + return rf(objectId) + } + if rf, ok := ret.Get(0).(func(string) bool); ok { + r0 = rf(objectId) + } else { + r0 = ret.Get(0).(bool) + } + + if rf, ok := ret.Get(1).(func(string) error); ok { + r1 = rf(objectId) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// MockSpace_TryRemove_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'TryRemove' +type MockSpace_TryRemove_Call struct { + *mock.Call +} + +// TryRemove is a helper method to define mock.On call +// - objectId string +func (_e *MockSpace_Expecter) TryRemove(objectId interface{}) *MockSpace_TryRemove_Call { + return &MockSpace_TryRemove_Call{Call: _e.mock.On("TryRemove", objectId)} +} + +func (_c *MockSpace_TryRemove_Call) Run(run func(objectId string)) *MockSpace_TryRemove_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(string)) + }) + return _c +} + +func (_c *MockSpace_TryRemove_Call) Return(_a0 bool, _a1 error) *MockSpace_TryRemove_Call { + _c.Call.Return(_a0, _a1) + return _c +} + +func (_c *MockSpace_TryRemove_Call) RunAndReturn(run func(string) (bool, error)) *MockSpace_TryRemove_Call { + _c.Call.Return(run) + return _c +} + // WaitMandatoryObjects provides a mock function with given fields: ctx func (_m *MockSpace) WaitMandatoryObjects(ctx context.Context) error { ret := _m.Called(ctx)