@@ -64,7 +64,7 @@ func Serve(driver driver.Driver) {
64
64
65
65
kaProps := keepalive.ServerParameters {
66
66
Time : 10 * time .Second ,
67
- Timeout : 20 * time .Second ,
67
+ Timeout : 30 * time .Second ,
68
68
}
69
69
70
70
kaPolicy := keepalive.EnforcementPolicy {
@@ -85,17 +85,41 @@ func Serve(driver driver.Driver) {
85
85
sigs := make (chan os.Signal , 1 )
86
86
signal .Notify (sigs , syscall .SIGINT , syscall .SIGTERM )
87
87
88
+ shutdownCh := make (chan struct {})
89
+
88
90
go func () {
89
91
<- sigs
90
92
logger .Info ("Received shutdown signal, stopping server..." )
91
- server . GracefulStop ( )
93
+ close ( shutdownCh )
92
94
}()
93
95
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 ()
99
123
}
100
124
101
125
func Start (extDriver * registry.ExternalDriver , instName string ) error {
0 commit comments