refactor and cleanup a bit

This commit is contained in:
A.Unger
2021-04-20 14:55:48 +02:00
parent 7446c4de12
commit 60280a3f28
2 changed files with 15 additions and 5 deletions

View File

@@ -76,6 +76,9 @@ type Runtime struct {
// Config combines all available configuration parts.
type Config struct {
// Mode is mostly used whenever we need to run an extension. The technical debt this introduces is in regards of
// what it does. Supervised (0) loads configuration from a unified config file because of known limitations of Viper; whereas
// Unsupervised (1) MUST parse config from all known sources.
Mode Mode
File string

View File

@@ -114,12 +114,18 @@ func NewService(options ...Option) (*Service, error) {
// Start an rpc service. By default the package scope Start will run all default extensions to provide with a working
// oCIS instance.
func Start(o ...Option) error {
// Start the runtime. Most likely this was called ONLY by the `ocis server` subcommand, but since we cannot protect
// from the caller, the previous statement holds truth.
// prepare a new rpc Service struct.
s, err := NewService(o...)
if err != nil {
return err
}
// notify goroutines that they are running on supervised mode
s.cfg.Mode = ociscfg.SUPERVISED
setMicroLogger()
// Start creates its own supervisor. Running services under `ocis server` will create its own supervision tree.
@@ -129,15 +135,12 @@ func Start(o ...Option) error {
},
})
// reva storages have their own logging. For consistency sake the top level logging will be cascade to reva.
// reva storages have their own logging. For consistency sake the top level logging will cascade to reva.
s.cfg.Storage.Log.Color = s.cfg.Log.Color
s.cfg.Storage.Log.Level = s.cfg.Log.Level
s.cfg.Storage.Log.Pretty = s.cfg.Log.Pretty
s.cfg.Storage.Log.File = s.cfg.Log.File
// notify goroutines that they are running on supervised mode
s.cfg.Mode = ociscfg.SUPERVISED
if err := rpc.Register(s); err != nil {
if s != nil {
s.Log.Fatal().Err(err)
@@ -193,8 +196,12 @@ func Start(o ...Option) error {
// Start indicates the Service Controller to start a new supervised service as an OS thread.
func (s *Service) Start(name string, reply *int) error {
// RPC calls to a Service object will allow for parsing config. Mind that since the runtime is running on a different
// machine, the configuration needs to be present in the given machine. RPC does not yet allow providing a config
// during transport.
s.cfg.Mode = ociscfg.UNSUPERVISED
swap := deepcopy.Copy(s.cfg)
swap.(*ociscfg.Config).Mode = ociscfg.UNSUPERVISED
if _, ok := s.ServicesRegistry[name]; ok {
*reply = 0
s.serviceToken[name] = append(s.serviceToken[name], s.Supervisor.Add(s.ServicesRegistry[name](swap.(*ociscfg.Config))))