feat: Implement job abandonment logic for reconnected workers in bot services. Introduce a mechanism to cancel pending and running jobs when a worker reconnects, ensuring a fresh start for new jobs. Update tests to verify job cancellation behavior upon worker re-registration. Enhance UI components in desktop application for better user experience and clarity on bot status.
This commit is contained in:
@@ -80,6 +80,32 @@ def test_create_job_requires_worker_and_claim_is_atomic(store):
|
||||
assert other is None
|
||||
|
||||
|
||||
def test_reregister_abandons_leftover_job(store):
|
||||
job_store, JobStatus, _WorkerStatus = store
|
||||
job_store.register_worker("PC-01")
|
||||
job = job_store.create_job(
|
||||
worker_id="PC-01",
|
||||
excel_key="uploads/x/input.xlsx",
|
||||
original_filename="datos.xlsx",
|
||||
)
|
||||
job_store.claim_pending("PC-01")
|
||||
|
||||
job_store.register_worker("PC-01")
|
||||
leftover = job_store.get_job(job.id)
|
||||
assert leftover is not None
|
||||
assert leftover.status == JobStatus.CANCELLED.value
|
||||
assert job_store.claim_pending("PC-01") is None
|
||||
|
||||
fresh = job_store.create_job(
|
||||
worker_id="PC-01",
|
||||
excel_key="uploads/y/input.xlsx",
|
||||
original_filename="nuevo.xlsx",
|
||||
)
|
||||
claimed = job_store.claim_pending("PC-01")
|
||||
assert claimed is not None
|
||||
assert claimed.id == fresh.id
|
||||
|
||||
|
||||
def test_cancel_pending_marks_cancelled(store):
|
||||
job_store, JobStatus, _WorkerStatus = store
|
||||
job_store.register_worker("PC-01")
|
||||
|
||||
Reference in New Issue
Block a user