Correctly retry replication HTTP requests on timeout
2 files changed, 5 insertions, 1 deletions
diff --git a/synapse/config/_base.pyi b/synapse/config/_base.pyi
index b8faafa9bd..a204a9bef1 100644
--- a/synapse/config/_base.pyi
+++ b/synapse/config/_base.pyi
@@ -35,6 +35,7 @@ from synapse.config import (
workers,
)
+
class ConfigError(Exception): ...
MISSING_REPORT_STATS_CONFIG_INSTRUCTIONS: str
diff --git a/synapse/replication/http/_base.py b/synapse/replication/http/_base.py
index b448da6710..3377bbd67f 100644
--- a/synapse/replication/http/_base.py
+++ b/synapse/replication/http/_base.py
@@ -12,7 +12,6 @@
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
-
import abc
import logging
import re
@@ -26,6 +25,7 @@ from synapse.api.errors import (
RequestSendFailed,
SynapseError,
)
+from synapse.http import RequestTimedOutError
from synapse.logging.opentracing import inject_active_span_byte_dict, trace
from synapse.util.caches.response_cache import ResponseCache
from synapse.util.stringutils import random_string
@@ -196,6 +196,9 @@ class ReplicationEndpoint(metaclass=abc.ABCMeta):
except CodeMessageException as e:
if e.code != 504 or not cls.RETRY_ON_TIMEOUT:
raise
+ except RequestTimedOutError:
+ if not cls.RETRY_ON_TIMEOUT:
+ raise
logger.warning("%s request timed out", cls.NAME)
|