| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
1 parent 8a971a0 commit 05ec9c4
2 files changed
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -117,6 +117,8 @@ class WorkerThreadsTaskRunner::DelayedTaskScheduler { | |||
| 117 | 117 | double delay_in_seconds) { | |
| 118 | 118 | auto locked = tasks_.Lock(); | |
| 119 | 119 | ||
| 120 | + if (has_shut_down_) return; | ||
| 121 | + | ||
| 120 | 122 | auto entry = std::make_unique<TaskQueueEntry>(std::move(task), priority); | |
| 121 | 123 | auto delayed = std::make_unique<ScheduleTask>( | |
| 122 | 124 | this, std::move(entry), delay_in_seconds); | |
@@ -132,6 +134,7 @@ class WorkerThreadsTaskRunner::DelayedTaskScheduler { | |||
| 132 | 134 | ||
| 133 | 135 | void Stop() { | |
| 134 | 136 | auto locked = tasks_.Lock(); | |
| 137 | + has_shut_down_ = true; | ||
| 135 | 138 | locked.Push(std::make_unique<StopTask>(this)); | |
| 136 | 139 | uv_async_send(&flush_tasks_); | |
| 137 | 140 | } | |
@@ -241,6 +244,7 @@ class WorkerThreadsTaskRunner::DelayedTaskScheduler { | |||
| 241 | 244 | uv_loop_t loop_; | |
| 242 | 245 | uv_async_t flush_tasks_; | |
| 243 | 246 | std::unordered_set<uv_timer_t*> timers_; | |
| 247 | + bool has_shut_down_ = false; | ||
| 244 | 248 | }; | |
| 245 | 249 | ||
| 246 | 250 | WorkerThreadsTaskRunner::WorkerThreadsTaskRunner( | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -0,0 +1,32 @@ | |||
| 1 | + 'use strict'; | ||
| 2 | + // Ref: https://github.com/nodejs/node/issues/56645 | ||
| 3 | + const common = require('../common'); | ||
| 4 | + const assert = require('assert'); | ||
| 5 | + const cp = require('child_process'); | ||
| 6 | + const http = require('http'); | ||
| 7 | + | ||
| 8 | + if (process.argv[2] === 'child') { | ||
| 9 | + http | ||
| 10 | + .createServer((_, res) => { | ||
| 11 | + res.writeHead(302, { Location: '/' }); | ||
| 12 | + res.end(); | ||
| 13 | + }) | ||
| 14 | + .listen(0, '127.0.0.1', async function() { | ||
| 15 | + try { | ||
| 16 | + await fetch(`http://127.0.0.1:${this.address().port}/`); | ||
| 17 | + } catch { | ||
| 18 | + // ignore | ||
| 19 | + } | ||
| 20 | + process.exit(0); | ||
| 21 | + }); | ||
| 22 | + } else { | ||
| 23 | + const child = cp.spawn(process.execPath, [__filename, 'child']); | ||
| 24 | + | ||
| 25 | + child.on( | ||
| 26 | + 'close', | ||
| 27 | + common.mustCall((exitCode, signal) => { | ||
| 28 | + assert.strictEqual(exitCode, 0); | ||
| 29 | + assert.strictEqual(signal, null); | ||
| 30 | + }), | ||
| 31 | + ); | ||
| 32 | + } | ||
| Back | FazBrowse Home | New Git URL |
0 commit comments