taskito 0.16.4__tar.gz → 0.18.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {taskito-0.16.4 → taskito-0.18.0}/Cargo.lock +217 -35
- {taskito-0.16.4 → taskito-0.18.0}/PKG-INFO +2 -1
- {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/Cargo.toml +1 -1
- {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/job.rs +3 -4
- {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/scheduler/maintenance.rs +59 -1
- {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/scheduler/mod.rs +115 -0
- {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/scheduler/poller.rs +6 -3
- {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/storage/diesel_common/dead_letter.rs +39 -11
- {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/storage/diesel_common/jobs.rs +86 -125
- {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/storage/diesel_common/locks.rs +29 -0
- {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/storage/diesel_common/migrations.rs +25 -22
- {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/storage/mod.rs +71 -0
- {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/storage/models.rs +5 -21
- {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/storage/postgres/archival.rs +0 -11
- taskito-0.18.0/crates/taskito-core/src/storage/postgres/jobs.rs +73 -0
- {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/storage/postgres/mod.rs +9 -5
- {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/storage/postgres/periodic.rs +32 -0
- {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/storage/redis_backend/dead_letter.rs +78 -0
- {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/storage/redis_backend/jobs/maintenance.rs +42 -0
- {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/storage/redis_backend/locks.rs +43 -0
- {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/storage/redis_backend/periodic.rs +88 -0
- {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/storage/schema.rs +0 -9
- {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/storage/sqlite/archival.rs +0 -11
- {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/storage/sqlite/jobs.rs +26 -1
- {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/storage/sqlite/mod.rs +9 -5
- {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/storage/sqlite/periodic.rs +32 -0
- {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/storage/sqlite/tests.rs +166 -41
- {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/storage/traits.rs +26 -0
- {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/tests/rust/storage_tests.rs +244 -15
- {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-python/Cargo.toml +1 -1
- {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-python/src/py_queue/inspection.rs +44 -0
- {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-python/src/py_queue/mod.rs +33 -0
- {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-python/src/py_queue/worker.rs +7 -2
- {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-workflows/Cargo.toml +1 -1
- {taskito-0.16.4 → taskito-0.18.0}/pyproject.toml +2 -1
- {taskito-0.16.4 → taskito-0.18.0}/taskito/__init__.py +1 -1
- {taskito-0.16.4 → taskito-0.18.0}/taskito/_taskito.pyi +8 -0
- taskito-0.16.4/crates/taskito-core/src/storage/postgres/jobs.rs +0 -29
- {taskito-0.16.4 → taskito-0.18.0}/Cargo.toml +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/LICENSE +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/README.md +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/BINDING_CONTRACT.md +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/error.rs +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/lib.rs +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/periodic.rs +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/resilience/circuit_breaker.rs +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/resilience/dlq.rs +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/resilience/mod.rs +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/resilience/rate_limiter.rs +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/resilience/retry.rs +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/scheduler/result_handler.rs +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/scheduler/wake.rs +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/storage/diesel_common/archival.rs +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/storage/diesel_common/logs.rs +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/storage/diesel_common/metrics.rs +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/storage/diesel_common/mod.rs +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/storage/diesel_common/workers.rs +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/storage/notify.rs +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/storage/postgres/circuit_breakers.rs +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/storage/postgres/dashboard_settings.rs +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/storage/postgres/dead_letter.rs +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/storage/postgres/listener.rs +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/storage/postgres/locks.rs +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/storage/postgres/logs.rs +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/storage/postgres/metrics.rs +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/storage/postgres/queue_state.rs +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/storage/postgres/rate_limits.rs +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/storage/postgres/trait_impl.rs +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/storage/postgres/workers.rs +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/storage/redis_backend/archival.rs +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/storage/redis_backend/circuit_breakers.rs +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/storage/redis_backend/dashboard_settings.rs +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/storage/redis_backend/jobs/dequeue.rs +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/storage/redis_backend/jobs/enqueue.rs +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/storage/redis_backend/jobs/errors.rs +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/storage/redis_backend/jobs/helpers.rs +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/storage/redis_backend/jobs/mod.rs +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/storage/redis_backend/jobs/query.rs +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/storage/redis_backend/jobs/state.rs +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/storage/redis_backend/listener.rs +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/storage/redis_backend/logs.rs +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/storage/redis_backend/metrics.rs +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/storage/redis_backend/mod.rs +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/storage/redis_backend/queue_state.rs +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/storage/redis_backend/rate_limits.rs +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/storage/redis_backend/trait_impl.rs +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/storage/redis_backend/workers.rs +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/storage/sqlite/circuit_breakers.rs +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/storage/sqlite/dashboard_settings.rs +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/storage/sqlite/dead_letter.rs +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/storage/sqlite/locks.rs +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/storage/sqlite/logs.rs +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/storage/sqlite/metrics.rs +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/storage/sqlite/queue_state.rs +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/storage/sqlite/rate_limits.rs +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/storage/sqlite/trait_impl.rs +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/storage/sqlite/workers.rs +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/worker.rs +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/tests/rust.rs +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-python/src/async_worker.rs +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-python/src/lib.rs +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-python/src/native_async/mod.rs +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-python/src/native_async/pool.rs +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-python/src/native_async/result_sender.rs +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-python/src/native_async/task_executor.rs +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-python/src/prefork/child.rs +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-python/src/prefork/dispatch.rs +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-python/src/prefork/mod.rs +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-python/src/prefork/protocol.rs +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-python/src/prefork/slot.rs +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-python/src/prefork/watchdog.rs +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-python/src/py_config.rs +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-python/src/py_job.rs +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-python/src/py_queue/workflow_ops/fan_out.rs +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-python/src/py_queue/workflow_ops/gates.rs +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-python/src/py_queue/workflow_ops/lifecycle.rs +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-python/src/py_queue/workflow_ops/mod.rs +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-python/src/py_queue/workflow_ops/nodes.rs +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-python/src/py_queue/workflow_ops/queries.rs +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-python/src/py_queue/workflow_ops/saga.rs +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-python/src/py_queue/workflow_ops/test_helpers.rs +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-python/src/py_worker.rs +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-python/src/py_workflow/mod.rs +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-workflows/src/common.rs +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-workflows/src/definition.rs +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-workflows/src/diesel_common.rs +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-workflows/src/error.rs +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-workflows/src/lib.rs +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-workflows/src/node.rs +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-workflows/src/postgres_store.rs +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-workflows/src/redis_store.rs +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-workflows/src/run.rs +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-workflows/src/sqlite_store.rs +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-workflows/src/state.rs +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-workflows/src/storage.rs +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-workflows/src/tests.rs +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-workflows/src/topology.rs +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-workflows/tests/storage_contract.rs +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/_active_context.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/app.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/async_support/__init__.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/async_support/canvas.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/async_support/context.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/async_support/executor.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/async_support/helpers.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/async_support/locks.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/async_support/mixins.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/async_support/result.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/autoscale/__init__.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/autoscale/config.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/autoscale/controller.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/autoscale/process_manager.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/batching/__init__.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/batching/accumulator.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/batching/config.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/batching/item_result.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/batching/result.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/canvas.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/cli.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/context.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/contrib/__init__.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/contrib/django/__init__.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/contrib/django/admin.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/contrib/django/apps.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/contrib/django/management/__init__.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/contrib/django/management/commands/__init__.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/contrib/django/management/commands/taskito_dashboard.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/contrib/django/management/commands/taskito_info.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/contrib/django/management/commands/taskito_worker.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/contrib/django/settings.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/contrib/django/templates/taskito/admin/base.html +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/contrib/django/templates/taskito/admin/dashboard.html +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/contrib/django/templates/taskito/admin/dead_letters.html +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/contrib/django/templates/taskito/admin/job_detail.html +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/contrib/django/templates/taskito/admin/jobs.html +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/contrib/django/templatetags/__init__.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/contrib/django/templatetags/taskito_admin.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/contrib/fastapi.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/contrib/flask.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/contrib/otel.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/contrib/prometheus.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/contrib/sentry.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/dashboard/__init__.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/dashboard/_testing.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/dashboard/auth.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/dashboard/delivery_store.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/dashboard/errors.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/dashboard/handlers/__init__.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/dashboard/handlers/_qs.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/dashboard/handlers/auth.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/dashboard/handlers/dead_letters.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/dashboard/handlers/jobs.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/dashboard/handlers/logs.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/dashboard/handlers/metrics.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/dashboard/handlers/middleware.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/dashboard/handlers/oauth.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/dashboard/handlers/overrides.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/dashboard/handlers/queues.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/dashboard/handlers/scaler.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/dashboard/handlers/settings.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/dashboard/handlers/webhook_deliveries.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/dashboard/handlers/webhooks.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/dashboard/handlers/workflows.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/dashboard/middleware_store.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/dashboard/oauth/__init__.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/dashboard/oauth/config.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/dashboard/oauth/flow.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/dashboard/oauth/identity.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/dashboard/oauth/pkce.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/dashboard/oauth/providers.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/dashboard/oauth/state_store.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/dashboard/overrides_store.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/dashboard/request_context.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/dashboard/routes.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/dashboard/server.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/dashboard/static.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/dashboard/url_safety.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/dashboard/webhook_store.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/events.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/exceptions.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/health.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/inject.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/interception/__init__.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/interception/built_in.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/interception/converters.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/interception/errors.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/interception/interceptor.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/interception/metrics.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/interception/reconstruct.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/interception/registry.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/interception/strategy.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/interception/walker.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/locks.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/log_config.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/mesh.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/middleware.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/mixins/__init__.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/mixins/_shared.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/mixins/decorators.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/mixins/events.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/mixins/inspection.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/mixins/lifecycle.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/mixins/locks.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/mixins/middleware_admin.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/mixins/operations.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/mixins/overrides.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/mixins/predicates.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/mixins/resources.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/mixins/runtime_config.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/mixins/settings.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/notes.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/predicates/__init__.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/predicates/context.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/predicates/core.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/predicates/evaluate.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/predicates/metrics.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/predicates/outcomes.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/predicates/parser.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/predicates/providers.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/predicates/recipes/__init__.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/predicates/recipes/attributes.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/predicates/recipes/config.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/predicates/recipes/system.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/predicates/recipes/time.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/predicates/registry.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/prefork/__init__.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/prefork/__main__.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/prefork/child.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/proxies/__init__.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/proxies/built_in.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/proxies/handler.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/proxies/handlers/__init__.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/proxies/handlers/boto3_client.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/proxies/handlers/file.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/proxies/handlers/gcs_client.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/proxies/handlers/httpx_client.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/proxies/handlers/logger.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/proxies/handlers/requests_session.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/proxies/metrics.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/proxies/no_proxy.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/proxies/reconstruct.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/proxies/registry.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/proxies/schema.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/proxies/signing.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/py.typed +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/resources/__init__.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/resources/definition.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/resources/frozen.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/resources/graph.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/resources/health.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/resources/pool.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/resources/runtime.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/resources/thread_local.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/resources/toml_config.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/result.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/scaler.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/serializers.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/static/dashboard/assets/ibm-plex-mono-latin-400-normal-CvHOgSBP.woff +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/static/dashboard/assets/ibm-plex-mono-latin-400-normal-DMJ8VG8y.woff2 +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/static/dashboard/assets/ibm-plex-mono-latin-500-normal-CB9ihrfo.woff +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/static/dashboard/assets/ibm-plex-mono-latin-500-normal-DSY6xOcd.woff2 +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/static/dashboard/assets/ibm-plex-mono-latin-600-normal-BgSNZQsw.woff2 +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/static/dashboard/assets/ibm-plex-mono-latin-600-normal-DWFSQ4vo.woff +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/static/dashboard/assets/ibm-plex-sans-latin-400-normal-CDDApCn2.woff2 +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/static/dashboard/assets/ibm-plex-sans-latin-400-normal-CYLoc0-x.woff +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/static/dashboard/assets/ibm-plex-sans-latin-500-normal-6ng42L7E.woff2 +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/static/dashboard/assets/ibm-plex-sans-latin-500-normal-BgVn5rGT.woff +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/static/dashboard/assets/ibm-plex-sans-latin-600-normal-Cu4Hd6ag.woff +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/static/dashboard/assets/ibm-plex-sans-latin-600-normal-CuJfVYMP.woff2 +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/static/dashboard/assets/ibm-plex-serif-latin-500-normal-C3_OdgN3.woff +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/static/dashboard/assets/ibm-plex-serif-latin-500-normal-REKAfBVG.woff2 +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/static/dashboard/assets/ibm-plex-serif-latin-600-normal-D3rpGdkS.woff +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/static/dashboard/assets/ibm-plex-serif-latin-600-normal-DAxitmSu.woff2 +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/static/dashboard/assets/index-CDFUchyu.js +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/static/dashboard/assets/index-CM8gBS-q.css +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/static/dashboard/assets/logs.lazy-BFbH9caD.js +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/static/dashboard/assets/metrics.lazy-CgfKykLV.js +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/static/dashboard/index.html +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/task.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/testing.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/webhooks.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/workflows/__init__.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/workflows/analysis.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/workflows/builder.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/workflows/context.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/workflows/fan_out.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/workflows/incremental.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/workflows/mixins.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/workflows/run.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/workflows/saga/__init__.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/workflows/saga/context.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/workflows/saga/orchestrator.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/workflows/tracker/__init__.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/workflows/tracker/dag.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/workflows/tracker/event_routing.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/workflows/tracker/fan_out.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/workflows/tracker/finalization.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/workflows/tracker/gates.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/workflows/tracker/sub_workflows.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/workflows/tracker/tracker.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/workflows/tracker/types.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/workflows/types.py +0 -0
- {taskito-0.16.4 → taskito-0.18.0}/taskito/workflows/visualization.py +0 -0
|
@@ -120,6 +120,12 @@ dependencies = [
|
|
|
120
120
|
"shlex",
|
|
121
121
|
]
|
|
122
122
|
|
|
123
|
+
[[package]]
|
|
124
|
+
name = "cesu8"
|
|
125
|
+
version = "1.1.0"
|
|
126
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
127
|
+
checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c"
|
|
128
|
+
|
|
123
129
|
[[package]]
|
|
124
130
|
name = "cfg-if"
|
|
125
131
|
version = "1.0.4"
|
|
@@ -139,9 +145,9 @@ dependencies = [
|
|
|
139
145
|
|
|
140
146
|
[[package]]
|
|
141
147
|
name = "chrono"
|
|
142
|
-
version = "0.4.
|
|
148
|
+
version = "0.4.45"
|
|
143
149
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
144
|
-
checksum = "
|
|
150
|
+
checksum = "1aa79e62e7697b8e29b513a68abacf485adcd1fe8284a4316c5ae868e6633327"
|
|
145
151
|
dependencies = [
|
|
146
152
|
"iana-time-zone",
|
|
147
153
|
"js-sys",
|
|
@@ -243,7 +249,7 @@ dependencies = [
|
|
|
243
249
|
"regex",
|
|
244
250
|
"serde",
|
|
245
251
|
"serde_json",
|
|
246
|
-
"thiserror",
|
|
252
|
+
"thiserror 2.0.18",
|
|
247
253
|
]
|
|
248
254
|
|
|
249
255
|
[[package]]
|
|
@@ -292,9 +298,9 @@ dependencies = [
|
|
|
292
298
|
|
|
293
299
|
[[package]]
|
|
294
300
|
name = "diesel"
|
|
295
|
-
version = "2.3.
|
|
301
|
+
version = "2.3.10"
|
|
296
302
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
297
|
-
checksum = "
|
|
303
|
+
checksum = "29fe29a87fb84c631ffb3ba21798c4b1f3a964701ba78f0dce4bf8668562ec88"
|
|
298
304
|
dependencies = [
|
|
299
305
|
"bitflags",
|
|
300
306
|
"byteorder",
|
|
@@ -653,6 +659,50 @@ version = "1.0.17"
|
|
|
653
659
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
654
660
|
checksum = "92ecc6618181def0457392ccd0ee51198e065e016d1d527a7ac1b6dc7c1f09d2"
|
|
655
661
|
|
|
662
|
+
[[package]]
|
|
663
|
+
name = "jni"
|
|
664
|
+
version = "0.21.1"
|
|
665
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
666
|
+
checksum = "1a87aa2bb7d2af34197c04845522473242e1aa17c12f4935d5856491a7fb8c97"
|
|
667
|
+
dependencies = [
|
|
668
|
+
"cesu8",
|
|
669
|
+
"cfg-if",
|
|
670
|
+
"combine",
|
|
671
|
+
"jni-sys 0.3.1",
|
|
672
|
+
"log",
|
|
673
|
+
"thiserror 1.0.69",
|
|
674
|
+
"walkdir",
|
|
675
|
+
"windows-sys 0.45.0",
|
|
676
|
+
]
|
|
677
|
+
|
|
678
|
+
[[package]]
|
|
679
|
+
name = "jni-sys"
|
|
680
|
+
version = "0.3.1"
|
|
681
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
682
|
+
checksum = "41a652e1f9b6e0275df1f15b32661cf0d4b78d4d87ddec5e0c3c20f097433258"
|
|
683
|
+
dependencies = [
|
|
684
|
+
"jni-sys 0.4.1",
|
|
685
|
+
]
|
|
686
|
+
|
|
687
|
+
[[package]]
|
|
688
|
+
name = "jni-sys"
|
|
689
|
+
version = "0.4.1"
|
|
690
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
691
|
+
checksum = "c6377a88cb3910bee9b0fa88d4f42e1d2da8e79915598f65fb0c7ee14c878af2"
|
|
692
|
+
dependencies = [
|
|
693
|
+
"jni-sys-macros",
|
|
694
|
+
]
|
|
695
|
+
|
|
696
|
+
[[package]]
|
|
697
|
+
name = "jni-sys-macros"
|
|
698
|
+
version = "0.4.1"
|
|
699
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
700
|
+
checksum = "38c0b942f458fe50cdac086d2f946512305e5631e720728f2a61aabcd47a6264"
|
|
701
|
+
dependencies = [
|
|
702
|
+
"quote",
|
|
703
|
+
"syn",
|
|
704
|
+
]
|
|
705
|
+
|
|
656
706
|
[[package]]
|
|
657
707
|
name = "js-sys"
|
|
658
708
|
version = "0.3.88"
|
|
@@ -719,9 +769,9 @@ dependencies = [
|
|
|
719
769
|
|
|
720
770
|
[[package]]
|
|
721
771
|
name = "log"
|
|
722
|
-
version = "0.4.
|
|
772
|
+
version = "0.4.33"
|
|
723
773
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
724
|
-
checksum = "
|
|
774
|
+
checksum = "0ceec5bc11778974d1bcb055b18002eba7f4b3518b6a0081b3af5f21666da9ad"
|
|
725
775
|
|
|
726
776
|
[[package]]
|
|
727
777
|
name = "memchr"
|
|
@@ -858,9 +908,9 @@ dependencies = [
|
|
|
858
908
|
|
|
859
909
|
[[package]]
|
|
860
910
|
name = "openssl-sys"
|
|
861
|
-
version = "0.9.
|
|
911
|
+
version = "0.9.117"
|
|
862
912
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
863
|
-
checksum = "
|
|
913
|
+
checksum = "b47e7e6bb2c38cd930d25a23b40fa52e068c10e85f3e03a7f5ba5aaca5713695"
|
|
864
914
|
dependencies = [
|
|
865
915
|
"cc",
|
|
866
916
|
"libc",
|
|
@@ -1171,9 +1221,9 @@ checksum = "63b8176103e19a2643978565ca18b50549f6101881c443590420e4dc998a3c69"
|
|
|
1171
1221
|
|
|
1172
1222
|
[[package]]
|
|
1173
1223
|
name = "redis"
|
|
1174
|
-
version = "1.2.
|
|
1224
|
+
version = "1.2.4"
|
|
1175
1225
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1176
|
-
checksum = "
|
|
1226
|
+
checksum = "bae41a63fd0b8a5372f82b21e810e09a316f5dd7efd96bf08e678fb240fc1918"
|
|
1177
1227
|
dependencies = [
|
|
1178
1228
|
"arcstr",
|
|
1179
1229
|
"combine",
|
|
@@ -1232,7 +1282,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
1232
1282
|
checksum = "a8a1f2315036ef6b1fbacd1972e8ee7688030b0a2121edfc2a6550febd41574d"
|
|
1233
1283
|
dependencies = [
|
|
1234
1284
|
"hashbrown 0.16.1",
|
|
1235
|
-
"thiserror",
|
|
1285
|
+
"thiserror 2.0.18",
|
|
1236
1286
|
]
|
|
1237
1287
|
|
|
1238
1288
|
[[package]]
|
|
@@ -1260,6 +1310,15 @@ version = "1.0.23"
|
|
|
1260
1310
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1261
1311
|
checksum = "9774ba4a74de5f7b1c1451ed6cd5285a32eddb5cccb8cc655a4e50009e06477f"
|
|
1262
1312
|
|
|
1313
|
+
[[package]]
|
|
1314
|
+
name = "same-file"
|
|
1315
|
+
version = "1.0.6"
|
|
1316
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1317
|
+
checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502"
|
|
1318
|
+
dependencies = [
|
|
1319
|
+
"winapi-util",
|
|
1320
|
+
]
|
|
1321
|
+
|
|
1263
1322
|
[[package]]
|
|
1264
1323
|
name = "scheduled-thread-pool"
|
|
1265
1324
|
version = "0.2.7"
|
|
@@ -1313,9 +1372,9 @@ dependencies = [
|
|
|
1313
1372
|
|
|
1314
1373
|
[[package]]
|
|
1315
1374
|
name = "serde_json"
|
|
1316
|
-
version = "1.0.
|
|
1375
|
+
version = "1.0.150"
|
|
1317
1376
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1318
|
-
checksum = "
|
|
1377
|
+
checksum = "e8014e44b4736ed0538adeecded0fce2a272f22dc9578a7eb6b2d9993c74cfb9"
|
|
1319
1378
|
dependencies = [
|
|
1320
1379
|
"itoa",
|
|
1321
1380
|
"memchr",
|
|
@@ -1422,7 +1481,7 @@ checksum = "adb6935a6f5c20170eeceb1a3835a49e12e19d792f6dd344ccc76a985ca5a6ca"
|
|
|
1422
1481
|
|
|
1423
1482
|
[[package]]
|
|
1424
1483
|
name = "taskito-core"
|
|
1425
|
-
version = "0.
|
|
1484
|
+
version = "0.18.0"
|
|
1426
1485
|
dependencies = [
|
|
1427
1486
|
"async-trait",
|
|
1428
1487
|
"chrono",
|
|
@@ -1439,14 +1498,32 @@ dependencies = [
|
|
|
1439
1498
|
"serde",
|
|
1440
1499
|
"serde_json",
|
|
1441
1500
|
"tempfile",
|
|
1442
|
-
"thiserror",
|
|
1501
|
+
"thiserror 2.0.18",
|
|
1502
|
+
"tokio",
|
|
1503
|
+
"uuid",
|
|
1504
|
+
]
|
|
1505
|
+
|
|
1506
|
+
[[package]]
|
|
1507
|
+
name = "taskito-java"
|
|
1508
|
+
version = "0.18.0"
|
|
1509
|
+
dependencies = [
|
|
1510
|
+
"async-trait",
|
|
1511
|
+
"crossbeam-channel",
|
|
1512
|
+
"gethostname",
|
|
1513
|
+
"jni",
|
|
1514
|
+
"log",
|
|
1515
|
+
"once_cell",
|
|
1516
|
+
"serde",
|
|
1517
|
+
"serde_json",
|
|
1518
|
+
"taskito-core",
|
|
1519
|
+
"taskito-workflows",
|
|
1443
1520
|
"tokio",
|
|
1444
1521
|
"uuid",
|
|
1445
1522
|
]
|
|
1446
1523
|
|
|
1447
1524
|
[[package]]
|
|
1448
1525
|
name = "taskito-mesh"
|
|
1449
|
-
version = "0.
|
|
1526
|
+
version = "0.18.0"
|
|
1450
1527
|
dependencies = [
|
|
1451
1528
|
"base64",
|
|
1452
1529
|
"bincode",
|
|
@@ -1461,7 +1538,7 @@ dependencies = [
|
|
|
1461
1538
|
|
|
1462
1539
|
[[package]]
|
|
1463
1540
|
name = "taskito-node"
|
|
1464
|
-
version = "0.
|
|
1541
|
+
version = "0.18.0"
|
|
1465
1542
|
dependencies = [
|
|
1466
1543
|
"async-trait",
|
|
1467
1544
|
"crossbeam-channel",
|
|
@@ -1480,7 +1557,7 @@ dependencies = [
|
|
|
1480
1557
|
|
|
1481
1558
|
[[package]]
|
|
1482
1559
|
name = "taskito-python"
|
|
1483
|
-
version = "0.
|
|
1560
|
+
version = "0.18.0"
|
|
1484
1561
|
dependencies = [
|
|
1485
1562
|
"async-trait",
|
|
1486
1563
|
"base64",
|
|
@@ -1500,7 +1577,7 @@ dependencies = [
|
|
|
1500
1577
|
|
|
1501
1578
|
[[package]]
|
|
1502
1579
|
name = "taskito-workflows"
|
|
1503
|
-
version = "0.
|
|
1580
|
+
version = "0.18.0"
|
|
1504
1581
|
dependencies = [
|
|
1505
1582
|
"dagron-core",
|
|
1506
1583
|
"diesel",
|
|
@@ -1514,9 +1591,9 @@ dependencies = [
|
|
|
1514
1591
|
|
|
1515
1592
|
[[package]]
|
|
1516
1593
|
name = "tempfile"
|
|
1517
|
-
version = "3.
|
|
1594
|
+
version = "3.27.0"
|
|
1518
1595
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1519
|
-
checksum = "
|
|
1596
|
+
checksum = "32497e9a4c7b38532efcdebeef879707aa9f794296a4f0244f6f69e9bc8574bd"
|
|
1520
1597
|
dependencies = [
|
|
1521
1598
|
"fastrand",
|
|
1522
1599
|
"getrandom 0.4.1",
|
|
@@ -1525,13 +1602,33 @@ dependencies = [
|
|
|
1525
1602
|
"windows-sys 0.61.2",
|
|
1526
1603
|
]
|
|
1527
1604
|
|
|
1605
|
+
[[package]]
|
|
1606
|
+
name = "thiserror"
|
|
1607
|
+
version = "1.0.69"
|
|
1608
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1609
|
+
checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52"
|
|
1610
|
+
dependencies = [
|
|
1611
|
+
"thiserror-impl 1.0.69",
|
|
1612
|
+
]
|
|
1613
|
+
|
|
1528
1614
|
[[package]]
|
|
1529
1615
|
name = "thiserror"
|
|
1530
1616
|
version = "2.0.18"
|
|
1531
1617
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1532
1618
|
checksum = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4"
|
|
1533
1619
|
dependencies = [
|
|
1534
|
-
"thiserror-impl",
|
|
1620
|
+
"thiserror-impl 2.0.18",
|
|
1621
|
+
]
|
|
1622
|
+
|
|
1623
|
+
[[package]]
|
|
1624
|
+
name = "thiserror-impl"
|
|
1625
|
+
version = "1.0.69"
|
|
1626
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1627
|
+
checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1"
|
|
1628
|
+
dependencies = [
|
|
1629
|
+
"proc-macro2",
|
|
1630
|
+
"quote",
|
|
1631
|
+
"syn",
|
|
1535
1632
|
]
|
|
1536
1633
|
|
|
1537
1634
|
[[package]]
|
|
@@ -1588,9 +1685,9 @@ dependencies = [
|
|
|
1588
1685
|
|
|
1589
1686
|
[[package]]
|
|
1590
1687
|
name = "tokio"
|
|
1591
|
-
version = "1.
|
|
1688
|
+
version = "1.50.0"
|
|
1592
1689
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1593
|
-
checksum = "
|
|
1690
|
+
checksum = "27ad5e34374e03cfffefc301becb44e9dc3c17584f414349ebe29ed26661822d"
|
|
1594
1691
|
dependencies = [
|
|
1595
1692
|
"bytes",
|
|
1596
1693
|
"libc",
|
|
@@ -1652,9 +1749,9 @@ checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be"
|
|
|
1652
1749
|
|
|
1653
1750
|
[[package]]
|
|
1654
1751
|
name = "uuid"
|
|
1655
|
-
version = "1.
|
|
1752
|
+
version = "1.23.3"
|
|
1656
1753
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1657
|
-
checksum = "
|
|
1754
|
+
checksum = "144d6b123cef80b301b8f72a9e2ca4370ddec21950d0a103dd22c437006d2db7"
|
|
1658
1755
|
dependencies = [
|
|
1659
1756
|
"getrandom 0.4.1",
|
|
1660
1757
|
"js-sys",
|
|
@@ -1673,6 +1770,16 @@ version = "0.9.5"
|
|
|
1673
1770
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1674
1771
|
checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a"
|
|
1675
1772
|
|
|
1773
|
+
[[package]]
|
|
1774
|
+
name = "walkdir"
|
|
1775
|
+
version = "2.5.0"
|
|
1776
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1777
|
+
checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b"
|
|
1778
|
+
dependencies = [
|
|
1779
|
+
"same-file",
|
|
1780
|
+
"winapi-util",
|
|
1781
|
+
]
|
|
1782
|
+
|
|
1676
1783
|
[[package]]
|
|
1677
1784
|
name = "wasi"
|
|
1678
1785
|
version = "0.11.1+wasi-snapshot-preview1"
|
|
@@ -1776,6 +1883,15 @@ dependencies = [
|
|
|
1776
1883
|
"semver",
|
|
1777
1884
|
]
|
|
1778
1885
|
|
|
1886
|
+
[[package]]
|
|
1887
|
+
name = "winapi-util"
|
|
1888
|
+
version = "0.1.11"
|
|
1889
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1890
|
+
checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22"
|
|
1891
|
+
dependencies = [
|
|
1892
|
+
"windows-sys 0.61.2",
|
|
1893
|
+
]
|
|
1894
|
+
|
|
1779
1895
|
[[package]]
|
|
1780
1896
|
name = "windows-core"
|
|
1781
1897
|
version = "0.62.2"
|
|
@@ -1835,13 +1951,22 @@ dependencies = [
|
|
|
1835
1951
|
"windows-link",
|
|
1836
1952
|
]
|
|
1837
1953
|
|
|
1954
|
+
[[package]]
|
|
1955
|
+
name = "windows-sys"
|
|
1956
|
+
version = "0.45.0"
|
|
1957
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1958
|
+
checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0"
|
|
1959
|
+
dependencies = [
|
|
1960
|
+
"windows-targets 0.42.2",
|
|
1961
|
+
]
|
|
1962
|
+
|
|
1838
1963
|
[[package]]
|
|
1839
1964
|
name = "windows-sys"
|
|
1840
1965
|
version = "0.60.2"
|
|
1841
1966
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1842
1967
|
checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb"
|
|
1843
1968
|
dependencies = [
|
|
1844
|
-
"windows-targets",
|
|
1969
|
+
"windows-targets 0.53.5",
|
|
1845
1970
|
]
|
|
1846
1971
|
|
|
1847
1972
|
[[package]]
|
|
@@ -1853,6 +1978,21 @@ dependencies = [
|
|
|
1853
1978
|
"windows-link",
|
|
1854
1979
|
]
|
|
1855
1980
|
|
|
1981
|
+
[[package]]
|
|
1982
|
+
name = "windows-targets"
|
|
1983
|
+
version = "0.42.2"
|
|
1984
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1985
|
+
checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071"
|
|
1986
|
+
dependencies = [
|
|
1987
|
+
"windows_aarch64_gnullvm 0.42.2",
|
|
1988
|
+
"windows_aarch64_msvc 0.42.2",
|
|
1989
|
+
"windows_i686_gnu 0.42.2",
|
|
1990
|
+
"windows_i686_msvc 0.42.2",
|
|
1991
|
+
"windows_x86_64_gnu 0.42.2",
|
|
1992
|
+
"windows_x86_64_gnullvm 0.42.2",
|
|
1993
|
+
"windows_x86_64_msvc 0.42.2",
|
|
1994
|
+
]
|
|
1995
|
+
|
|
1856
1996
|
[[package]]
|
|
1857
1997
|
name = "windows-targets"
|
|
1858
1998
|
version = "0.53.5"
|
|
@@ -1860,28 +2000,46 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
1860
2000
|
checksum = "4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3"
|
|
1861
2001
|
dependencies = [
|
|
1862
2002
|
"windows-link",
|
|
1863
|
-
"windows_aarch64_gnullvm",
|
|
1864
|
-
"windows_aarch64_msvc",
|
|
1865
|
-
"windows_i686_gnu",
|
|
2003
|
+
"windows_aarch64_gnullvm 0.53.1",
|
|
2004
|
+
"windows_aarch64_msvc 0.53.1",
|
|
2005
|
+
"windows_i686_gnu 0.53.1",
|
|
1866
2006
|
"windows_i686_gnullvm",
|
|
1867
|
-
"windows_i686_msvc",
|
|
1868
|
-
"windows_x86_64_gnu",
|
|
1869
|
-
"windows_x86_64_gnullvm",
|
|
1870
|
-
"windows_x86_64_msvc",
|
|
2007
|
+
"windows_i686_msvc 0.53.1",
|
|
2008
|
+
"windows_x86_64_gnu 0.53.1",
|
|
2009
|
+
"windows_x86_64_gnullvm 0.53.1",
|
|
2010
|
+
"windows_x86_64_msvc 0.53.1",
|
|
1871
2011
|
]
|
|
1872
2012
|
|
|
2013
|
+
[[package]]
|
|
2014
|
+
name = "windows_aarch64_gnullvm"
|
|
2015
|
+
version = "0.42.2"
|
|
2016
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
2017
|
+
checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8"
|
|
2018
|
+
|
|
1873
2019
|
[[package]]
|
|
1874
2020
|
name = "windows_aarch64_gnullvm"
|
|
1875
2021
|
version = "0.53.1"
|
|
1876
2022
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1877
2023
|
checksum = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53"
|
|
1878
2024
|
|
|
2025
|
+
[[package]]
|
|
2026
|
+
name = "windows_aarch64_msvc"
|
|
2027
|
+
version = "0.42.2"
|
|
2028
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
2029
|
+
checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43"
|
|
2030
|
+
|
|
1879
2031
|
[[package]]
|
|
1880
2032
|
name = "windows_aarch64_msvc"
|
|
1881
2033
|
version = "0.53.1"
|
|
1882
2034
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1883
2035
|
checksum = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006"
|
|
1884
2036
|
|
|
2037
|
+
[[package]]
|
|
2038
|
+
name = "windows_i686_gnu"
|
|
2039
|
+
version = "0.42.2"
|
|
2040
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
2041
|
+
checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f"
|
|
2042
|
+
|
|
1885
2043
|
[[package]]
|
|
1886
2044
|
name = "windows_i686_gnu"
|
|
1887
2045
|
version = "0.53.1"
|
|
@@ -1894,24 +2052,48 @@ version = "0.53.1"
|
|
|
1894
2052
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1895
2053
|
checksum = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c"
|
|
1896
2054
|
|
|
2055
|
+
[[package]]
|
|
2056
|
+
name = "windows_i686_msvc"
|
|
2057
|
+
version = "0.42.2"
|
|
2058
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
2059
|
+
checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060"
|
|
2060
|
+
|
|
1897
2061
|
[[package]]
|
|
1898
2062
|
name = "windows_i686_msvc"
|
|
1899
2063
|
version = "0.53.1"
|
|
1900
2064
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1901
2065
|
checksum = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2"
|
|
1902
2066
|
|
|
2067
|
+
[[package]]
|
|
2068
|
+
name = "windows_x86_64_gnu"
|
|
2069
|
+
version = "0.42.2"
|
|
2070
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
2071
|
+
checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36"
|
|
2072
|
+
|
|
1903
2073
|
[[package]]
|
|
1904
2074
|
name = "windows_x86_64_gnu"
|
|
1905
2075
|
version = "0.53.1"
|
|
1906
2076
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1907
2077
|
checksum = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499"
|
|
1908
2078
|
|
|
2079
|
+
[[package]]
|
|
2080
|
+
name = "windows_x86_64_gnullvm"
|
|
2081
|
+
version = "0.42.2"
|
|
2082
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
2083
|
+
checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3"
|
|
2084
|
+
|
|
1909
2085
|
[[package]]
|
|
1910
2086
|
name = "windows_x86_64_gnullvm"
|
|
1911
2087
|
version = "0.53.1"
|
|
1912
2088
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1913
2089
|
checksum = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1"
|
|
1914
2090
|
|
|
2091
|
+
[[package]]
|
|
2092
|
+
name = "windows_x86_64_msvc"
|
|
2093
|
+
version = "0.42.2"
|
|
2094
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
2095
|
+
checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0"
|
|
2096
|
+
|
|
1915
2097
|
[[package]]
|
|
1916
2098
|
name = "windows_x86_64_msvc"
|
|
1917
2099
|
version = "0.53.1"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: taskito
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.18.0
|
|
4
4
|
Classifier: Development Status :: 4 - Beta
|
|
5
5
|
Classifier: Intended Audience :: Developers
|
|
6
6
|
Classifier: License :: OSI Approved :: MIT License
|
|
@@ -9,6 +9,7 @@ Classifier: Programming Language :: Python :: 3.10
|
|
|
9
9
|
Classifier: Programming Language :: Python :: 3.11
|
|
10
10
|
Classifier: Programming Language :: Python :: 3.12
|
|
11
11
|
Classifier: Programming Language :: Python :: 3.13
|
|
12
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
12
13
|
Classifier: Programming Language :: Rust
|
|
13
14
|
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
14
15
|
Classifier: Topic :: System :: Distributed Computing
|
|
@@ -159,10 +159,9 @@ impl From<ArchivedJobRow> for Job {
|
|
|
159
159
|
}
|
|
160
160
|
|
|
161
161
|
impl Job {
|
|
162
|
-
/// Assemble a [`Job`] from a blob-free [`NarrowJobRow`] plus
|
|
163
|
-
/// `
|
|
164
|
-
///
|
|
165
|
-
/// supplies the blobs after claiming the single job it wants.
|
|
162
|
+
/// Assemble a [`Job`] from a blob-free [`NarrowJobRow`] plus `payload`/
|
|
163
|
+
/// `result` supplied by the caller. The narrow row carries every non-blob
|
|
164
|
+
/// column; reap/listing paths that don't need the blobs pass empty ones.
|
|
166
165
|
pub fn from_narrow(narrow: NarrowJobRow, payload: Vec<u8>, result: Option<Vec<u8>>) -> Self {
|
|
167
166
|
Self {
|
|
168
167
|
id: narrow.id,
|
|
@@ -3,7 +3,7 @@ use log::{error, info, warn};
|
|
|
3
3
|
use crate::error::Result;
|
|
4
4
|
use crate::job::{now_millis, NewJob};
|
|
5
5
|
use crate::periodic::{next_cron_time, next_cron_time_tz};
|
|
6
|
-
use crate::storage::Storage;
|
|
6
|
+
use crate::storage::{Storage, DEAD_WORKER_THRESHOLD_MS};
|
|
7
7
|
|
|
8
8
|
use super::{JobResult, Scheduler};
|
|
9
9
|
|
|
@@ -45,6 +45,64 @@ impl Scheduler {
|
|
|
45
45
|
})?;
|
|
46
46
|
}
|
|
47
47
|
|
|
48
|
+
// Fast-path recovery: requeue jobs whose worker died, without waiting
|
|
49
|
+
// for their full timeout. Log-and-continue so a failure here never
|
|
50
|
+
// aborts the rest of the sweep.
|
|
51
|
+
if let Err(e) = self.recover_orphaned_jobs(now) {
|
|
52
|
+
warn!("recover_orphaned_jobs error: {e}");
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
Ok(())
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
/// Requeue `Running` jobs whose claiming worker is no longer alive (crashed
|
|
59
|
+
/// without finishing). A surviving scheduler detects the dead owner via the
|
|
60
|
+
/// heartbeat table, atomically reclaims the orphaned claim — so exactly one
|
|
61
|
+
/// survivor rescues each job — then routes it through the normal
|
|
62
|
+
/// retry/dead-letter path.
|
|
63
|
+
fn recover_orphaned_jobs(&self, now: i64) -> Result<()> {
|
|
64
|
+
// Live owners = workers with a fresh heartbeat, plus self: a scheduler
|
|
65
|
+
// must never orphan its own in-flight jobs (covers the startup window
|
|
66
|
+
// before its first heartbeat row is written).
|
|
67
|
+
let mut live: Vec<String> = self
|
|
68
|
+
.storage
|
|
69
|
+
.list_workers()?
|
|
70
|
+
.into_iter()
|
|
71
|
+
.filter(|w| w.last_heartbeat >= now - DEAD_WORKER_THRESHOLD_MS)
|
|
72
|
+
.map(|w| w.worker_id)
|
|
73
|
+
.collect();
|
|
74
|
+
live.push(self.claim_owner.clone());
|
|
75
|
+
|
|
76
|
+
for (job, dead_owner) in self.storage.reap_orphaned_jobs(&live, now)? {
|
|
77
|
+
// Atomic election: only the survivor that wins the claim transfer
|
|
78
|
+
// requeues the job, so concurrent schedulers can't double-retry it.
|
|
79
|
+
match self
|
|
80
|
+
.storage
|
|
81
|
+
.reclaim_execution(&job.id, &dead_owner, &self.claim_owner)
|
|
82
|
+
{
|
|
83
|
+
Ok(true) => {
|
|
84
|
+
let error = format!("worker {dead_owner} died; recovering in-flight job");
|
|
85
|
+
if let Err(e) = self.handle_result(JobResult::Failure {
|
|
86
|
+
job_id: job.id.clone(),
|
|
87
|
+
error,
|
|
88
|
+
retry_count: job.retry_count,
|
|
89
|
+
max_retries: job.max_retries,
|
|
90
|
+
task_name: job.task_name.clone(),
|
|
91
|
+
wall_time_ns: 0,
|
|
92
|
+
should_retry: true,
|
|
93
|
+
timed_out: false,
|
|
94
|
+
}) {
|
|
95
|
+
warn!(
|
|
96
|
+
"recover_orphaned_jobs: handle_result failed for {}: {e}",
|
|
97
|
+
job.id
|
|
98
|
+
);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
Ok(false) => {} // another survivor won the race
|
|
102
|
+
Err(e) => warn!("reclaim_execution failed for {}: {e}", job.id),
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
|
|
48
106
|
Ok(())
|
|
49
107
|
}
|
|
50
108
|
|