Skip to content

Commit 7c7ae97

Browse files
authored
Merge pull request kubernetes#84693 from yutedz/watching-stop
Stop Watching when there is encoding error
2 parents ed19c74 + 639af77 commit 7c7ae97

File tree

1 file changed

+3
-5
lines changed
  • staging/src/k8s.io/apiserver/pkg/endpoints/handlers

1 file changed

+3
-5
lines changed

staging/src/k8s.io/apiserver/pkg/endpoints/handlers/watch.go

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -285,10 +285,12 @@ func (s *WatchServer) HandleWS(ws *websocket.Conn) {
285285
buf := &bytes.Buffer{}
286286
streamBuf := &bytes.Buffer{}
287287
ch := s.Watching.ResultChan()
288+
289+
defer s.Watching.Stop()
290+
288291
for {
289292
select {
290293
case <-done:
291-
s.Watching.Stop()
292294
return
293295
case event, ok := <-ch:
294296
if !ok {
@@ -317,25 +319,21 @@ func (s *WatchServer) HandleWS(ws *websocket.Conn) {
317319
if err != nil {
318320
utilruntime.HandleError(fmt.Errorf("unable to convert watch object: %v", err))
319321
// client disconnect.
320-
s.Watching.Stop()
321322
return
322323
}
323324
if err := s.Encoder.Encode(outEvent, streamBuf); err != nil {
324325
// encoding error
325326
utilruntime.HandleError(fmt.Errorf("unable to encode event: %v", err))
326-
s.Watching.Stop()
327327
return
328328
}
329329
if s.UseTextFraming {
330330
if err := websocket.Message.Send(ws, streamBuf.String()); err != nil {
331331
// Client disconnect.
332-
s.Watching.Stop()
333332
return
334333
}
335334
} else {
336335
if err := websocket.Message.Send(ws, streamBuf.Bytes()); err != nil {
337336
// Client disconnect.
338-
s.Watching.Stop()
339337
return
340338
}
341339
}

0 commit comments

Comments
 (0)