@@ -35,15 +35,15 @@ import (
35
35
)
36
36
37
37
var (
38
- GrpcServerPort = constants .ProxyGRPCServerPort
38
+ grpcServerPort = constants .ProxyGRPCServerPort
39
39
)
40
40
41
41
func init () {
42
42
envConfig := os .Getenv (constants .EnvProxyGRPCServerPort )
43
43
if envConfig != "" {
44
44
p , err := strconv .Atoi (envConfig )
45
45
if err != nil {
46
- GrpcServerPort = p
46
+ grpcServerPort = p
47
47
}
48
48
}
49
49
}
@@ -52,19 +52,25 @@ type GrpcServer struct {
52
52
BreakerMgr circuitbreaker.ManagerInterface
53
53
FaultInjectionMgr faultinjection.ManagerInterface
54
54
55
- mux * http.ServeMux
55
+ Port int
56
+ mux * http.ServeMux
56
57
}
57
58
58
59
func (s * GrpcServer ) Start (ctx context.Context ) {
60
+ if s .Port == 0 {
61
+ s .Port = grpcServerPort
62
+ }
59
63
s .mux = http .NewServeMux ()
60
64
s .mux .Handle (protoconnect .NewThrottlingHandler (& grpcThrottlingHandler {mgr : s .BreakerMgr }, connect .WithSendMaxBytes (1024 * 1024 * 64 )))
61
65
s .mux .Handle (protoconnect .NewFaultInjectHandler (& grpcFaultInjectHandler {mgr : s .FaultInjectionMgr }, connect .WithSendMaxBytes (1024 * 1024 * 64 )))
62
- addr := fmt .Sprintf (":%d" , GrpcServerPort )
66
+ addr := fmt .Sprintf (":%d" , s .Port )
67
+ // Use h2c so we can serve HTTP/2 without TLS.
68
+ server := & http.Server {Addr : addr , Handler : h2c .NewHandler (s .mux , & http2.Server {})}
63
69
go func () {
64
- // Use h2c so we can serve HTTP/2 without TLS.
65
- if err := http .ListenAndServe (addr , h2c .NewHandler (s .mux , & http2.Server {})); err != nil {
70
+ if err := server .ListenAndServe (); err != nil {
66
71
klog .Errorf ("serve gRPC error %v" , err )
67
72
}
68
73
}()
69
74
<- ctx .Done ()
75
+ server .Close ()
70
76
}
0 commit comments