Skip to content

Use ray instead of luigi#625

Open
tkilias wants to merge 4 commits into
mainfrom
use_ray_instead_of_luigi
Open

Use ray instead of luigi#625
tkilias wants to merge 4 commits into
mainfrom
use_ray_instead_of_luigi

Conversation

@tkilias

@tkilias tkilias commented May 12, 2026

Copy link
Copy Markdown
Contributor

All Submissions:

  • Is the title of the Pull Request correct?
  • Is the title of the corresponding issue correct?
  • Have you updated the changelog?
  • Have you checked to ensure there aren't other open Pull Requests for the same update/change?
  • Are you mentioning the issue which this PullRequest fixes ("Fixes...")
  • Are the CLI usage examples up to date?

tkilias and others added 2 commits May 6, 2026 15:48
Introduces a features/ directory with 14 .feature files covering the
full observable behavior of ITDE: health checks, environment spawning,
parameter validation, reuse, cleanup, SSL certificates, port allocation,
test container build/push, data population, CLI/API consistency, Docker
runtime selection, Luigi base task lifecycle, Docker image analysis and
build, and dependency logging.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@tomuben tomuben marked this pull request as ready for review May 26, 2026 18:09
# Conflicts:
#	exasol_integration_test_docker_environment/test/test_base_task.py
#	exasol_integration_test_docker_environment/test/test_base_task_cleanup.py
#	exasol_integration_test_docker_environment/test/test_certificate_docker_build.py
#	exasol_integration_test_docker_environment/test/test_common_run_task.py
#	exasol_integration_test_docker_environment/test/test_docker_access_method.py
#	exasol_integration_test_docker_environment/test/test_docker_build_base.py
#	exasol_integration_test_docker_environment/test/test_generate_graph_plot.py
#	exasol_integration_test_docker_environment/test/test_populate_data.py
#	exasol_integration_test_docker_environment/test/test_test_container_reuse.py
#	exasol_integration_test_docker_environment/test/test_test_env_reuse.py
2. Updated formatting
"""
task_id = task.task_id

if task.complete():

@tkilias tkilias May 26, 2026

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This might be problematic , because it could be a local copy of the object and might not have attributes populated. task.complete checks the completion target, if I remember correctly. I think, we need to check the stored refs. And, and maybe tasks can't use local attributes anymore, if any worker could rely on them.

"""Wait for all static deps, then drive the task generator."""
ray.get(dep_refs)
if task.complete():
return

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is only correct, if jumped before out of TaskRegistry.schedule

_drive(task, registry)


def _drive(task: Task, registry: ray.actor.ActorHandle) -> None:

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We need to return the task after we processed run, because the attributes of the Task might have changed and the tasks that depend on this task need get the updated values.

futures: list[ray.ObjectRef] = [
f for t in flatten(yielded) if (f := _schedule(t, registry)) is not None
]
ray.get(futures)

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We actually need to fetch the task instances the futures point to and update the run futures of the current task with them.

registry: ray.actor.ActorHandle,
) -> None:
"""Wait for all static deps, then drive the task generator."""
ray.get(dep_refs)

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

f for t in tasks if (f := _schedule(t, registry)) is not None
]
try:
ray.get(futures)

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants