Skip to content

Commit d1adc8a

Browse files
authored
Changes for issue 2358
Changes made in wacth.py to print Empty newlines that are skipped when watching pod logs.
1 parent d80165d commit d1adc8a

File tree

1 file changed

+13
-1
lines changed

1 file changed

+13
-1
lines changed

kubernetes/base/watch/watch.py

+13-1
Original file line numberDiff line numberDiff line change
@@ -71,13 +71,19 @@ def iter_resp_lines(resp):
7171

7272
# Split by newline (safe for utf-8 because multi-byte sequences cannot contain the newline byte)
7373
next_newline = buffer.find(b'\n')
74+
last_was_empty = False # Set empty-line flag
7475
while next_newline != -1:
7576
# Convert bytes to a valid utf-8 string, replacing any invalid utf-8 with the '�' character
7677
line = buffer[:next_newline].decode(
7778
"utf-8", errors="replace")
7879
buffer = buffer[next_newline+1:]
7980
if line:
8081
yield line
82+
last_was_empty = False # Reset empty-line flag
83+
else:
84+
if not last_was_empty:
85+
yield '\n' # Only print one empty line
86+
last_was_empty = True # Mark that we handled an empty line
8187
next_newline = buffer.find(b'\n')
8288

8389

@@ -175,6 +181,7 @@ def stream(self, func, *args, **kwargs):
175181
while True:
176182
resp = func(*args, **kwargs)
177183
try:
184+
last_was_empty = False # Set empty line false
178185
for line in iter_resp_lines(resp):
179186
# unmarshal when we are receiving events from watch,
180187
# return raw string when we are streaming log
@@ -198,7 +205,12 @@ def stream(self, func, *args, **kwargs):
198205
retry_after_410 = False
199206
yield event
200207
else:
201-
yield line
208+
if line:
209+
yield line # Normal non-empty line
210+
last_was_empty = False
211+
elif not last_was_empty:
212+
yield '/n' # Only yield one empty line
213+
last_was_empty = True
202214
if self._stop:
203215
break
204216
finally:

0 commit comments

Comments
 (0)