77import pydantic
88import requests
99
10- from data_diff .errors import DataDiffDatasourceIdNotFoundError
10+ from data_diff .errors import DataDiffCloudDiffFailed , DataDiffCloudDiffTimedOut , DataDiffDatasourceIdNotFoundError
1111
1212from ..utils import getLogger
1313
@@ -248,8 +248,8 @@ def create_data_diff(self, payload: TCloudApiDataDiff) -> int:
248248 def poll_data_diff_results (self , diff_id : int ) -> TCloudApiDataDiffSummaryResult :
249249 summary_results = None
250250 start_time = time .monotonic ()
251- sleep_interval = 5 # starts at 5 sec
252- max_sleep_interval = 30
251+ sleep_interval = 3
252+ max_sleep_interval = 20
253253 max_wait_time = 300
254254
255255 diff_url = f"{ self .host } /datadiffs/{ diff_id } /overview"
@@ -260,13 +260,15 @@ def poll_data_diff_results(self, diff_id: int) -> TCloudApiDataDiffSummaryResult
260260 if response_json ["status" ] == "success" :
261261 summary_results = response_json
262262 elif response_json ["status" ] == "failed" :
263- raise Exception (f"Diff failed: { str (response_json )} " )
263+ raise DataDiffCloudDiffFailed (f"Diff failed: { str (response_json )} " )
264264
265265 if time .monotonic () - start_time > max_wait_time :
266- raise Exception (f"Timed out waiting for diff results. Please, go to the UI for details: { diff_url } " )
266+ raise DataDiffCloudDiffTimedOut (
267+ f"Timed out waiting for diff results. Please, go to the UI for details: { diff_url } "
268+ )
267269
268270 time .sleep (sleep_interval )
269- sleep_interval = min (sleep_interval * 2 , max_sleep_interval )
271+ sleep_interval = min (sleep_interval + 1 , max_sleep_interval )
270272
271273 return TCloudApiDataDiffSummaryResult .from_orm (summary_results )
272274
0 commit comments