@@ -64,7 +64,7 @@ func Serve(driver driver.Driver) {
6464
6565 kaProps := keepalive.ServerParameters {
6666 Time : 10 * time .Second ,
67- Timeout : 20 * time .Second ,
67+ Timeout : 30 * time .Second ,
6868 }
6969
7070 kaPolicy := keepalive.EnforcementPolicy {
@@ -85,17 +85,41 @@ func Serve(driver driver.Driver) {
8585 sigs := make (chan os.Signal , 1 )
8686 signal .Notify (sigs , syscall .SIGINT , syscall .SIGTERM )
8787
88+ shutdownCh := make (chan struct {})
89+
8890 go func () {
8991 <- sigs
9092 logger .Info ("Received shutdown signal, stopping server..." )
91- server . GracefulStop ( )
93+ close ( shutdownCh )
9294 }()
9395
94- logger .Infof ("Starting external driver server for %s" , driver .Info ().DriverName )
95- logger .Infof ("Server starting on Unix socket: %s" , socketPath )
96- if err := server .Serve (listener ); err != nil {
97- logger .Fatalf ("Failed to serve: %v" , err )
98- }
96+ go func () {
97+ timer := time .NewTimer (60 * time .Second )
98+ defer timer .Stop ()
99+
100+ select {
101+ case <- timer .C :
102+ logger .Info ("No client connected within 60 seconds, shutting down server..." )
103+ close (shutdownCh )
104+ case <- shutdownCh :
105+ return
106+ }
107+ }()
108+
109+ go func () {
110+ logger .Infof ("Starting external driver server for %s" , driver .Info ().DriverName )
111+ logger .Infof ("Server starting on Unix socket: %s" , socketPath )
112+ if err := server .Serve (listener ); err != nil {
113+ if errors .Is (err , grpc .ErrServerStopped ) {
114+ logger .Errorf ("Server stopped: %v" , err )
115+ } else {
116+ logger .Errorf ("Failed to serve: %v" , err )
117+ }
118+ }
119+ }()
120+
121+ <- shutdownCh
122+ server .GracefulStop ()
99123}
100124
101125func Start (extDriver * registry.ExternalDriver , instName string ) error {
0 commit comments