diff --git a/cmd/topazd/topaz_run.go b/cmd/topazd/topaz_run.go index f641d80b..4d5138f8 100644 --- a/cmd/topazd/topaz_run.go +++ b/cmd/topazd/topaz_run.go @@ -4,7 +4,6 @@ import ( "os" "github.com/aserto-dev/aserto-management/controller" - "github.com/aserto-dev/go-aserto/client" "github.com/aserto-dev/topaz/pkg/app" "github.com/aserto-dev/topaz/pkg/app/topaz" "github.com/aserto-dev/topaz/pkg/cc/config" @@ -78,9 +77,20 @@ var cmdRun = &cobra.Command{ return err } - controllerFactory := controller.NewFactory(topazApp.Logger, topazApp.Configuration.ControllerConfig, client.NewDialOptionsProvider()) - - runtime, runtimeCleanup, err := topaz.NewRuntimeResolver(topazApp.Context, topazApp.Logger, topazApp.Configuration, controllerFactory, decisionlog, directory) + controllerFactory := controller.NewFactory( + topazApp.Logger, + topazApp.Configuration.ControllerConfig, + app.KeepAliveDialOptionsProvider(), + ) + + runtime, runtimeCleanup, err := topaz.NewRuntimeResolver( + topazApp.Context, + topazApp.Logger, + topazApp.Configuration, + controllerFactory, + decisionlog, + directory, + ) if err != nil { return err } diff --git a/go.mod b/go.mod index 29395082..fb799472 100644 --- a/go.mod +++ b/go.mod @@ -20,7 +20,7 @@ require ( github.com/aserto-dev/certs v0.0.6 github.com/aserto-dev/clui v0.8.3 github.com/aserto-dev/errors v0.0.7 - github.com/aserto-dev/go-aserto v0.31.3 + github.com/aserto-dev/go-aserto v0.31.4 github.com/aserto-dev/go-authorizer v0.20.6 github.com/aserto-dev/go-directory v0.31.3 github.com/aserto-dev/go-directory-cli v0.31.1 diff --git a/go.sum b/go.sum index 8eea4040..4c70325f 100644 --- a/go.sum +++ b/go.sum @@ -431,8 +431,8 @@ github.com/aserto-dev/clui v0.8.3 h1:foEJuVpMFVP4La3SxUcinxRLOZx/TyS2BRuahbywYFg github.com/aserto-dev/clui v0.8.3/go.mod h1:KsL/g2x5LAbkEE4ofW/ZoA4FDOIdAyLes/5ullvzUt8= github.com/aserto-dev/errors v0.0.7 h1:pBn9RhP2iiDl30oAWsf8aLxvt4yCpLKZOCJRIaeRMUs= github.com/aserto-dev/errors v0.0.7/go.mod h1:wiQ68oKTyAQVAv+SvB5GyuAD6PewalA/D6Fq30gNUbQ= -github.com/aserto-dev/go-aserto v0.31.3 h1:qBoh89FOTC3W2cgw8zVyHpLbJgivrMo7hG5iS4lmEuk= -github.com/aserto-dev/go-aserto v0.31.3/go.mod h1:6mW3wUC62a8TbqYH64lq350MBj+W3WwtlxXNZRybbOY= +github.com/aserto-dev/go-aserto v0.31.4 h1:i4EYTNwyARhEZrN00CU7OnXJCE5xwo6w67ncwJcxmBM= +github.com/aserto-dev/go-aserto v0.31.4/go.mod h1:6mW3wUC62a8TbqYH64lq350MBj+W3WwtlxXNZRybbOY= github.com/aserto-dev/go-authorizer v0.20.6 h1:fSpnjQwz5k49dl9fBVyzMPbI/dxI/KXCuKpx3ztAv0U= github.com/aserto-dev/go-authorizer v0.20.6/go.mod h1:UYrV3teiX6KlShTzX7HC8KvAJsRI9QUyxJEWbVFYBFU= github.com/aserto-dev/go-decision-logs v0.0.4 h1:beu/mhqZ92ovhSIPOv2f4q0Ci7HWNLla/j/x+ZD5eHw= diff --git a/pkg/app/topaz.go b/pkg/app/topaz.go index fd34ca21..319a1875 100644 --- a/pkg/app/topaz.go +++ b/pkg/app/topaz.go @@ -26,6 +26,7 @@ import ( "github.com/rs/zerolog" "google.golang.org/grpc" "google.golang.org/grpc/health/grpc_health_v1" + "google.golang.org/grpc/keepalive" console "github.com/aserto-dev/go-topaz-ui" builder "github.com/aserto-dev/service-host" @@ -264,13 +265,21 @@ func mapToGRPCPorts(api map[string]*builder.API) map[string]services { return portMap } +func KeepAliveDialOptionsProvider() client.DialOptionsProvider { + kacp := keepalive.ClientParameters{ + Time: 30 * time.Second, // send pings every 30 seconds if there is no activity + Timeout: 5 * time.Second, // wait 5 seconds for ping ack before considering the connection dead + } + return client.NewDialOptionsProvider(grpc.WithKeepaliveParams(kacp)) +} + func (e *Topaz) GetDecisionLogger(cfg config.DecisionLogConfig) (decisionlog.DecisionLogger, error) { var decisionlogger decisionlog.DecisionLogger var err error switch cfg.Type { case "self": - decisionlogger, err = self.New(e.Context, cfg.Config, e.Logger, client.NewDialOptionsProvider()) + decisionlogger, err = self.New(e.Context, cfg.Config, e.Logger, KeepAliveDialOptionsProvider()) if err != nil { return nil, err }