From 58543a1415801c4bb1891ae5babc699331f3d2e3 Mon Sep 17 00:00:00 2001 From: "A.Unger" Date: Thu, 4 Mar 2021 11:51:36 +0100 Subject: [PATCH] correct usage of suture --- accounts/pkg/command/root.go | 2 +- accounts/pkg/command/server.go | 3 ++- accounts/pkg/service/v0/service.go | 19 +++---------------- ocis/pkg/runtime/runtime.go | 1 + 4 files changed, 7 insertions(+), 18 deletions(-) diff --git a/accounts/pkg/command/root.go b/accounts/pkg/command/root.go index 8957f25fbc..ae56aa388c 100644 --- a/accounts/pkg/command/root.go +++ b/accounts/pkg/command/root.go @@ -139,7 +139,7 @@ func NewSutureService(ctx context.Context, cfg *config.Config) SutureService { func (s SutureService) Serve() { if err := Execute(s.cfg); err != nil { - panic(err) + return } } diff --git a/accounts/pkg/command/server.go b/accounts/pkg/command/server.go index a4452ee044..88948d1ca1 100644 --- a/accounts/pkg/command/server.go +++ b/accounts/pkg/command/server.go @@ -125,7 +125,8 @@ func Server(cfg *config.Config) *cli.Command { handler, err := svc.New(svc.Logger(logger), svc.Config(cfg)) if err != nil { - logger.Fatal().Err(err).Msg("could not initialize service handler") + logger.Error().Err(err).Msg("handler init") + return err } { diff --git a/accounts/pkg/service/v0/service.go b/accounts/pkg/service/v0/service.go index e43f463eb5..dae86a5d25 100644 --- a/accounts/pkg/service/v0/service.go +++ b/accounts/pkg/service/v0/service.go @@ -57,24 +57,11 @@ func New(opts ...Option) (s *Service, err error) { repo: createMetadataStorage(cfg, logger), } - retries := 20 - var current int r := oreg.GetRegistry() if cfg.Repo.Disk.Path == "" { - for { - if current >= retries { - panic("metadata service failed to start.") - } - s, err := r.GetService("com.owncloud.storage.metadata") - if err != nil { - logger.Error().Err(err).Msg("error getting metadata service from service registry") - } - if len(s) > 0 { - break - } - logger.Info().Msg("accounts blocked waiting for metadata service to be up and running...") - time.Sleep(2 * time.Second) - current++ + if _, err := r.GetService("com.owncloud.storage.metadata"); err != nil { + logger.Error().Err(err).Msg("index: storage-metadata service not present") + return nil, err } } diff --git a/ocis/pkg/runtime/runtime.go b/ocis/pkg/runtime/runtime.go index 51102b72d6..a8af1d98c5 100644 --- a/ocis/pkg/runtime/runtime.go +++ b/ocis/pkg/runtime/runtime.go @@ -100,6 +100,7 @@ func (r *Runtime) Start() error { // - config file parsing with Viper is no longer possible as viper is not thread-safe (https://github.com/spf13/viper/issues/19) // - replace occurrences of log.Fatal in favor of panic() since the supervisor relies on panics. // - the runtime should ideally run as an rpc service one can do requests, like the good ol' pman, rest in pieces. + // - establish on suture a max number of retries before all initialization comes to a halt. // propagate reva log config to storage services r.c.Storage.Log.Level = r.c.Log.Level