Skip to content

test(runtime-host): validate Windows crash recovery - #2483

Closed
liugddx wants to merge 1 commit into
apache:mainfrom
liugddx:test/windows-runtime-host-crash
Closed

test(runtime-host): validate Windows crash recovery#2483
liugddx wants to merge 1 commit into
apache:mainfrom
liugddx:test/windows-runtime-host-crash

Conversation

@liugddx

Copy link
Copy Markdown
Member

Summary

  • enable the killed Runtime Host recovery gate on Windows
  • use an explicit fixture IPC shutdown request for portable graceful Host teardown
  • close execution and task-ledger stores before releasing root leases so Windows can remove SQLite files
  • refresh the Windows skip inventory

Validation

  • npm --workspace @maka/runtime-host run build
  • npm --workspace @maka/runtime-host run typecheck
  • node --test packages/runtime-host/dist/__tests__/execution-host-queue.test.js (9/9 passed)
  • shared execution-host fixture suites run serially (36/38 passed before the two remaining same-root-cause lease leaks were fixed)
  • the two corrected execution-host cases passed after the fix
  • final post-rebase Windows gate set passed (3/3)
  • npm run windows:inventory
  • git diff --check

The full runtime-host suite still exposes pre-existing Windows baseline failures outside this change, primarily SQLite file removal and live-root rename semantics tracked by #2142.

Part of #2142

@jackwener

Copy link
Copy Markdown
Member

Review decision

Problem real: Windows could not exercise Host crash recovery; fixture held SQLite handles across lease release (EBUSY), and SIGTERM-based graceful stop is not a portable Host teardown contract.

Fix correct:

  1. Enable killed-Host recovery test on Windows
  2. IPC → for graceful stop; SIGKILL path waits on
  3. / task-ledger before owner/reader release

Landing via rebased PR after inventory conflict resolution.

@jackwener

Copy link
Copy Markdown
Member

Landing via rebased maintainer PR. Thanks @liugddx!

@Astro-Han

Copy link
Copy Markdown
Contributor

Thanks — the recovery harness changes look well scoped. Keeping the real crash path as SIGKILL, registering the close listener before termination, using an explicit fixture IPC shutdown for graceful teardown, and closing SQLite stores before releasing the root lease are all appropriate Windows boundaries.

The recovery scenario itself is valuable: it verifies recovery before successor readiness, app_restarted, one interaction closure, one terminal event, and no repeated recovery after a third Host starts. I do not think these assertions should be reduced.

The remaining work is integration with current main:

Please rebase and regenerate the Windows inventory

The PR currently conflicts only in docs/windows-test-inventory.md. #2475 has already moved current main to 20 windows-backend-gap entries / 55 total declarations. Removing this Runtime Host skip should produce 19 / 54.

Please rebase and run npm run windows:inventory rather than resolving the generated counts manually. The four Runtime Host test/fixture files otherwise merge cleanly.

P3 — Add focused Windows CI evidence for the new contract

The existing Windows baseline builds the repository and runs inventory, scripts, smoke, and Storage tests, but it does not execute Runtime Host tests. The target recovery case currently runs automatically only on Linux; the Windows 3/3 result in the PR description is local evidence.

A narrow Windows step for the single recovery case would protect the new platform contract without running the full Runtime Host suite, for example:

node.exe--test --test-name-pattern="a killed Host is recovered exactly once" packages/runtime-host/dist/__tests__/execution-host-queue.test.js

This can remain part of the current non-blocking Windows baseline. It is a coverage improvement rather than a reason to redesign the harness.

After the rebase, regenerated inventory, and fresh CI run, this should be ready for another quick review. Thanks!

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@liugddx@jackwener@Astro-Han
, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
test(runtime-host): validate Windows crash recovery by liugddx · Pull Request #2483 · apache/maka · GitHub
Skip to content

test(runtime-host): validate Windows crash recovery - #2483

Closed
liugddx wants to merge 1 commit into
apache:mainfrom
liugddx:test/windows-runtime-host-crash
Closed

test(runtime-host): validate Windows crash recovery#2483
liugddx wants to merge 1 commit into
apache:mainfrom
liugddx:test/windows-runtime-host-crash

Conversation

@liugddx

Copy link
Copy Markdown
Member

Summary

  • enable the killed Runtime Host recovery gate on Windows
  • use an explicit fixture IPC shutdown request for portable graceful Host teardown
  • close execution and task-ledger stores before releasing root leases so Windows can remove SQLite files
  • refresh the Windows skip inventory

