@@ -16,6 +16,7 @@ package rpc
1616import (
1717 "context"
1818 "net"
19+ "os"
1920
2021 "github.com/aws/aws-network-policy-agent/controllers"
2122 "github.com/aws/aws-network-policy-agent/pkg/logger"
4142)
4243
4344const (
44- npgRPCaddress = "127.0.0.1:50052"
4545 grpcHealthServiceName = "grpc.health.v1.np-agent"
4646)
4747
@@ -159,12 +159,21 @@ func (s *server) DeletePodNp(ctx context.Context, in *rpc.DeleteNpRequest) (*rpc
159159}
160160
161161// RunRPCHandler handles request from gRPC
162- func RunRPCHandler (policyReconciler * controllers.PolicyEndpointsReconciler ) error {
163- log ().Infof ("Serving RPC Handler on Address: %s" , npgRPCaddress )
164- listener , err := net .Listen ("tcp" , npgRPCaddress )
162+ func RunRPCHandler (policyReconciler * controllers.PolicyEndpointsReconciler , npaSocketPath string ) (<- chan error , error ) {
163+ log ().Infof ("Serving RPC Handler on Unix socket: %s" , npaSocketPath )
164+
165+ if _ , err := os .Stat (npaSocketPath ); err == nil {
166+ log ().Infof ("Removing stale socket file: %s" , npaSocketPath )
167+ err = os .Remove (npaSocketPath )
168+ if err != nil {
169+ log ().Warnf ("got error in removing socket file %v" , err )
170+ }
171+ }
172+
173+ listener , err := net .Listen ("unix" , npaSocketPath )
165174 if err != nil {
166- log ().Errorf ("Failed to listen gRPC port : %v" , err )
167- return errors .Wrap (err , "network policy agent: failed to listen to gRPC port " )
175+ log ().Errorf ("Failed to listen on unix socket : %v" , err )
176+ return nil , errors .Wrap (err , "network policy agent: failed to listen on unix socket " )
168177 }
169178 grpcServer := grpc .NewServer ()
170179 rpc .RegisterNPBackendServer (grpcServer , & server {policyReconciler : policyReconciler })
@@ -175,10 +184,13 @@ func RunRPCHandler(policyReconciler *controllers.PolicyEndpointsReconciler) erro
175184
176185 // Register reflection service on gRPC server.
177186 reflection .Register (grpcServer )
178- if err := grpcServer .Serve (listener ); err != nil {
179- log ().Errorf ("Failed to start server on gRPC port: %v" , err )
180- return errors .Wrap (err , "network policy agent: failed to start server on gPRC port" )
181- }
187+ errCh := make (chan error , 1 )
188+ go func () {
189+ if err := grpcServer .Serve (listener ); err != nil {
190+ errCh <- errors .Wrap (err , "network policy agent: grpc serve failed" )
191+ }
192+ close (errCh )
193+ }()
182194 log ().Info ("Done with RPC Handler initialization" )
183- return nil
195+ return errCh , nil
184196}
0 commit comments