brief-kite-90012
06/10/2024, 2:46 AM@step
def my_step(self):
self.next(
self.branch1
, self.branch2
, self.branch3
, self.branch4
, self.branch5
, self.branch6
, self.branch7
)
error:
Setting up task environment.
Downloading code package...
Code package downloaded.
Task is starting.
Data missing:
Some input datastores are missing. Expected: 7 Actual: 0brief-kite-90012
06/10/2024, 2:46 AMmetaflow==2.12.3 but still facing this issuesquare-wire-39606
06/10/2024, 10:34 PMbulky-afternoon-92433
06/11/2024, 8:55 AMbrief-kite-90012
06/11/2024, 9:23 AMbulky-afternoon-92433
06/11/2024, 12:35 PMbrief-kite-90012
06/12/2024, 2:31 AMancient-application-36103
06/17/2024, 9:22 PMancient-application-36103
06/17/2024, 9:23 PMbrief-kite-90012
06/18/2024, 2:18 AMancient-application-36103
06/18/2024, 2:21 AMbrief-kite-90012
06/18/2024, 2:39 AM503 Service Temporarily Unavailable after triggering the job in argo, and seems like some of the steps are stuckbrief-kite-90012
06/18/2024, 2:40 AMbrief-kite-90012
06/26/2024, 5:45 AMargo_workflows.py
⢠argo_client.pybrief-kite-90012
06/27/2024, 8:37 AMData missing:
Some input datastores are missing. Expected: 7 Actual: 0
also seems like it is broken even on the workflow-template level in argo workflows, the input-paths parameter for these steps are long strings of ids that doesnt make sense unlike those comma separated jinjja values stringancient-application-36103
06/27/2024, 5:51 PMbrief-kite-90012
07/01/2024, 6:00 AMinput-paths are too long (>500), https://github.com/Netflix/metaflow/blob/master/metaflow/plugins/argo/argo_workflows.py#L899-L904, and i've tested decompressing it using decompress_list function in utils the return list looks fine, not sure what is happening herebrief-kite-90012
07/01/2024, 7:29 AMfrom metaflow import step, FlowSpec, conda_base, kubernetes
class HelloFlow(FlowSpec):
@kubernetes
@step
def start(self):
print("Starting š")
self.next(
self.some_very_long_step_name_here,
self.another_long_name_of_step_here,
self.yes_another_long_long_step_name_at_here,
self.do_not_question_how_i_name_my_step,
self.yes_yes_long_long_name_again_here,
self.ran_out_of_idea_long_step_name,
self.last_dummy_long_long_long_name_here,
)
@kubernetes
@step
def some_very_long_step_name_here(self):
from sklearn.datasets import load_iris
iris = load_iris()
self.some_very_long_step_name_here1 = iris
self.some_very_long_step_name_here2 = iris
self.some_very_long_step_name_here3 = iris
self.some_very_long_step_name_here4 = iris
self.next(self.join)
@kubernetes
@step
def another_long_name_of_step_here(self):
from sklearn.datasets import load_iris
iris = load_iris()
self.another_long_name_of_step_here1 = iris
self.another_long_name_of_step_here2 = iris
self.another_long_name_of_step_here3 = iris
self.another_long_name_of_step_here4 = iris
self.next(self.join)
@kubernetes
@step
def yes_another_long_long_step_name_at_here(self):
from sklearn.datasets import load_iris
iris = load_iris()
self.yes_another_long_long_step_name_at_here1 = iris
self.yes_another_long_long_step_name_at_here2 = iris
self.yes_another_long_long_step_name_at_here3 = iris
self.yes_another_long_long_step_name_at_here4 = iris
self.next(self.join)
@kubernetes
@step
def do_not_question_how_i_name_my_step(self):
from sklearn.datasets import load_iris
iris = load_iris()
self.do_not_question_how_i_name_my_step1 = iris
self.do_not_question_how_i_name_my_step2 = iris
self.do_not_question_how_i_name_my_step3 = iris
self.do_not_question_how_i_name_my_step4 = iris
self.next(self.join)
@kubernetes
@step
def yes_yes_long_long_name_again_here(self):
from sklearn.datasets import load_iris
iris = load_iris()
self.yes_yes_long_long_name_again_here1 = iris
self.yes_yes_long_long_name_again_here2 = iris
self.yes_yes_long_long_name_again_here3 = iris
self.yes_yes_long_long_name_again_here4 = iris
self.next(self.join)
@kubernetes
@step
def ran_out_of_idea_long_step_name(self):
from sklearn.datasets import load_iris
iris = load_iris()
self.ran_out_of_idea_long_step_name1 = iris
self.ran_out_of_idea_long_step_name2 = iris
self.ran_out_of_idea_long_step_name3 = iris
self.ran_out_of_idea_long_step_name4 = iris
self.next(self.join)
@kubernetes
@step
def last_dummy_long_long_long_name_here(self):
from sklearn.datasets import load_iris
iris = load_iris()
self.last_dummy_long_long_long_name_here1 = iris
self.last_dummy_long_long_long_name_here2 = iris
self.last_dummy_long_long_long_name_here3 = iris
self.last_dummy_long_long_long_name_here4 = iris
self.next(self.join)
@kubernetes
@step
def join(self, inputs):
print("joining")
self.next(self.end)
@kubernetes
@step
def end(self):
print("Done! š")
if __name__ == "__main__":
HelloFlow()brief-kite-90012
07/01/2024, 7:29 AMbulky-afternoon-92433
07/01/2024, 7:52 AMbrief-kite-90012
07/01/2024, 7:53 AMbulky-afternoon-92433
07/02/2024, 11:52 AMbrief-kite-90012
07/02/2024, 11:54 AMbulky-afternoon-92433
07/02/2024, 11:55 AM{{}} during template evaluation/pod scheduling, and we perform the list decompress during runtime, which just results in a bunch of tokens without actual valuesbulky-afternoon-92433
07/02/2024, 11:56 AMbrief-kite-90012
07/02/2024, 11:58 AMbulky-afternoon-92433
07/02/2024, 12:04 PMARGO_TEMPLATE env var on the pods where argo keeps the complete workflow manifest with values. There was an issue in the past with extremely wide foreach steps running into the limit, but even these could hold ~1k step names in there, which is why I'm expecting that any static flow written by hand should not be running against any of the limits.bulky-afternoon-92433
07/02/2024, 12:04 PMbulky-afternoon-92433
07/02/2024, 12:06 PM