diff --git a/taskvine/src/manager/vine_file.c b/taskvine/src/manager/vine_file.c index c11be4355b..a646aab7d1 100644 --- a/taskvine/src/manager/vine_file.c +++ b/taskvine/src/manager/vine_file.c @@ -87,7 +87,7 @@ struct vine_file *vine_file_create(const char *source, const char *cached_name, f->size = size; f->mini_task = mini_task; f->recovery_task = 0; - f->state = VINE_FILE_STATE_PENDING; + f->state = VINE_FILE_STATE_CREATED; /* Assume state created until told otherwise */ f->cache_level = cache_level; f->flags = flags; diff --git a/taskvine/src/manager/vine_manager.c b/taskvine/src/manager/vine_manager.c index 946d1132f7..85dcaa4a39 100644 --- a/taskvine/src/manager/vine_manager.c +++ b/taskvine/src/manager/vine_manager.c @@ -3249,7 +3249,9 @@ static int vine_manager_check_inputs_available(struct vine_manager *q, struct vi LIST_ITERATE(t->input_mounts, m) { struct vine_file *f = m->file; - if (f->type == VINE_TEMP && f->state == VINE_FILE_STATE_CREATED) { + if (f->type == VINE_FILE && f->state == VINE_FILE_STATE_PENDING) { + all_available = 0; + } else if (f->type == VINE_TEMP && f->state == VINE_FILE_STATE_CREATED) { if (!vine_file_replica_table_exists_somewhere(q, f->cached_name)) { vine_manager_consider_recovery_task(q, f, f->recovery_task); all_available = 0; diff --git a/taskvine/src/manager/vine_task.c b/taskvine/src/manager/vine_task.c index c0ea564b27..c8dc6e15b4 100644 --- a/taskvine/src/manager/vine_task.c +++ b/taskvine/src/manager/vine_task.c @@ -573,6 +573,8 @@ int vine_task_add_output(struct vine_task *t, struct vine_file *f, const char *r return 0; } + f->state = VINE_FILE_STATE_PENDING; + struct vine_mount *m = vine_mount_create(f, remote_name, flags, 0); list_push_tail(t->output_mounts, m);