Skip to content

Commit b25aa0e

Browse files
authored
Merge pull request #3836 from unsuman/fix/ext-driver-shutdown
fix: shutdown server if no client gets connected
2 parents dd5e9ef + 8cf209d commit b25aa0e

File tree

1 file changed

+31
-7
lines changed

1 file changed

+31
-7
lines changed

pkg/driver/external/server/server.go

Lines changed: 31 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -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

101125
func Start(extDriver *registry.ExternalDriver, instName string) error {

0 commit comments

Comments
 (0)