Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 10 additions & 1 deletion taskvine/src/manager/vine_manager.c
Original file line number Diff line number Diff line change
Expand Up @@ -306,6 +306,7 @@ static void handle_idle_disconnect_request(struct vine_manager *q, struct vine_w
debug(D_VINE, "Accepting disconnect request from worker %s (%s).", w->hostname, w->addrport);
q->stats->workers_idled_out++;
vine_manager_send(q, w, "exit\n");
hash_table_insert(q->workers_idle_disconnecting, w->hashkey, w);
}

return;
Expand Down Expand Up @@ -1523,7 +1524,12 @@ we remove the worker and retry the tasks dispatched to it elsewhere.

static void handle_worker_failure(struct vine_manager *q, struct vine_worker_info *w)
{
vine_manager_remove_worker(q, w, VINE_WORKER_DISCONNECT_FAILURE);
vine_worker_disconnect_reason_t reason = VINE_WORKER_DISCONNECT_FAILURE;
if (hash_table_remove(q->workers_idle_disconnecting, w->hashkey)) {
reason = VINE_WORKER_DISCONNECT_IDLE_OUT;
}

vine_manager_remove_worker(q, w, reason);
return;
}

Expand Down Expand Up @@ -4050,6 +4056,7 @@ struct vine_manager *vine_ssl_create(int port, const char *key, const char *cert
q->file_worker_table = hash_table_create(0, 0);
q->temp_files_to_replicate = priority_queue_create(0);
q->worker_blocklist = hash_table_create(0, 0);
q->workers_idle_disconnecting = hash_table_create(0, 0);

q->file_table = hash_table_create(0, 0);

Expand Down Expand Up @@ -4410,6 +4417,8 @@ void vine_delete(struct vine_manager *q)
hash_table_clear(q->worker_blocklist, (void *)vine_blocklist_info_delete);
hash_table_delete(q->worker_blocklist);

hash_table_delete(q->workers_idle_disconnecting);

vine_current_transfers_clear(q);
hash_table_delete(q->current_transfer_table);

Expand Down
1 change: 1 addition & 0 deletions taskvine/src/manager/vine_manager.h
Original file line number Diff line number Diff line change
Expand Up @@ -120,6 +120,7 @@ struct vine_manager {
struct hash_table *workers_with_watched_file_updates; /* Maps link -> vine_worker_info */
struct hash_table *current_transfer_table; /* Maps uuid -> struct transfer_pair */
struct itable *task_group_table; /* Maps group id -> list vine_task */
struct hash_table *workers_idle_disconnecting; /* set of workers that were granted a request to idle disconnect, and are in the process of disconnecting. */

/* Primary data structures for tracking files. */

Expand Down