core: Chasing shutdown issues some more. Logging. No more task promises once shutdown starts. #108
Some checks failed
Build Tilde Friends / Build-All (push) Has been cancelled
Some checks failed
Build Tilde Friends / Build-All (push) Has been cancelled
This commit is contained in:
parent
fc7c4b1257
commit
72e1b2025c
@ -813,6 +813,11 @@ void tf_http_destroy(tf_http_t* http)
|
||||
return;
|
||||
}
|
||||
|
||||
if (!http->is_shutting_down)
|
||||
{
|
||||
tf_printf("tf_http_destroy\n");
|
||||
}
|
||||
|
||||
http->is_shutting_down = true;
|
||||
http->is_in_destroy = true;
|
||||
|
||||
|
24
src/task.c
24
src/task.c
@ -1301,19 +1301,19 @@ JSValue tf_task_allocate_promise(tf_task_t* task, promiseid_t* out_promise)
|
||||
JS_FreeValue(task->_context, error);
|
||||
}
|
||||
|
||||
promiseid_t promiseId;
|
||||
promiseid_t promise_id;
|
||||
do
|
||||
{
|
||||
promiseId = task->_nextPromise++;
|
||||
} while (_tf_task_find_promise(task, promiseId) || !promiseId);
|
||||
promise_id = task->_nextPromise++;
|
||||
} while (_tf_task_find_promise(task, promise_id) || !promise_id);
|
||||
|
||||
promise_t promise = {
|
||||
.id = promiseId,
|
||||
.id = promise_id,
|
||||
.values = { JS_NULL, JS_NULL },
|
||||
.stack_hash = stack_hash,
|
||||
};
|
||||
JSValue result = JS_NewPromiseCapability(task->_context, promise.values);
|
||||
int index = tf_util_insert_index((void*)(intptr_t)promiseId, task->_promises, task->_promise_count, sizeof(promise_t), _promise_compare);
|
||||
int index = tf_util_insert_index((void*)(intptr_t)promise_id, task->_promises, task->_promise_count, sizeof(promise_t), _promise_compare);
|
||||
task->_promises = tf_resize_vec(task->_promises, sizeof(promise_t) * (task->_promise_count + 1));
|
||||
if (task->_promise_count - index)
|
||||
{
|
||||
@ -1321,7 +1321,12 @@ JSValue tf_task_allocate_promise(tf_task_t* task, promiseid_t* out_promise)
|
||||
}
|
||||
task->_promises[index] = promise;
|
||||
task->_promise_count++;
|
||||
*out_promise = promiseId;
|
||||
*out_promise = promise_id;
|
||||
|
||||
if (task->_shutting_down)
|
||||
{
|
||||
tf_task_reject_promise(task, promise_id, JS_ThrowInternalError(task->_context, "Shutting down"));
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
@ -1383,7 +1388,7 @@ static void _promise_release_for_task(tf_task_t* task, taskid_t task_id)
|
||||
const promise_t* promise = &task->_promises[i];
|
||||
if (promise->task == task_id)
|
||||
{
|
||||
tf_task_reject_promise(task, promise->id, JS_ThrowInternalError(task->_context, "Task is gone."));
|
||||
tf_task_reject_promise(task, promise->id, JS_ThrowInternalError(task->_context, "Task is gone"));
|
||||
more = true;
|
||||
}
|
||||
}
|
||||
@ -1819,6 +1824,11 @@ JSValue tf_taskstub_kill(tf_taskstub_t* stub);
|
||||
|
||||
void tf_task_destroy(tf_task_t* task)
|
||||
{
|
||||
if (!task->_shutting_down)
|
||||
{
|
||||
tf_printf("tf_task_destroy\n");
|
||||
}
|
||||
|
||||
task->_shutting_down = true;
|
||||
|
||||
while (task->_children)
|
||||
|
Loading…
x
Reference in New Issue
Block a user