Skip to content

Figure out why Web servers fail sometimes with `IncompleteRead` error

This only happens in one of the Web servers (but not others) and it happens both downloading and uploading data.

The trace using relay_bw:

Traceback (most recent call last):
  File "/path/.virtualenvs/relaybw/lib/python3.11/site-packages/urllib3/response.py", line 748, in _error_catcher
    yield
  File "/path/.virtualenvs/relaybw/lib/python3.11/site-packages/urllib3/response.py", line 894, in _raw_read
    raise IncompleteRead(self._fp_bytes_read, self.length_remaining)
urllib3.exceptions.IncompleteRead: IncompleteRead(324519920 bytes read, 749221904 more expected)

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/path/.virtualenvs/relaybw/lib/python3.11/site-packages/requests/models.py", line 816, in generate
    yield from self.raw.stream(chunk_size, decode_content=True)
  File "/path/.virtualenvs/relaybw/lib/python3.11/site-packages/urllib3/response.py", line 1060, in stream
    data = self.read(amt=amt, decode_content=decode_content)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/path/.virtualenvs/relaybw/lib/python3.11/site-packages/urllib3/response.py", line 977, in read
    data = self._raw_read(amt)
           ^^^^^^^^^^^^^^^^^^^
  File "/path/.virtualenvs/relaybw/lib/python3.11/site-packages/urllib3/response.py", line 872, in _raw_read
    with self._error_catcher():
  File "/usr/lib/python3.11/contextlib.py", line 155, in __exit__
    self.gen.throw(typ, value, traceback)
  File "/path/.virtualenvs/relaybw/lib/python3.11/site-packages/urllib3/response.py", line 772, in _error_catcher
    raise ProtocolError(arg, e) from e
urllib3.exceptions.ProtocolError: ('Connection broken: IncompleteRead(324519920 bytes read, 749221904 more expected)', IncompleteRead(324519920 bytes read, 749221904 more expected))

It might be some server configuration or something like #40213 (comment 3080399)

Edited by juga