mirror of
https://github.com/opencloud-eu/opencloud.git
synced 2026-01-16 01:51:06 -05:00
* experimental search backport fix basic extractor resource name move escapeQuery regex into global variable minor pr review changes rename DebounceDuration env variable add document title and content when rebuilding bleve resource Co-authored-by: David Christofas <dchristofas@owncloud.com>
93 lines
2.5 KiB
Go
93 lines
2.5 KiB
Go
package command
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
|
|
"github.com/oklog/run"
|
|
"github.com/owncloud/ocis/v2/ocis-pkg/config/configlog"
|
|
ogrpc "github.com/owncloud/ocis/v2/ocis-pkg/service/grpc"
|
|
"github.com/owncloud/ocis/v2/ocis-pkg/version"
|
|
"github.com/owncloud/ocis/v2/services/search/pkg/config"
|
|
"github.com/owncloud/ocis/v2/services/search/pkg/config/parser"
|
|
"github.com/owncloud/ocis/v2/services/search/pkg/logging"
|
|
"github.com/owncloud/ocis/v2/services/search/pkg/metrics"
|
|
"github.com/owncloud/ocis/v2/services/search/pkg/server/debug"
|
|
"github.com/owncloud/ocis/v2/services/search/pkg/server/grpc"
|
|
"github.com/owncloud/ocis/v2/services/search/pkg/tracing"
|
|
"github.com/urfave/cli/v2"
|
|
)
|
|
|
|
// Server is the entrypoint for the server command.
|
|
func Server(cfg *config.Config) *cli.Command {
|
|
return &cli.Command{
|
|
Name: "server",
|
|
Usage: fmt.Sprintf("start the %s service without runtime (unsupervised mode)", cfg.Service.Name),
|
|
Category: "server",
|
|
Before: func(c *cli.Context) error {
|
|
return configlog.ReturnFatal(parser.ParseConfig(cfg))
|
|
},
|
|
Action: func(c *cli.Context) error {
|
|
logger := logging.Configure(cfg.Service.Name, cfg.Log)
|
|
err := tracing.Configure(cfg)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
err = ogrpc.Configure(ogrpc.GetClientOptions(cfg.GRPCClientTLS)...)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
gr := run.Group{}
|
|
ctx, cancel := func() (context.Context, context.CancelFunc) {
|
|
if cfg.Context == nil {
|
|
return context.WithCancel(context.Background())
|
|
}
|
|
return context.WithCancel(cfg.Context)
|
|
}()
|
|
defer cancel()
|
|
|
|
mtrcs := metrics.New()
|
|
mtrcs.BuildInfo.WithLabelValues(version.GetString()).Set(1)
|
|
|
|
grpcServer, teardown, err := grpc.Server(
|
|
grpc.Config(cfg),
|
|
grpc.Logger(logger),
|
|
grpc.Name(cfg.Service.Name),
|
|
grpc.Context(ctx),
|
|
grpc.Metrics(mtrcs),
|
|
)
|
|
defer teardown()
|
|
if err != nil {
|
|
logger.Info().Err(err).Str("transport", "grpc").Msg("Failed to initialize server")
|
|
return err
|
|
}
|
|
|
|
gr.Add(grpcServer.Run, func(_ error) {
|
|
logger.Error().
|
|
Err(err).
|
|
Str("server", "grpc").
|
|
Msg("shutting down server")
|
|
cancel()
|
|
})
|
|
|
|
server, err := debug.Server(
|
|
debug.Logger(logger),
|
|
debug.Context(ctx),
|
|
debug.Config(cfg),
|
|
)
|
|
if err != nil {
|
|
logger.Info().Err(err).Str("transport", "debug").Msg("Failed to initialize server")
|
|
return err
|
|
}
|
|
|
|
gr.Add(server.ListenAndServe, func(_ error) {
|
|
_ = server.Shutdown(ctx)
|
|
cancel()
|
|
})
|
|
|
|
return gr.Run()
|
|
},
|
|
}
|
|
}
|