forked from TrueCloudLab/frostfs-node
Add Inner Ring code
This commit is contained in:
parent
dadfd90dcd
commit
b7b5079934
400 changed files with 11420 additions and 8690 deletions
82
cmd/neofs-ir/main.go
Normal file
82
cmd/neofs-ir/main.go
Normal file
|
@ -0,0 +1,82 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"flag"
|
||||
"fmt"
|
||||
"os"
|
||||
|
||||
"github.com/nspcc-dev/neofs-node/misc"
|
||||
"github.com/nspcc-dev/neofs-node/pkg/innerring"
|
||||
"github.com/nspcc-dev/neofs-node/pkg/util/grace"
|
||||
"github.com/nspcc-dev/neofs-node/pkg/util/logger"
|
||||
"github.com/nspcc-dev/neofs-node/pkg/util/profiler"
|
||||
)
|
||||
|
||||
const (
|
||||
// ErrorReturnCode returns when application crashed at initialization stage
|
||||
ErrorReturnCode = 1
|
||||
|
||||
// SuccessReturnCode returns when application closed without panic
|
||||
SuccessReturnCode = 0
|
||||
)
|
||||
|
||||
func exitErr(err error) {
|
||||
if err != nil {
|
||||
fmt.Println(err)
|
||||
os.Exit(ErrorReturnCode)
|
||||
}
|
||||
}
|
||||
|
||||
func main() {
|
||||
configFile := flag.String("config", "", "path to config")
|
||||
versionFlag := flag.Bool("version", false, "neofs-ir node version")
|
||||
flag.Parse()
|
||||
|
||||
if *versionFlag {
|
||||
fmt.Println("version:", misc.Version)
|
||||
os.Exit(SuccessReturnCode)
|
||||
}
|
||||
|
||||
cfg, err := newConfig(*configFile)
|
||||
exitErr(err)
|
||||
|
||||
log, err := logger.NewLogger(cfg)
|
||||
exitErr(err)
|
||||
|
||||
ctx := grace.NewGracefulContext(log)
|
||||
|
||||
pprof := profiler.NewProfiler(log, cfg)
|
||||
prometheus := profiler.NewMetrics(log, cfg)
|
||||
|
||||
innerRing, err := innerring.New(ctx, log, cfg)
|
||||
if err != nil {
|
||||
exitErr(err)
|
||||
}
|
||||
|
||||
// start pprof if enabled
|
||||
if pprof != nil {
|
||||
pprof.Start(ctx)
|
||||
defer pprof.Stop()
|
||||
}
|
||||
|
||||
// start prometheus if enabled
|
||||
if prometheus != nil {
|
||||
prometheus.Start(ctx)
|
||||
defer prometheus.Stop()
|
||||
}
|
||||
|
||||
// start inner ring
|
||||
err = innerRing.Start(ctx)
|
||||
if err != nil {
|
||||
exitErr(err)
|
||||
}
|
||||
|
||||
log.Info("application started")
|
||||
|
||||
// todo: select ctx.Done or exported error channel
|
||||
<-ctx.Done()
|
||||
|
||||
innerRing.Stop()
|
||||
|
||||
log.Info("application stopped")
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue