@@ -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,37 @@ 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+ logger .Infof ("Server stopped: %v" , err )
114+ }
115+ }()
116+
117+ <- shutdownCh
118+ server .GracefulStop ()
99119}
100120
101121func Start (extDriver * registry.ExternalDriver , instName string ) error {
0 commit comments