Validation

  • npm --workspace @maka/runtime-host run build
  • npm --workspace @maka/runtime-host run typecheck
  • node --test packages/runtime-host/dist/__tests__/execution-host-queue.test.js (9/9 passed)
  • shared execution-host fixture suites run serially (36/38 passed before the two remaining same-root-cause lease leaks were fixed)
  • the two corrected execution-host cases passed after the fix
  • final post-rebase Windows gate set passed (3/3)
  • npm run windows:inventory
  • git diff --check

The full runtime-host suite still exposes pre-existing Windows baseline failures outside this change, primarily SQLite file removal and live-root rename semantics tracked by #2142.

Part of #2142

@jackwener

Copy link
Copy Markdown
Member

Review decision

Problem real: Windows could not exercise Host crash recovery; fixture held SQLite handles across lease release (EBUSY), and SIGTERM-based graceful stop is not a portable Host teardown contract.

Fix correct:

  1. Enable killed-Host recovery test on Windows
  2. IPC → for graceful stop; SIGKILL path waits on
  3. / task-ledger before owner/reader release

Landing via rebased PR after inventory conflict resolution.

@jackwener

Copy link
Copy Markdown
Member

Landing via rebased maintainer PR. Thanks @liugddx!

@Astro-Han

Copy link
Copy Markdown
Contributor

Thanks — the recovery harness changes look well scoped. Keeping the real crash path as SIGKILL, registering the close listener before termination, using an explicit fixture IPC shutdown for graceful teardown, and closing SQLite stores before releasing the root lease are all appropriate Windows boundaries.

The recovery scenario itself is valuable: it verifies recovery before successor readiness, app_restarted, one interaction closure, one terminal event, and no repeated recovery after a third Host starts. I do not think these assertions should be reduced.

The remaining work is integration with current main:

Please rebase and regenerate the Windows inventory

The PR currently conflicts only in docs/windows-test-inventory.md. #2475 has already moved current main to 20 windows-backend-gap entries / 55 total declarations. Removing this Runtime Host skip should produce 19 / 54.

Please rebase and run npm run windows:inventory rather than resolving the generated counts manually. The four Runtime Host test/fixture files otherwise merge cleanly.

P3 — Add focused Windows CI evidence for the new contract

The existing Windows baseline builds the repository and runs inventory, scripts, smoke, and Storage tests, but it does not execute Runtime Host tests. The target recovery case currently runs automatically only on Linux; the Windows 3/3 result in the PR description is local evidence.

A narrow Windows step for the single recovery case would protect the new platform contract without running the full Runtime Host suite, for example:

node.exe--test --test-name-pattern="a killed Host is recovered exactly once" packages/runtime-host/dist/__tests__/execution-host-queue.test.js

This can remain part of the current non-blocking Windows baseline. It is a coverage improvement rather than a reason to redesign the harness.

After the rebase, regenerated inventory, and fresh CI run, this should be ready for another quick review. Thanks!

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@liugddx@jackwener@Astro-Han
, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' test(runtime-host): validate Windows crash recovery by liugddx · Pull Request #2483 · apache/maka · GitHub
Skip to content

test(runtime-host): validate Windows crash recovery - #2483

Closed
liugddx wants to merge 1 commit into
apache:mainfrom
liugddx:test/windows-runtime-host-crash
Closed

test(runtime-host): validate Windows crash recovery#2483
liugddx wants to merge 1 commit into
apache:mainfrom
liugddx:test/windows-runtime-host-crash

Conversation

@liugddx

Copy link
Copy Markdown
Member

Summary

  • enable the killed Runtime Host recovery gate on Windows
  • use an explicit fixture IPC shutdown request for portable graceful Host teardown
  • close execution and task-ledger stores before releasing root leases so Windows can remove SQLite files
  • refresh the Windows skip inventory

Validation

  • npm --workspace @maka/runtime-host run build
  • npm --workspace @maka/runtime-host run typecheck
  • node --test packages/runtime-host/dist/__tests__/execution-host-queue.test.js (9/9 passed)
  • shared execution-host fixture suites run serially (36/38 passed before the two remaining same-root-cause lease leaks were fixed)
  • the two corrected execution-host cases passed after the fix
  • final post-rebase Windows gate set passed (3/3)
  • npm run windows:inventory
  • git diff --check

