From 2e260446d57d5a94410f04766bdd5d695e384d49 Mon Sep 17 00:00:00 2001 From: Guillaume Louvigny Date: Thu, 4 Jun 2020 11:30:05 +0200 Subject: [PATCH] feat: added tracer to orbitdb Signed-off-by: Guillaume Louvigny --- go/pkg/bertyprotocol/orbitdb.go | 5 +++ .../orbitdb_signed_entry_accesscontroller.go | 35 ++++++++++++++++--- go/pkg/bertyprotocol/service.go | 2 ++ 3 files changed, 37 insertions(+), 5 deletions(-) diff --git a/go/pkg/bertyprotocol/orbitdb.go b/go/pkg/bertyprotocol/orbitdb.go index e6821b40b0..c6365af6ae 100644 --- a/go/pkg/bertyprotocol/orbitdb.go +++ b/go/pkg/bertyprotocol/orbitdb.go @@ -14,6 +14,7 @@ import ( coreapi "github.com/ipfs/interface-go-ipfs-core" "github.com/libp2p/go-libp2p-core/crypto" "github.com/pkg/errors" + "go.opentelemetry.io/otel/api/trace" "go.uber.org/zap" ) @@ -70,6 +71,10 @@ func newBertyOrbitDB(ctx context.Context, ipfs coreapi.CoreAPI, acc DeviceKeysto options.Logger = zap.NewNop() } + if options.Tracer == nil { + options.Tracer = trace.NoopTracer{} + } + ks := &BertySignedKeyStore{} options.Keystore = ks options.Identity = &identityprovider.Identity{} diff --git a/go/pkg/bertyprotocol/orbitdb_signed_entry_accesscontroller.go b/go/pkg/bertyprotocol/orbitdb_signed_entry_accesscontroller.go index cc5e06f147..fc70b84e1e 100644 --- a/go/pkg/bertyprotocol/orbitdb_signed_entry_accesscontroller.go +++ b/go/pkg/bertyprotocol/orbitdb_signed_entry_accesscontroller.go @@ -4,6 +4,8 @@ import ( "context" "encoding/json" + "sync" + "berty.tech/berty/v2/go/pkg/errcode" logac "berty.tech/go-ipfs-log/accesscontroller" "berty.tech/go-ipfs-log/identityprovider" @@ -13,11 +15,28 @@ import ( cid "github.com/ipfs/go-cid" mh "github.com/multiformats/go-multihash" "github.com/pkg/errors" + "go.uber.org/zap" ) type simpleAccessController struct { events.EventEmitter allowedKeys map[string][]string + logger *zap.Logger + lock sync.RWMutex +} + +func (o *simpleAccessController) SetLogger(logger *zap.Logger) { + o.lock.Lock() + defer o.lock.Unlock() + + o.logger = logger +} + +func (o *simpleAccessController) Logger() *zap.Logger { + o.lock.RLock() + defer o.lock.RUnlock() + + return o.logger } func (o *simpleAccessController) Grant(ctx context.Context, capability string, keyID string) error { @@ -84,14 +103,20 @@ func (o *simpleAccessController) CanAppend(e logac.LogEntry, p identityprovider. } // NewSimpleAccessController Returns a non configurable access controller -func NewSimpleAccessController(_ context.Context, _ iface.BaseOrbitDB, options accesscontroller.ManifestParams) (accesscontroller.Interface, error) { - if options == nil { +func NewSimpleAccessController(_ context.Context, _ iface.BaseOrbitDB, params accesscontroller.ManifestParams, options ...accesscontroller.Option) (accesscontroller.Interface, error) { + if params == nil { return &simpleAccessController{}, errors.New("an options object is required") } - return &simpleAccessController{ - allowedKeys: options.GetAllAccess(), - }, nil + ac := &simpleAccessController{ + allowedKeys: params.GetAllAccess(), + } + + for _, o := range options { + o(ac) + } + + return ac, nil } var _ accesscontroller.Interface = &simpleAccessController{} diff --git a/go/pkg/bertyprotocol/service.go b/go/pkg/bertyprotocol/service.go index 26bb333b38..ec1aecd43d 100644 --- a/go/pkg/bertyprotocol/service.go +++ b/go/pkg/bertyprotocol/service.go @@ -7,6 +7,7 @@ import ( "berty.tech/berty/v2/go/internal/ipfsutil" "berty.tech/berty/v2/go/internal/tinder" + "berty.tech/berty/v2/go/internal/tracer" "berty.tech/berty/v2/go/pkg/bertytypes" "berty.tech/berty/v2/go/pkg/errcode" orbitdb "berty.tech/go-orbit-db" @@ -120,6 +121,7 @@ func New(opts Opts) (Service, error) { Cache: opts.OrbitCache, Directory: &orbitDirectory, Logger: opts.Logger.Named("odb"), + Tracer: tracer.New("berty-orbitdb"), }) if err != nil { return nil, errcode.TODO.Wrap(err)