You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Hi,
Our ssl nats client could fall into a forever loop when certs changed. Eventually we located the forever loop was inside _read_loop() inside aio/client/py:
while True:
try:
should_bail = self.is_closed or self.is_reconnecting
if should_bail or self._transport is None:
break
if self.is_connected and self._transport.at_eof():
err = errors.UnexpectedEOF()
await self._error_cb(err)
await self._process_op_err(err)
break
b = await self._transport.read(DEFAULT_BUFFER_SIZE)
await self._ps.parse(b)
b is always empty, eof is true. When this issue happened, all other asyncio tasks were blocked because this loop never yield.
We hit this issue when certs changes (1 out of 4). Simply restart nats-server seems hard to reproduce the issue.
Have anyone ever hit similar issue? It seems a bug to me. There should be no chance for this loop to become a no-yield forever loop.
Thanks
Steven
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
-
Hi,
Our ssl nats client could fall into a forever loop when certs changed. Eventually we located the forever loop was inside _read_loop() inside aio/client/py:
Beta Was this translation helpful? Give feedback.
All reactions