The full runtime-host suite still exposes pre-existing Windows baseline failures outside this change, primarily SQLite file removal and live-root rename semantics tracked by #2142.

Part of #2142

@jackwener

Copy link
Copy Markdown
Member

Review decision

Problem real: Windows could not exercise Host crash recovery; fixture held SQLite handles across lease release (EBUSY), and SIGTERM-based graceful stop is not a portable Host teardown contract.

Fix correct:

  1. Enable killed-Host recovery test on Windows
  2. IPC → for graceful stop; SIGKILL path waits on
  3. / task-ledger before owner/reader release

Landing via rebased PR after inventory conflict resolution.

@jackwener

Copy link
Copy Markdown
Member

Landing via rebased maintainer PR. Thanks @liugddx!

@Astro-Han

Copy link
Copy Markdown
Contributor

Thanks — the recovery harness changes look well scoped. Keeping the real crash path as SIGKILL, registering the close listener before termination, using an explicit fixture IPC shutdown for graceful teardown, and closing SQLite stores before releasing the root lease are all appropriate Windows boundaries.

The recovery scenario itself is valuable: it verifies recovery before successor readiness, app_restarted, one interaction closure, one terminal event, and no repeated recovery after a third Host starts. I do not think these assertions should be reduced.

The remaining work is integration with current main:

Please rebase and regenerate the Windows inventory

The PR currently conflicts only in docs/windows-test-inventory.md. #2475 has already moved current main to 20 windows-backend-gap entries / 55 total declarations. Removing this Runtime Host skip should produce 19 / 54.

Please rebase and run npm run windows:inventory rather than resolving the generated counts manually. The four Runtime Host test/fixture files otherwise merge cleanly.

P3 — Add focused Windows CI evidence for the new contract

The existing Windows baseline builds the repository and runs inventory, scripts, smoke, and Storage tests, but it does not execute Runtime Host tests. The target recovery case currently runs automatically only on Linux; the Windows 3/3 result in the PR description is local evidence.

A narrow Windows step for the single recovery case would protect the new platform contract without running the full Runtime Host suite, for example:

node.exe--test --test-name-pattern="a killed Host is recovered exactly once" packages/runtime-host/dist/__tests__/execution-host-queue.test.js

This can remain part of the current non-blocking Windows baseline. It is a coverage improvement rather than a reason to redesign the harness.

After the rebase, regenerated inventory, and fresh CI run, this should be ready for another quick review. Thanks!

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@liugddx@jackwener@Astro-Han
, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' test(runtime-host): validate Windows crash recovery by liugddx · Pull Request #2483 · apache/maka · GitHub
Skip to content

test(runtime-host): validate Windows crash recovery - #2483

Closed
liugddx wants to merge 1 commit into
apache:mainfrom
liugddx:test/windows-runtime-host-crash
Closed

test(runtime-host): validate Windows crash recovery#2483
liugddx wants to merge 1 commit into
apache:mainfrom
liugddx:test/windows-runtime-host-crash

Conversation

@liugddx

Copy link
Copy Markdown
Member

Summary

  • enable the killed Runtime Host recovery gate on Windows
  • use an explicit fixture IPC shutdown request for portable graceful Host teardown
  • close execution and task-ledger stores before releasing root leases so Windows can remove SQLite files
  • refresh the Windows skip inventory

Validation

  • npm --workspace @maka/runtime-host run build
  • npm --workspace @maka/runtime-host run typecheck
  • node --test packages/runtime-host/dist/__tests__/execution-host-queue.test.js (9/9 passed)
  • shared execution-host fixture suites run serially (36/38 passed before the two remaining same-root-cause lease leaks were fixed)
  • the two corrected execution-host cases passed after the fix
  • final post-rebase Windows gate set passed (3/3)
  • npm run windows:inventory
  • git diff --check

The full runtime-host suite still exposes pre-existing Windows baseline failures outside this change, primarily SQLite file removal and live-root rename semantics tracked by #2142.

Part of #2142

@jackwener

Copy link
Copy Markdown
Member

Review decision

Problem real: Windows could not exercise Host crash recovery; fixture held SQLite handles across lease release (EBUSY), and SIGTERM-based graceful stop is not a portable Host teardown contract.

Fix correct:

  1. Enable killed-Host recovery test on Windows
  2. IPC → for graceful stop; SIGKILL path waits on
  3. / task-ledger before owner/reader release

Landing via rebased PR after inventory conflict resolution.

@jackwener

