From d757a956b27a67071d80a19780d85f0eea602e44 Mon Sep 17 00:00:00 2001 From: Hrvoje Milkovic Date: Sun, 6 Jun 2021 11:25:51 +0200 Subject: [PATCH] Handle RecursionError exception in perform_request --- elasticsearch/_async/http_aiohttp.py | 5 ++--- elasticsearch/connection/http_requests.py | 2 ++ elasticsearch/connection/http_urllib3.py | 2 ++ 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/elasticsearch/_async/http_aiohttp.py b/elasticsearch/_async/http_aiohttp.py index 7b5813835..8220a907b 100644 --- a/elasticsearch/_async/http_aiohttp.py +++ b/elasticsearch/_async/http_aiohttp.py @@ -300,10 +300,9 @@ async def perform_request( raw_data = await response.text() duration = self.loop.time() - start - # We want to reraise a cancellation. - except asyncio.CancelledError: + # We want to reraise a cancellation or recursion error. + except (asyncio.CancelledError, RecursionError): raise - except Exception as e: self.log_request_fail( method, diff --git a/elasticsearch/connection/http_requests.py b/elasticsearch/connection/http_requests.py index 4480079fe..84526d8d5 100644 --- a/elasticsearch/connection/http_requests.py +++ b/elasticsearch/connection/http_requests.py @@ -166,6 +166,8 @@ def perform_request( response = self.session.send(prepared_request, **send_kwargs) duration = time.time() - start raw_data = response.content.decode("utf-8", "surrogatepass") + except RecursionError: + raise except Exception as e: self.log_request_fail( method, diff --git a/elasticsearch/connection/http_urllib3.py b/elasticsearch/connection/http_urllib3.py index 73a207d06..e343616db 100644 --- a/elasticsearch/connection/http_urllib3.py +++ b/elasticsearch/connection/http_urllib3.py @@ -253,6 +253,8 @@ def perform_request( ) duration = time.time() - start raw_data = response.data.decode("utf-8", "surrogatepass") + except RecursionError: + raise except Exception as e: self.log_request_fail( method, full_url, url, orig_body, time.time() - start, exception=e