Skip to content

Commit 859d8c2

Browse files
authored
Fix server interrupt (#161)
* pass ctx to startServer Signed-off-by: npolshakova <[email protected]> * fix sim test to use ctx Signed-off-by: npolshakova <[email protected]> --------- Signed-off-by: npolshakova <[email protected]>
1 parent 4076bd2 commit 859d8c2

File tree

2 files changed

+31
-5
lines changed

2 files changed

+31
-5
lines changed

pkg/llm-d-inference-sim/simulator.go

Lines changed: 30 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -146,8 +146,8 @@ func (s *VllmSimulator) Start(ctx context.Context) error {
146146
return err
147147
}
148148

149-
// start the http server
150-
return s.startServer(listener)
149+
// start the http server with context support
150+
return s.startServer(ctx, listener)
151151
}
152152

153153
func (s *VllmSimulator) newListener() (net.Listener, error) {
@@ -160,7 +160,7 @@ func (s *VllmSimulator) newListener() (net.Listener, error) {
160160
}
161161

162162
// startServer starts http server on port defined in command line
163-
func (s *VllmSimulator) startServer(listener net.Listener) error {
163+
func (s *VllmSimulator) startServer(ctx context.Context, listener net.Listener) error {
164164
r := fasthttprouter.New()
165165

166166
// support completion APIs
@@ -189,7 +189,33 @@ func (s *VllmSimulator) startServer(listener net.Listener) error {
189189
}
190190
}()
191191

192-
return server.Serve(listener)
192+
// Start server in a goroutine
193+
serverErr := make(chan error, 1)
194+
go func() {
195+
s.logger.Info("HTTP server starting")
196+
serverErr <- server.Serve(listener)
197+
}()
198+
199+
// Wait for either context cancellation or server error
200+
select {
201+
case <-ctx.Done():
202+
s.logger.Info("Shutdown signal received, shutting down HTTP server gracefully")
203+
204+
// Gracefully shutdown the server
205+
if err := server.Shutdown(); err != nil {
206+
s.logger.Error(err, "Error during server shutdown")
207+
return err
208+
}
209+
210+
s.logger.Info("HTTP server stopped")
211+
return nil
212+
213+
case err := <-serverErr:
214+
if err != nil {
215+
s.logger.Error(err, "HTTP server failed")
216+
}
217+
return err
218+
}
193219
}
194220

195221
// Print prints to a log, implementation of fasthttp.Logger

pkg/llm-d-inference-sim/simulator_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ func startServerWithArgsAndMetrics(ctx context.Context, mode string, args []stri
115115

116116
// start the http server
117117
go func() {
118-
if err := s.startServer(listener); err != nil {
118+
if err := s.startServer(ctx, listener); err != nil {
119119
logger.Error(err, "error starting server")
120120
}
121121
}()

0 commit comments

Comments
 (0)