Copy link
Copy Markdown
Member

Landing via rebased maintainer PR. Thanks @liugddx!

@Astro-Han

Copy link
Copy Markdown
Contributor

Thanks — the recovery harness changes look well scoped. Keeping the real crash path as SIGKILL, registering the close listener before termination, using an explicit fixture IPC shutdown for graceful teardown, and closing SQLite stores before releasing the root lease are all appropriate Windows boundaries.

The recovery scenario itself is valuable: it verifies recovery before successor readiness, app_restarted, one interaction closure, one terminal event, and no repeated recovery after a third Host starts. I do not think these assertions should be reduced.

The remaining work is integration with current main:

Please rebase and regenerate the Windows inventory

The PR currently conflicts only in docs/windows-test-inventory.md. #2475 has already moved current main to 20 windows-backend-gap entries / 55 total declarations. Removing this Runtime Host skip should produce 19 / 54.

Please rebase and run npm run windows:inventory rather than resolving the generated counts manually. The four Runtime Host test/fixture files otherwise merge cleanly.

P3 — Add focused Windows CI evidence for the new contract

The existing Windows baseline builds the repository and runs inventory, scripts, smoke, and Storage tests, but it does not execute Runtime Host tests. The target recovery case currently runs automatically only on Linux; the Windows 3/3 result in the PR description is local evidence.

A narrow Windows step for the single recovery case would protect the new platform contract without running the full Runtime Host suite, for example:

node.exe--test --test-name-pattern="a killed Host is recovered exactly once" packages/runtime-host/dist/__tests__/execution-host-queue.test.js

This can remain part of the current non-blocking Windows baseline. It is a coverage improvement rather than a reason to redesign the harness.

After the rebase, regenerated inventory, and fresh CI run, this should be ready for another quick review. Thanks!

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@liugddx@jackwener@Astro-Han
, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' test(runtime-host): validate Windows crash recovery by liugddx · Pull Request #2483 · apache/maka · GitHub
Skip to content

test(runtime-host): validate Windows crash recovery - #2483

Closed
liugddx wants to merge 1 commit into
apache:mainfrom
liugddx:test/windows-runtime-host-crash
Closed

test(runtime-host): validate Windows crash recovery#2483
liugddx wants to merge 1 commit into
apache:mainfrom
liugddx:test/windows-runtime-host-crash

Conversation

@liugddx

Copy link
Copy Markdown
Member

Summary

  • enable the killed Runtime Host recovery gate on Windows
  • use an explicit fixture IPC shutdown request for portable graceful Host teardown
  • close execution and task-ledger stores before releasing root leases so Windows can remove SQLite files
  • refresh the Windows skip inventory

Validation

  • npm --workspace @maka/runtime-host run build
  • npm --workspace @maka/runtime-host run typecheck
  • node --test packages/runtime-host/dist/__tests__/execution-host-queue.test.js (9/9 passed)
  • shared execution-host fixture suites run serially (36/38 passed before the two remaining same-root-cause lease leaks were fixed)
  • the two corrected execution-host cases passed after the fix
  • final post-rebase Windows gate set passed (3/3)
  • npm run windows:inventory
  • git diff --check

The full runtime-host suite still exposes pre-existing Windows baseline failures outside this change, primarily SQLite file removal and live-root rename semantics tracked by #2142.

Part of #2142

@jackwener

Copy link
Copy Markdown
Member

Review decision

Problem real: Windows could not exercise Host crash recovery; fixture held SQLite handles across lease release (EBUSY), and SIGTERM-based graceful stop is not a portable Host teardown contract.

Fix correct:

  1. Enable killed-Host recovery test on Windows
  2. IPC → for graceful stop; SIGKILL path waits on
  3. / task-ledger before owner/reader release

Landing via rebased PR after inventory conflict resolution.

@jackwener

Copy link
Copy Markdown
Member

Landing via rebased maintainer PR. Thanks @liugddx!

@Astro-Han

Copy link
Copy Markdown
Contributor

Thanks — the recovery harness changes look well scoped. Keeping the real crash path as SIGKILL, registering the close listener before termination, using an explicit fixture IPC shutdown for graceful teardown, and closing SQLite stores before releasing the root lease are all appropriate Windows boundaries.

The recovery scenario itself is valuable: it verifies recovery before successor readiness, app_restarted, one interaction closure, one terminal event, and no repeated recovery after a third Host starts. I do not think these assertions should be reduced.

