Skip to content

Commit 3d46494

Browse files
authored
fix(ingest/tableau): retry when getting 'unexpected error occurred' (#14672)
1 parent 5ce93f5 commit 3d46494

File tree

1 file changed

+8
-5
lines changed
  • metadata-ingestion/src/datahub/ingestion/source/tableau

1 file changed

+8
-5
lines changed

metadata-ingestion/src/datahub/ingestion/source/tableau/tableau.py

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1561,12 +1561,15 @@ def get_connection_object_page(
15611561
}}""",
15621562
)
15631563
else:
1564-
# As of Tableau Server 2024.2, the metadata API sporadically returns a 30-second
1565-
# timeout error.
1566-
# It doesn't reliably happen, so retrying a couple of times makes sense.
15671564
if all(
1565+
# As of Tableau Server 2024.2, the metadata API sporadically returns a 30-second
1566+
# timeout error.
1567+
# It doesn't reliably happen, so retrying a couple of times makes sense.
15681568
error.get("message")
15691569
== "Execution canceled because timeout of 30000 millis was reached"
1570+
# The Metadata API sometimes returns an 'unexpected error' message when querying
1571+
# embeddedDatasourcesConnection. Try retrying a couple of times.
1572+
or error.get("message") == "Unexpected error occurred"
15701573
for error in errors
15711574
):
15721575
# If it was only a timeout error, we can retry.
@@ -1578,8 +1581,8 @@ def get_connection_object_page(
15781581
(self.config.max_retries - retries_remaining + 1) ** 2, 60
15791582
)
15801583
logger.info(
1581-
f"Query {connection_type} received a 30 second timeout error - will retry in {backoff_time} seconds. "
1582-
f"Retries remaining: {retries_remaining}"
1584+
f"Query {connection_type} received a retryable error with {retries_remaining} retries remaining, "
1585+
f"will retry in {backoff_time} seconds: {errors}"
15831586
)
15841587
time.sleep(backoff_time)
15851588
return self.get_connection_object_page(

0 commit comments

Comments
 (0)