Skip to content

Commit 9352aa3

Browse files
committed
shutdown server if no client gets connected
Signed-off-by: Ansuman Sahoo <[email protected]>
1 parent 96c7179 commit 9352aa3

File tree

1 file changed

+27
-7
lines changed

1 file changed

+27
-7
lines changed

pkg/driver/external/server/server.go

Lines changed: 27 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,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

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

0 commit comments

Comments
 (0)