fix broken startup on disabled servers

This commit is contained in:
Ryan McGuire 2025-03-30 11:27:41 -04:00
parent 5c26accc34
commit 4f0c5fe665
3 changed files with 33 additions and 9 deletions

View File

@ -44,13 +44,11 @@ func (a *App) MustRun() {
// Prepare GRPC first. The GRPC server may update its opts // Prepare GRPC first. The GRPC server may update its opts
// with a prepared GRPC-Gateway runtime.ServeMux if any of its services // with a prepared GRPC-Gateway runtime.ServeMux if any of its services
// have added GRPC-Gateway handlers. If present, serve under api path // have added GRPC-Gateway handlers. If present, serve under api path
if a.cfg.GRPCEnabled() { a.runGRPC(ctx)
a.runGRPC(ctx)
}
if a.cfg.HTTPEnabled() { // Second, prepare and run HTTP server, embedding grpc-gateway
a.runHTTP(ctx) // runtime.ServeMux if set by runGRPC()
} a.runHTTP(ctx)
// Monitor app lifecycle // Monitor app lifecycle
go a.monitor() go a.monitor()

View File

@ -3,14 +3,26 @@ package app
import ( import (
"context" "context"
"github.com/rs/zerolog"
"go.opentelemetry.io/otel/attribute" "go.opentelemetry.io/otel/attribute"
"go.opentelemetry.io/otel/codes" "go.opentelemetry.io/otel/codes"
"go.opentelemetry.io/otel/trace" "go.opentelemetry.io/otel/trace"
"gitea.libretechconsulting.com/rmcguire/go-app/pkg/srv/http/opts" optsgrpc "gitea.libretechconsulting.com/rmcguire/go-app/pkg/srv/grpc/opts"
optshttp "gitea.libretechconsulting.com/rmcguire/go-app/pkg/srv/http/opts"
) )
func (a *App) runGRPC(ctx context.Context) { func (a *App) runGRPC(ctx context.Context) {
if a.GRPC == nil {
a.GRPC = &optsgrpc.AppGRPC{
GRPCDone: make(chan error),
}
}
if !a.cfg.GRPCEnabled() {
zerolog.Ctx(ctx).Info().Msg("skipping disabled GRPC server")
return
}
span := trace.SpanFromContext(ctx) span := trace.SpanFromContext(ctx)
if err := a.initGRPC(ctx); err != nil { if err := a.initGRPC(ctx); err != nil {
span.RecordError(err) span.RecordError(err)
@ -21,10 +33,10 @@ func (a *App) runGRPC(ctx context.Context) {
if a.GRPC.GetGatewayMux() != nil { if a.GRPC.GetGatewayMux() != nil {
if a.HTTP.Handlers == nil { if a.HTTP.Handlers == nil {
a.HTTP.Handlers = make([]opts.HTTPHandler, 0, 1) a.HTTP.Handlers = make([]optshttp.HTTPHandler, 0, 1)
} }
a.HTTP.Handlers = append(a.HTTP.Handlers, opts.HTTPHandler{ a.HTTP.Handlers = append(a.HTTP.Handlers, optshttp.HTTPHandler{
Prefix: a.cfg.GRPC.GRPCGatewayPath, Prefix: a.cfg.GRPC.GRPCGatewayPath,
StripPrefix: true, StripPrefix: true,
Handler: a.GRPC.GetGatewayMux(), Handler: a.GRPC.GetGatewayMux(),

View File

@ -3,12 +3,26 @@ package app
import ( import (
"context" "context"
"github.com/rs/zerolog"
"go.opentelemetry.io/otel/attribute" "go.opentelemetry.io/otel/attribute"
"go.opentelemetry.io/otel/codes" "go.opentelemetry.io/otel/codes"
"go.opentelemetry.io/otel/trace" "go.opentelemetry.io/otel/trace"
optshttp "gitea.libretechconsulting.com/rmcguire/go-app/pkg/srv/http/opts"
) )
func (a *App) runHTTP(ctx context.Context) { func (a *App) runHTTP(ctx context.Context) {
if a.HTTP == nil {
a.HTTP = &optshttp.AppHTTP{
HTTPDone: make(chan any),
}
}
if !a.cfg.HTTPEnabled() {
zerolog.Ctx(ctx).Info().Msg("skipping disabled HTTP Server")
return
}
span := trace.SpanFromContext(ctx) span := trace.SpanFromContext(ctx)
if err := a.initHTTP(ctx); err != nil { if err := a.initHTTP(ctx); err != nil {
span.RecordError(err) span.RecordError(err)