Skip to content

Commit 0cefb55

Browse files
npolshakovapancak3
authored andcommitted
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 92863cc commit 0cefb55

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
@@ -152,8 +152,8 @@ func (s *VllmSimulator) Start(ctx context.Context) error {
152152
return err
153153
}
154154

155-
// start the http server
156-
return s.startServer(listener)
155+
// start the http server with context support
156+
return s.startServer(ctx, listener)
157157
}
158158

159159
func (s *VllmSimulator) newListener() (net.Listener, error) {
@@ -166,7 +166,7 @@ func (s *VllmSimulator) newListener() (net.Listener, error) {
166166
}
167167

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

172172
// support completion APIs
@@ -195,7 +195,33 @@ func (s *VllmSimulator) startServer(listener net.Listener) error {
195195
}
196196
}()
197197

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

201227
// 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)