The remaining work is integration with current main:

Please rebase and regenerate the Windows inventory

The PR currently conflicts only in docs/windows-test-inventory.md. #2475 has already moved current main to 20 windows-backend-gap entries / 55 total declarations. Removing this Runtime Host skip should produce 19 / 54.

Please rebase and run npm run windows:inventory rather than resolving the generated counts manually. The four Runtime Host test/fixture files otherwise merge cleanly.

P3 — Add focused Windows CI evidence for the new contract

The existing Windows baseline builds the repository and runs inventory, scripts, smoke, and Storage tests, but it does not execute Runtime Host tests. The target recovery case currently runs automatically only on Linux; the Windows 3/3 result in the PR description is local evidence.

A narrow Windows step for the single recovery case would protect the new platform contract without running the full Runtime Host suite, for example:

node.exe--test --test-name-pattern="a killed Host is recovered exactly once" packages/runtime-host/dist/__tests__/execution-host-queue.test.js

This can remain part of the current non-blocking Windows baseline. It is a coverage improvement rather than a reason to redesign the harness.

After the rebase, regenerated inventory, and fresh CI run, this should be ready for another quick review. Thanks!

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@liugddx@jackwener@Astro-Han
, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' test(runtime-host): validate Windows crash recovery by liugddx · Pull Request #2483 · apache/maka · GitHub
Skip to content

test(runtime-host): validate Windows crash recovery - #2483

Closed
liugddx wants to merge 1 commit into
apache:mainfrom
liugddx:test/windows-runtime-host-crash
Closed

test(runtime-host): validate Windows crash recovery#2483
liugddx wants to merge 1 commit into
apache:mainfrom
liugddx:test/windows-runtime-host-crash

Conversation

@liugddx

Copy link
Copy Markdown
Member

Summary

  • enable the killed Runtime Host recovery gate on Windows
  • use an explicit fixture IPC shutdown request for portable graceful Host teardown
  • close execution and task-ledger stores before releasing root leases so Windows can remove SQLite files
  • refresh the Windows skip inventory

Validation

  • npm --workspace @maka/runtime-host run build
  • npm --workspace @maka/runtime-host run typecheck
  • node --test packages/runtime-host/dist/__tests__/execution-host-queue.test.js (9/9 passed)
  • shared execution-host fixture suites run serially (36/38 passed before the two remaining same-root-cause lease leaks were fixed)
  • the two corrected execution-host cases passed after the fix
  • final post-rebase Windows gate set passed (3/3)
  • npm run windows:inventory
  • git diff --check

The full runtime-host suite still exposes pre-existing Windows baseline failures outside this change, primarily SQLite file removal and live-root rename semantics tracked by #2142.

Part of #2142

@jackwener

Copy link
Copy Markdown
Member

Review decision

Problem real: Windows could not exercise Host crash recovery; fixture held SQLite handles across lease release (EBUSY), and SIGTERM-based graceful stop is not a portable Host teardown contract.

Fix correct:

  1. Enable killed-Host recovery test on Windows
  2. IPC → for graceful stop; SIGKILL path waits on
  3. / task-ledger before owner/reader release

Landing via rebased PR after inventory conflict resolution.

@jackwener

Copy link
Copy Markdown
Member

Landing via rebased maintainer PR. Thanks @liugddx!

@Astro-Han

Copy link
Copy Markdown
Contributor

Thanks — the recovery harness changes look well scoped. Keeping the real crash path as SIGKILL, registering the close listener before termination, using an explicit fixture IPC shutdown for graceful teardown, and closing SQLite stores before releasing the root lease are all appropriate Windows boundaries.

The recovery scenario itself is valuable: it verifies recovery before successor readiness, app_restarted, one interaction closure, one terminal event, and no repeated recovery after a third Host starts. I do not think these assertions should be reduced.

The remaining work is integration with current main:

Please rebase and regenerate the Windows inventory

The PR currently conflicts only in docs/windows-test-inventory.md. #2475 has already moved current main to 20 windows-backend-gap entries / 55 total declarations. Removing this Runtime Host skip should produce 19 / 54.

Please rebase and run npm run windows:inventory rather than resolving the generated counts manually. The four Runtime Host test/fixture files otherwise merge cleanly.

P3 — Add focused Windows CI evidence for the new contract

The existing Windows baseline builds the repository and runs inventory, scripts, smoke, and Storage tests, but it does not execute Runtime Host tests. The target recovery case currently runs automatically only on Linux; the Windows 3/3 result in the PR description is local evidence.

