Skip to content

Commit c32e22c

Browse files
committed
fix: Make datacatalog gRPC server MaxRecvMsgSize configurable
Signed-off-by: Hongxin Liang <[email protected]>
1 parent 695f5b5 commit c32e22c

19 files changed

+55
-26
lines changed

charts/flyte-core/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ helm install gateway bitnami/contour -n flyte
115115
| configmap.core | object | `{"manager":{"pod-application":"flytepropeller","pod-template-container-name":"flytepropeller","pod-template-name":"flytepropeller-template"},"propeller":{"downstream-eval-duration":"30s","enable-admin-launcher":true,"leader-election":{"enabled":true,"lease-duration":"15s","lock-config-map":{"name":"propeller-leader","namespace":"flyte"},"renew-deadline":"10s","retry-period":"2s"},"limit-namespace":"all","literal-offloading-config":{"enabled":false},"max-workflow-retries":30,"metadata-prefix":"metadata/propeller","metrics-prefix":"flyte","prof-port":10254,"queue":{"batch-size":-1,"batching-interval":"2s","queue":{"base-delay":"5s","capacity":1000,"max-delay":"120s","rate":100,"type":"maxof"},"sub-queue":{"capacity":100,"rate":10,"type":"bucket"},"type":"batch"},"rawoutput-prefix":"s3://my-s3-bucket/","workers":4,"workflow-reeval-duration":"30s"},"webhook":{"certDir":"/etc/webhook/certs","serviceName":"flyte-pod-webhook"}}` | Core propeller configuration |
116116
| configmap.core.manager | object | `{"pod-application":"flytepropeller","pod-template-container-name":"flytepropeller","pod-template-name":"flytepropeller-template"}` | follows the structure specified [here](https://pkg.go.dev/github.com/flyteorg/flytepropeller/manager/config#Config). |
117117
| configmap.core.propeller | object | `{"downstream-eval-duration":"30s","enable-admin-launcher":true,"leader-election":{"enabled":true,"lease-duration":"15s","lock-config-map":{"name":"propeller-leader","namespace":"flyte"},"renew-deadline":"10s","retry-period":"2s"},"limit-namespace":"all","literal-offloading-config":{"enabled":false},"max-workflow-retries":30,"metadata-prefix":"metadata/propeller","metrics-prefix":"flyte","prof-port":10254,"queue":{"batch-size":-1,"batching-interval":"2s","queue":{"base-delay":"5s","capacity":1000,"max-delay":"120s","rate":100,"type":"maxof"},"sub-queue":{"capacity":100,"rate":10,"type":"bucket"},"type":"batch"},"rawoutput-prefix":"s3://my-s3-bucket/","workers":4,"workflow-reeval-duration":"30s"}` | follows the structure specified [here](https://pkg.go.dev/github.com/flyteorg/flytepropeller/pkg/controller/config). |
118-
| configmap.datacatalogServer | object | `{"application":{"grpcPort":8089,"grpcServerReflection":true,"httpPort":8080},"datacatalog":{"heartbeat-grace-period-multiplier":3,"max-reservation-heartbeat":"30s","metrics-scope":"datacatalog","profiler-port":10254,"storage-prefix":"metadata/datacatalog"}}` | Datacatalog server config |
118+
| configmap.datacatalogServer | object | `{"application":{"grpcMaxRecvMsgSizeMBs":6,"grpcPort":8089,"grpcServerReflection":true,"httpPort":8080},"datacatalog":{"heartbeat-grace-period-multiplier":3,"max-reservation-heartbeat":"30s","metrics-scope":"datacatalog","profiler-port":10254,"storage-prefix":"metadata/datacatalog"}}` | Datacatalog server config |
119119
| configmap.domain | object | `{"domains":[{"id":"development","name":"development"},{"id":"staging","name":"staging"},{"id":"production","name":"production"}]}` | Domains configuration for Flyte projects. This enables the specified number of domains across all projects in Flyte. |
120120
| configmap.enabled_plugins.tasks | object | `{"task-plugins":{"default-for-task-types":{"container":"container","container_array":"k8s-array","sidecar":"sidecar"},"enabled-plugins":["container","sidecar","k8s-array","agent-service","echo"]}}` | Tasks specific configuration [structure](https://pkg.go.dev/github.com/flyteorg/flytepropeller/pkg/controller/nodes/task/config#GetConfig) |
121121
| configmap.enabled_plugins.tasks.task-plugins | object | `{"default-for-task-types":{"container":"container","container_array":"k8s-array","sidecar":"sidecar"},"enabled-plugins":["container","sidecar","k8s-array","agent-service","echo"]}` | Plugins configuration, [structure](https://pkg.go.dev/github.com/flyteorg/flytepropeller/pkg/controller/nodes/task/config#TaskPluginConfig) |

charts/flyte-core/values-keycloak-idp-flyteclients-without-browser.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -571,6 +571,7 @@ configmap:
571571
grpcPort: 8089
572572
httpPort: 8080
573573
grpcServerReflection: true
574+
grpcMaxRecvMsgSizeMBs: 6
574575

575576
# -- Task default resources configuration
576577
# Refer to the full [structure](https://pkg.go.dev/github.com/lyft/[email protected]/pkg/runtime/interfaces#TaskResourceConfiguration).

charts/flyte-core/values.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -779,6 +779,7 @@ configmap:
779779
grpcPort: 8089
780780
httpPort: 8080
781781
grpcServerReflection: true
782+
grpcMaxRecvMsgSizeMBs: 6
782783

783784
# -- Task default resources configuration
784785
# Refer to the full [structure](https://pkg.go.dev/github.com/lyft/[email protected]/pkg/runtime/interfaces#TaskResourceConfiguration).

charts/flyte/README.md

Lines changed: 3 additions & 3 deletions
Large diffs are not rendered by default.

charts/flyte/values.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -442,6 +442,7 @@ flyte:
442442
grpcPort: 8089
443443
httpPort: 8080
444444
grpcServerReflection: true
445+
grpcMaxRecvMsgSizeMBs: 6
445446

446447
# -- Task default resources configuration
447448
# Refer to the full [structure](https://pkg.go.dev/github.com/lyft/[email protected]/pkg/runtime/interfaces#TaskResourceConfiguration).

datacatalog/datacatalog_config.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ application:
77
grpcPort: 8081
88
httpPort: 8080
99
grpcServerReflection: true
10+
grpcMaxRecvMsgSizeMBs: 6
1011
datacatalog:
1112
storage-prefix: "metadata"
1213
metrics-scope: "datacatalog"

datacatalog/pkg/config/config.go

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,15 +13,17 @@ const SectionKey = "application"
1313
type Config struct {
1414
GrpcPort int `json:"grpcPort" pflag:",On which grpc port to serve Catalog"`
1515
GrpcServerReflection bool `json:"grpcServerReflection" pflag:",Enable GRPC Server Reflection"`
16+
GrpcMaxRecvMsgSizeMBs int `json:"grpcMaxRecvMsgSizeMBs" pflag:",The max receive message size; if unset defaults to gRPC server default value"`
1617
HTTPPort int `json:"httpPort" pflag:",On which http port to serve Catalog"`
1718
Secure bool `json:"secure" pflag:",Whether to run Catalog in secure mode or not"`
1819
ReadHeaderTimeoutSeconds int `json:"readHeaderTimeoutSeconds" pflag:",The amount of time allowed to read request headers."`
1920
}
2021

2122
var defaultConfig = &Config{
22-
GrpcPort: 8081,
23-
HTTPPort: 8080,
24-
GrpcServerReflection: true,
23+
GrpcPort: 8081,
24+
HTTPPort: 8080,
25+
GrpcServerReflection: true,
26+
GrpcMaxRecvMsgSizeMBs: 0,
2527
// Set the HTTP timeout to avoid security vulnerabilities with expired, inactive connections:
2628
// https://deepsource.io/directory/analyzers/go/issues/GO-S2114
2729
// just shy of requestTimeoutUpperBound

datacatalog/pkg/config/config_flags.go

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

datacatalog/pkg/config/config_flags_test.go

Lines changed: 14 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

datacatalog/pkg/rpc/datacatalogservice/service.go

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -133,14 +133,16 @@ func ServeInsecure(ctx context.Context, cfg *config.Config) error {
133133
// Creates a new GRPC Server with all the configuration
134134
func newGRPCServer(_ context.Context, cfg *config.Config) *grpc.Server {
135135
tracerProvider := otelutils.GetTracerProvider(otelutils.DataCatalogServerTracer)
136-
grpcServer := grpc.NewServer(
137-
grpc.UnaryInterceptor(
138-
otelgrpc.UnaryServerInterceptor(
139-
otelgrpc.WithTracerProvider(tracerProvider),
140-
otelgrpc.WithPropagators(propagation.TraceContext{}),
141-
),
136+
opts := []grpc.ServerOption{grpc.UnaryInterceptor(
137+
otelgrpc.UnaryServerInterceptor(
138+
otelgrpc.WithTracerProvider(tracerProvider),
139+
otelgrpc.WithPropagators(propagation.TraceContext{}),
142140
),
143-
)
141+
)}
142+
if cfg.GrpcMaxRecvMsgSizeMBs > 0 {
143+
opts = append(opts, grpc.MaxRecvMsgSize(cfg.GrpcMaxRecvMsgSizeMBs*1024*1024))
144+
}
145+
grpcServer := grpc.NewServer(opts...)
144146
catalog.RegisterDataCatalogServer(grpcServer, NewDataCatalogService())
145147

146148
healthServer := health.NewServer()

0 commit comments

Comments
 (0)