Hello everyone and Happy New Year! My question is...
# questions
p
Hello everyone and Happy New Year! My question is whether it is possible to fail whole pipeline if one node failed ? Currently if one node failed it only prints warning and whole pipeline is visible as successful (exit code 0) In log I have:
Copy code
2022-12-18 14:08:46,846] {ssh.py:476} INFO - 2022-12-18 14:08:46,845 - kedro.pipeline.node - INFO - Running node: test_node_1: <lambda>([test_1.fake_name.test_data_predictions,params:test_1.predictive_modeling.fake_name.target]) -> [test_1.fake_name.labels,test_1.fake_name.score]
[2022-12-18 14:08:46,846] {ssh.py:476} INFO - 2022-12-18 14:08:46,845 - multi_runner.safeguards - ERROR - Node test_node_1, in the "test_1" run failed with the exception:
'AttributeError' object is not subscriptable
Traceback (most recent call last):
 [..]
And further on in the same log:
Copy code
[2022-12-18 14:08:47,520] {ssh.py:476} INFO - 2022-12-18 14:08:47,510 - multi_runner.safeguards - WARNING - Node fake_name_post_modelling_analysis, in the "test_1"run is skipped due to an upstream error
[2022-12-18 14:08:47,672] {ssh.py:476} INFO - 2022-12-18 14:08:47,671 - kedro.runner.sequential_runner - INFO - Completed 48 out of 48 tasks
[2022-12-18 14:08:47,673] {ssh.py:476} INFO - 2022-12-18 14:08:47,671 - kedro.runner.sequential_runner - INFO - Pipeline execution completed successfully.
[2022-12-18 14:08:47,674] {ssh.py:476} INFO - 2022-12-18 14:08:47,672 - proj.hooks.project_hooks - INFO - fake_name pipeline execution completed successfully.
[2022-12-18 14:08:50,263] {taskinstance.py:859} DEBUG - Refreshing TaskInstance <TaskInstance: test_dag.fake_name manual__2022-12-17T16:06:07.524573+00:00 [running]> from DB
[2022-12-18 14:08:50,282] {base_job.py:226} DEBUG - [heartbeat]
[2022-12-18 14:08:51,673] {channel.py:1212} DEBUG - [chan 0] EOF received (0)
[2022-12-18 14:08:51,711] {_init_.py:107} DEBUG - Lineage called with inlets: [], outlets: []
[2022-12-18 14:08:51,711] {taskinstance.py:859} DEBUG - Refreshing TaskInstance <TaskInstance: test_dag.fake_name manual__2022-12-17T16:06:07.524573+00:00 [running]> from DB
[2022-12-18 14:08:51,734] {taskinstance.py:1406} DEBUG - Clearing next_method and next_kwargs.
[2022-12-18 14:08:51,734] {taskinstance.py:1400} INFO - Marking task as SUCCESS. dag_id=test_dag, task_id=fake_name, execution_date=20221217T160607, start_date=20221218T140430, end_date=20221218T140851
[2022-12-18 14:08:51,735] {taskinstance.py:2336} DEBUG - Task Duration set to 261.096866
[2022-12-18 14:08:51,751] {cli_action_loggers.py:84} DEBUG - Calling callbacks: []
[2022-12-18 14:08:51,822] {local_task_job.py:156} INFO - Task exited with return code 0
As you can see : fake_name pipeline execution completed successfully. Run command:
Copy code
kedro run --pipeline fake_name
Great hearing from you and all the best, Pawel
d
What version are you using? I need to dig into it, but from what I recall, it was a feature request people had previously to not fail the whole pipeline when one node failed with
ParallelRunner
, and I would need to check if that was implemented (can't recall).
p
Thanks for your answer sorry for late response. We are using kedro 0.17.7