Skip to content

Commit

Permalink
feat: add 'node context' for jaeger
Browse files Browse the repository at this point in the history
  • Loading branch information
moul committed Nov 30, 2018
1 parent c624fcd commit 949b992
Show file tree
Hide file tree
Showing 56 changed files with 1,075 additions and 517 deletions.
10 changes: 5 additions & 5 deletions client/react-native/gomobile/core/bot.go
Expand Up @@ -8,15 +8,15 @@ import (
func IsBotRunning() bool {
defer panicHandler()
waitDaemon(accountName)
currentAccount, _ := account.Get(accountName)
currentAccount, _ := account.Get(rootContext, accountName)

return currentAccount.BotRunning
}

func StartBot() error {
defer panicHandler()
waitDaemon(accountName)
currentAccount, _ := account.Get(accountName)
currentAccount, _ := account.Get(rootContext, accountName)

if currentAccount.BotRunning {
return errors.New("bot is already started")
Expand All @@ -29,13 +29,13 @@ func StartBot() error {
// return errors.Wrap(err, "state DB save failed")
// }

return currentAccount.StartBot()
return currentAccount.StartBot(rootContext)
}

func StopBot() error {
defer panicHandler()
waitDaemon(accountName)
currentAccount, _ := account.Get(accountName)
currentAccount, _ := account.Get(rootContext, accountName)

if !currentAccount.BotRunning {
return errors.New("bot is already stopped")
Expand All @@ -48,5 +48,5 @@ func StopBot() error {
// return errors.Wrap(err, "state DB save failed")
// }

return currentAccount.StopBot()
return currentAccount.StopBot(rootContext)
}
32 changes: 14 additions & 18 deletions client/react-native/gomobile/core/core.go
@@ -1,6 +1,7 @@
package core

import (
"context"
"encoding/json"
"fmt"
"net"
Expand All @@ -16,6 +17,7 @@ import (
var (
accountName = ""
appConfig *account.StateDB
rootContext = context.Background()
)

func logger() *zap.Logger {
Expand All @@ -29,7 +31,7 @@ func panicHandler() {
if accountName == "" {
return
}
a, err := account.Get(accountName)
a, err := account.Get(rootContext, accountName)
if err != nil {
return
}
Expand All @@ -56,18 +58,16 @@ func Panic() {
}

func GetPort() (int, error) {

defer panicHandler()

a, err := account.Get(accountName)
a, err := account.Get(rootContext, accountName)
if err != nil {
return 0, err
}
return strconv.Atoi(strings.Split(a.GQLBind, ":")[1])
}

func Initialize(loggerNative Logger) error {

defer panicHandler()

if err := setupLogger("debug", loggerNative); err != nil {
Expand All @@ -80,10 +80,9 @@ func Initialize(loggerNative Logger) error {
}

func ListAccounts(datastorePath string) (string, error) {

defer panicHandler()

accounts, err := account.List(datastorePath)
accounts, err := account.List(rootContext, datastorePath)
if err != nil {
return "", err
}
Expand Down Expand Up @@ -118,12 +117,11 @@ func initOrRestoreAppState(datastorePath string) error {
}

func Start(nickname, datastorePath string, loggerNative Logger) error {

defer panicHandler()

accountName = nickname

a, _ := account.Get(nickname)
a, _ := account.Get(rootContext, nickname)
if a != nil {
// daemon already started, no errors to return
return nil
Expand All @@ -139,10 +137,9 @@ func Start(nickname, datastorePath string, loggerNative Logger) error {
}

func Restart() error {

defer panicHandler()

currentAccount, _ := account.Get(accountName)
currentAccount, _ := account.Get(rootContext, accountName)
if currentAccount != nil {
currentAccount.ErrChan() <- nil
}
Expand All @@ -152,14 +149,13 @@ func Restart() error {
}

func DropDatabase(datastorePath string) error {

defer panicHandler()

currentAccount, err := account.Get(accountName)
currentAccount, err := account.Get(rootContext, accountName)
if err != nil {
return err
}
err = currentAccount.DropDatabase()
err = currentAccount.DropDatabase(rootContext)
if err != nil {
return err
}
Expand All @@ -181,7 +177,7 @@ func run(nickname, datastorePath string, loggerNative Logger) {
}

func waitDaemon(nickname string) {
currentAccount, _ := account.Get(nickname)
currentAccount, _ := account.Get(rootContext, nickname)
if currentAccount == nil || currentAccount.GQLBind == "" {
logger().Debug("waiting for daemon to start")
time.Sleep(time.Second)
Expand Down Expand Up @@ -231,17 +227,17 @@ func daemon(nickname, datastorePath string, loggerNative Logger) error {
accountOptions = append(accountOptions, account.WithBot())
}

a, err = account.New(accountOptions...)
a, err = account.New(rootContext, accountOptions...)
if err != nil {
return err
}
defer account.Delete(a)
defer account.Delete(rootContext, a)

err = a.Open()
err = a.Open(rootContext)
if err != nil {
return err
}
defer a.Close()
defer a.Close(rootContext)

if appConfig.LocalGRPC {
err := StartLocalGRPC()
Expand Down
2 changes: 1 addition & 1 deletion client/react-native/gomobile/core/local_grpc.go
Expand Up @@ -67,7 +67,7 @@ func GetLocalGRPCInfos() string {
func StartLocalGRPC() error {
defer panicHandler()
waitDaemon(accountName)
currentAccount, _ := account.Get(accountName)
currentAccount, _ := account.Get(rootContext, accountName)

if localListener != nil {
return errors.New("local gRPC is already running")
Expand Down
4 changes: 2 additions & 2 deletions client/react-native/gomobile/core/network.go
Expand Up @@ -76,7 +76,7 @@ func GetNetworkConfig() string {
func UpdateNetworkConfig(jsonConf string) error {
defer panicHandler()
waitDaemon(accountName)
currentAccount, _ := account.Get(accountName)
currentAccount, _ := account.Get(rootContext, accountName)

var newNetworkConfig networkConfig
if err := json.Unmarshal([]byte(jsonConf), &newNetworkConfig); err != nil {
Expand All @@ -88,7 +88,7 @@ func UpdateNetworkConfig(jsonConf string) error {
if err != nil {
return err
}
if err := currentAccount.UpdateP2PNetwork(netConf); err != nil {
if err := currentAccount.UpdateP2PNetwork(rootContext, netConf); err != nil {
return err
}

Expand Down
5 changes: 3 additions & 2 deletions core/Makefile
Expand Up @@ -31,7 +31,8 @@ EXT_LDFLAGS ?= -ldflags "-X berty.tech/core.GitSha=$(GIT_SHA) -X berty.tech/core
RUN_DAEMON_OPTS ?= --log-level=debug
TEST_PATHS ?= ./...
TEST_OPTS ?= -v
TEST_CMD ?= go test -test.timeout 3m $(TEST_OPTS) $(TEST_PATHS)
TEST_TIMEOUT ?= 3m
TEST_CMD ?= go test -test.timeout $(TEST_TIMEOUT) $(TEST_OPTS) $(TEST_PATHS)
PROTOC ?= protoc
GQLGEN ?= gqlgen
GIN_OPTS ?= --immediate --port=2999 --appPort=1337 --build=./cmd/berty --excludeDir vendor
Expand Down Expand Up @@ -88,7 +89,7 @@ integration: install

.PHONY: lint
lint: generate
golangci-lint run $(TEST_PATHS)
$(BUILD_ENV) golangci-lint run $(TEST_PATHS)

.PHONY: generate
generate: .generated
Expand Down
9 changes: 9 additions & 0 deletions core/api/protobuf/graphql/logger.gen.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

22 changes: 16 additions & 6 deletions core/bot/bot.go
Expand Up @@ -8,16 +8,24 @@ import (

"berty.tech/core/api/client"
"berty.tech/core/api/node"
"berty.tech/core/pkg/tracing"
opentracing "github.com/opentracing/opentracing-go"
)

type Bot struct {
client *client.Client
handlers []Handler
client *client.Client
handlers []Handler
rootContext context.Context
}

func New(opts ...Option) (*Bot, error) {
func New(ctx context.Context, opts ...Option) (*Bot, error) {
var span opentracing.Span
span, ctx = tracing.EnterFunc(ctx)
defer span.Finish()

bot := Bot{
handlers: make([]Handler, 0),
handlers: make([]Handler, 0),
rootContext: ctx,
}

for _, opt := range opts {
Expand All @@ -34,8 +42,10 @@ func New(opts ...Option) (*Bot, error) {
}

func (b *Bot) Start() error {
ctx := context.Background()
stream, err := b.client.Node().EventStream(ctx, &node.EventStreamInput{})
span, _ := tracing.EnterFunc(b.rootContext)
defer span.Finish()

stream, err := b.client.Node().EventStream(b.rootContext, &node.EventStreamInput{})
if err != nil {
return err
}
Expand Down
4 changes: 2 additions & 2 deletions core/cmd/berty/client.go
Expand Up @@ -74,7 +74,7 @@ func clientServerStream(opts *clientOptions) error {
}

if jaegerAddr != "" {
tracer, closer, err := jaeger.InitTracer(jaegerAddr, "berty-client")
tracer, closer, err := jaeger.InitTracer(jaegerAddr, jaegerName+":client")
if err != nil {
return err
}
Expand Down Expand Up @@ -145,7 +145,7 @@ func clientUnary(opts *clientOptions) error {
}

if jaegerAddr != "" {
tracer, closer, err := jaeger.InitTracer(jaegerAddr, "berty-client")
tracer, closer, err := jaeger.InitTracer(jaegerAddr, jaegerName+":client")
if err != nil {
return err
}
Expand Down
22 changes: 10 additions & 12 deletions core/cmd/berty/daemon.go
Expand Up @@ -2,6 +2,7 @@ package main

import (
"bufio"
"context"
"fmt"
"io"
"os"
Expand Down Expand Up @@ -38,12 +39,10 @@ type daemonOptions struct {
SwarmKeyPath string `mapstructure:"swarm-key"`

nickname string `mapstructure:"nickname"`
password string `mapstructure:"password"`
}

func daemonSetupFlags(flags *pflag.FlagSet, opts *daemonOptions) {
flags.StringVar(&opts.nickname, "nickname", "berty-daemon", "set account nickname")
flags.StringVar(&opts.password, "password", "secure", "set account password")
flags.BoolVar(&opts.dropDatabase, "drop-database", false, "drop database to force a reinitialization")
flags.BoolVar(&opts.hideBanner, "hide-banner", false, "hide banner")
flags.BoolVar(&opts.initOnly, "init-only", false, "stop after node initialization (useful for integration tests")
Expand All @@ -57,7 +56,7 @@ func daemonSetupFlags(flags *pflag.FlagSet, opts *daemonOptions) {
flags.StringVar(&opts.gqlBind, "gql-bind", ":8700", "Bind graphql api")
flags.StringVarP(&opts.identity, "p2p-identity", "i", "", "set p2p identity")
flags.StringSliceVar(&opts.bootstrap, "bootstrap", p2p.DefaultBootstrap, "boostrap peers")
// flags.StringSliceVar(&opts.bindP2P, "bind-p2p", []string{"/ip4/0.0.0.0/tcp/0", "/ble/00000000-0000-0000-0000-000000000000"}, "p2p listening address")
// flags.StringSliceVar(&opts.bindP2P, "bind-p2p", []string{"/ip4/0.0.0.0/tcp/0", "/ble/00000000-0000-0000-0000-000000000000"}, "p2p listening address")
flags.StringSliceVar(&opts.bindP2P, "bind-p2p", []string{"/ip4/0.0.0.0/tcp/0"}, "p2p listening address")
flags.StringSliceVar(&opts.transportP2P, "transport-p2p", []string{"default"}, "p2p transport to enable")
_ = viper.BindPFlags(flags)
Expand All @@ -84,30 +83,29 @@ func newDaemonCommand() *cobra.Command {
}

func daemon(opts *daemonOptions) error {
ctx := context.Background()
var err error
a := &account.Account{}

defer a.PanicHandler()

accountOptions := account.Options{
account.WithJaegerAddrName(jaegerAddr, jaegerName+":node"),
account.WithRing(ring),
account.WithName(opts.nickname),
account.WithPassphrase(opts.password),
account.WithPassphrase(opts.sql.key),
account.WithDatabase(&account.DatabaseOptions{
Path: "/tmp",
Drop: opts.dropDatabase,
JaegerAddr: jaegerAddr,
Path: "/tmp",
Drop: opts.dropDatabase,
}),
account.WithBanner(banner.Quote()),
account.WithGrpcServer(&account.GrpcServerOptions{
Bind: opts.grpcBind,
Interceptors: true,
JaegerAddr: jaegerAddr,
}),
account.WithGQL(&account.GQLOptions{
Bind: opts.gqlBind,
Interceptors: true,
JaegerAddr: jaegerAddr,
}),
}
if !opts.noP2P {
Expand Down Expand Up @@ -149,14 +147,14 @@ func daemon(opts *daemonOptions) error {
if opts.initOnly {
accountOptions = append(accountOptions, account.WithInitOnly())
}
a, err = account.New(accountOptions...)
a, err = account.New(ctx, accountOptions...)
if err != nil {
return err
}

defer a.Close()
defer a.Close(ctx)

err = a.Open()
err = a.Open(ctx)
if err != nil {
return err
}
Expand Down

0 comments on commit 949b992

Please sign in to comment.