pankajkoti commented on code in PR #39110:
URL: https://github.com/apache/airflow/pull/39110#discussion_r1578987446


##########
airflow/providers/databricks/triggers/databricks.py:
##########
@@ -84,13 +84,30 @@ async def run(self):
         async with self.hook:
             while True:
                 run_state = await self.hook.a_get_run_state(self.run_id)
+                notebook_error = None
                 if run_state.is_terminal:
+                    if run_state.result_state == "FAILED":
+                        run_info = await self.hook.a_get_run(self.run_id)
+                        task_run_id = None
+                        if "tasks" in run_info:
+                            for task in run_info["tasks"]:
+                                if task.get("state", {}).get("result_state", 
"") == "FAILED":
+                                    task_run_id = task["run_id"]
+                        if task_run_id is not None:

Review Comment:
   If more than one task failed in the tasks, this `task_run_id` will keep 
getting overwritten while iterating in the earlier for loop. Should we not 
collect error messages for all the tasks that failed?



##########
airflow/providers/databricks/triggers/databricks.py:
##########
@@ -84,13 +84,30 @@ async def run(self):
         async with self.hook:
             while True:
                 run_state = await self.hook.a_get_run_state(self.run_id)
+                notebook_error = None
                 if run_state.is_terminal:
+                    if run_state.result_state == "FAILED":
+                        run_info = await self.hook.a_get_run(self.run_id)
+                        task_run_id = None
+                        if "tasks" in run_info:
+                            for task in run_info["tasks"]:
+                                if task.get("state", {}).get("result_state", 
"") == "FAILED":
+                                    task_run_id = task["run_id"]

Review Comment:
   This seems like so many nested blocks. if -> if -> for -> if.
   Can we refactor this to reduce the nesting?
   
   Ref: 
https://pylint.readthedocs.io/en/latest/user_guide/messages/refactor/too-many-nested-blocks.html
   
   e.g. modifying to something like this could avoid some of nested branches.
   ```
                   if not run_state.is_terminal:
                       self.log.info(
                           "run-id %s in run state %s. sleeping for %s seconds",
                           self.run_id,
                           run_state,
                           self.polling_period_seconds,
                       )
                       await asyncio.sleep(self.polling_period_seconds)
                       continue
                   if run_state.result_state == "FAILED":
                       run_info = await self.hook.a_get_run(self.run_id)
                       task_run_id = None
                       for task in run_info.get("tasks"):
                           if task.get("state", {}).get("result_state", "") == 
"FAILED":
   ```
   



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to