A narrow Windows step for the single recovery case would protect the new platform contract without running the full Runtime Host suite, for example:

node.exe--test --test-name-pattern="a killed Host is recovered exactly once" packages/runtime-host/dist/__tests__/execution-host-queue.test.js

This can remain part of the current non-blocking Windows baseline. It is a coverage improvement rather than a reason to redesign the harness.

After the rebase, regenerated inventory, and fresh CI run, this should be ready for another quick review. Thanks!

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@liugddx@jackwener@Astro-Han
, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); })(); test(runtime-host): validate Windows crash recovery by liugddx · Pull Request #2483 · apache/maka · GitHub
Skip to content

test(runtime-host): validate Windows crash recovery - #2483

Closed
liugddx wants to merge 1 commit into
apache:mainfrom
liugddx:test/windows-runtime-host-crash
Closed

test(runtime-host): validate Windows crash recovery#2483
liugddx wants to merge 1 commit into
apache:mainfrom
liugddx:test/windows-runtime-host-crash

Conversation

@liugddx

Copy link
Copy Markdown
Member

Summary

  • enable the killed Runtime Host recovery gate on Windows
  • use an explicit fixture IPC shutdown request for portable graceful Host teardown
  • close execution and task-ledger stores before releasing root leases so Windows can remove SQLite files
  • refresh the Windows skip inventory

Validation

  • npm --workspace @maka/runtime-host run build
  • npm --workspace @maka/runtime-host run typecheck
  • node --test packages/runtime-host/dist/__tests__/execution-host-queue.test.js (9/9 passed)
  • shared execution-host fixture suites run serially (36/38 passed before the two remaining same-root-cause lease leaks were fixed)
  • the two corrected execution-host cases passed after the fix
  • final post-rebase Windows gate set passed (3/3)
  • npm run windows:inventory
  • git diff --check

The full runtime-host suite still exposes pre-existing Windows baseline failures outside this change, primarily SQLite file removal and live-root rename semantics tracked by #2142.

Part of #2142

@jackwener

Copy link
Copy Markdown
Member

Review decision

Problem real: Windows could not exercise Host crash recovery; fixture held SQLite handles across lease release (EBUSY), and SIGTERM-based graceful stop is not a portable Host teardown contract.

Fix correct:

  1. Enable killed-Host recovery test on Windows
  2. IPC → for graceful stop; SIGKILL path waits on
  3. / task-ledger before owner/reader release

Landing via rebased PR after inventory conflict resolution.

@jackwener

Copy link
Copy Markdown
Member

Landing via rebased maintainer PR. Thanks @liugddx!

@Astro-Han

Copy link
Copy Markdown
Contributor

Thanks — the recovery harness changes look well scoped. Keeping the real crash path as SIGKILL, registering the close listener before termination, using an explicit fixture IPC shutdown for graceful teardown, and closing SQLite stores before releasing the root lease are all appropriate Windows boundaries.

The recovery scenario itself is valuable: it verifies recovery before successor readiness, app_restarted, one interaction closure, one terminal event, and no repeated recovery after a third Host starts. I do not think these assertions should be reduced.

The remaining work is integration with current main:

Please rebase and regenerate the Windows inventory

The PR currently conflicts only in docs/windows-test-inventory.md. #2475 has already moved current main to 20 windows-backend-gap entries / 55 total declarations. Removing this Runtime Host skip should produce 19 / 54.

Please rebase and run npm run windows:inventory rather than resolving the generated counts manually. The four Runtime Host test/fixture files otherwise merge cleanly.

P3 — Add focused Windows CI evidence for the new contract

The existing Windows baseline builds the repository and runs inventory, scripts, smoke, and Storage tests, but it does not execute Runtime Host tests. The target recovery case currently runs automatically only on Linux; the Windows 3/3 result in the PR description is local evidence.

A narrow Windows step for the single recovery case would protect the new platform contract without running the full Runtime Host suite, for example:

node.exe--test --test-name-pattern="a killed Host is recovered exactly once" packages/runtime-host/dist/__tests__/execution-host-queue.test.js

This can remain part of the current non-blocking Windows baseline. It is a coverage improvement rather than a reason to redesign the harness.

After the rebase, regenerated inventory, and fresh CI run, this should be ready for another quick review. Thanks!

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@liugddx@jackwener@Astro-Han