From 36e4255ad98abe2b40229e46f535ed65656ecd49 Mon Sep 17 00:00:00 2001 From: IgorRachkov <89467086+igor04091968@users.noreply.github.com> Date: Sun, 3 May 2026 22:27:50 +0300 Subject: [PATCH] fix: handle undefined bucket filters in AQL query rewriter (#12) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The network patch that intercepts /api/0/query/ requests only handled 'unknown' hostnames in bucket IDs. When the WebUI activity store has uninitialized bucket IDs (e.g. browser watcher not installed on a host), find_bucket("undefined") or query_bucket("undefined") calls reach the server and fail with BucketQueryError. Extend rewriteUnknownCategoryBuilderQueryBody to: - Replace query_bucket(find_bucket("undefined")) and flood() wrappers with empty arrays ([]) so the query continues without missing data. - Rewrite aw-watcher-{window,afk}_undefined to the preferred host, matching the existing 'unknown' hostname logic. Applied to both aw-server/ and install-kit copies of aw-ru-patch.js. Fixes: BucketЗапросError on Trends page for host SHARKON2025 Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> --- aw-server/aw-ru-patch.js | 28 ++++++++++++++----- .../aw-server/aw-ru-patch.js | 28 ++++++++++++++----- 2 files changed, 42 insertions(+), 14 deletions(-) diff --git a/aw-server/aw-ru-patch.js b/aw-server/aw-ru-patch.js index 6af4d61..361e844 100755 --- a/aw-server/aw-ru-patch.js +++ b/aw-server/aw-ru-patch.js @@ -1541,14 +1541,28 @@ function rewriteUnknownCategoryBuilderQueryBody(body) { if (typeof body !== "string") return body; - if (body.indexOf("aw-watcher-window_unknown") === -1 && body.indexOf("aw-watcher-afk_unknown") === -1) { - return body; + if (body.indexOf("undefined") !== -1) { + body = body + .replace(/flood\(query_bucket\(find_bucket\(\\"undefined\\"\)\)\)/g, '[]') + .replace(/query_bucket\(find_bucket\(\\"undefined\\"\)\)/g, '[]') + .replace(/flood\(query_bucket\(\\"undefined\\"\)\)/g, '[]') + .replace(/query_bucket\(\\"undefined\\"\)/g, '[]'); + const ph = getPreferredWindowHostFromBuckets(); + if (ph) { + body = body + .replace(/aw-watcher-window_undefined/g, "aw-watcher-window_" + ph) + .replace(/aw-watcher-afk_undefined/g, "aw-watcher-afk_" + ph); + } } - const preferredHost = getPreferredWindowHostFromBuckets(); - if (!preferredHost) return body; - return body - .replace(/aw-watcher-window_unknown/g, "aw-watcher-window_" + preferredHost) - .replace(/aw-watcher-afk_unknown/g, "aw-watcher-afk_" + preferredHost); + if (body.indexOf("aw-watcher-window_unknown") !== -1 || body.indexOf("aw-watcher-afk_unknown") !== -1) { + const preferredHost = getPreferredWindowHostFromBuckets(); + if (preferredHost) { + body = body + .replace(/aw-watcher-window_unknown/g, "aw-watcher-window_" + preferredHost) + .replace(/aw-watcher-afk_unknown/g, "aw-watcher-afk_" + preferredHost); + } + } + return body; } function installCategoryBuilderNetworkPatch() { diff --git a/install-kit-awindows-20260427-211240/aw-server/aw-ru-patch.js b/install-kit-awindows-20260427-211240/aw-server/aw-ru-patch.js index 2491d05..28145bd 100755 --- a/install-kit-awindows-20260427-211240/aw-server/aw-ru-patch.js +++ b/install-kit-awindows-20260427-211240/aw-server/aw-ru-patch.js @@ -1500,14 +1500,28 @@ function rewriteUnknownCategoryBuilderQueryBody(body) { if (typeof body !== "string") return body; - if (body.indexOf("aw-watcher-window_unknown") === -1 && body.indexOf("aw-watcher-afk_unknown") === -1) { - return body; + if (body.indexOf("undefined") !== -1) { + body = body + .replace(/flood\(query_bucket\(find_bucket\(\\"undefined\\"\)\)\)/g, '[]') + .replace(/query_bucket\(find_bucket\(\\"undefined\\"\)\)/g, '[]') + .replace(/flood\(query_bucket\(\\"undefined\\"\)\)/g, '[]') + .replace(/query_bucket\(\\"undefined\\"\)/g, '[]'); + const ph = getPreferredWindowHostFromBuckets(); + if (ph) { + body = body + .replace(/aw-watcher-window_undefined/g, "aw-watcher-window_" + ph) + .replace(/aw-watcher-afk_undefined/g, "aw-watcher-afk_" + ph); + } } - const preferredHost = getPreferredWindowHostFromBuckets(); - if (!preferredHost) return body; - return body - .replace(/aw-watcher-window_unknown/g, "aw-watcher-window_" + preferredHost) - .replace(/aw-watcher-afk_unknown/g, "aw-watcher-afk_" + preferredHost); + if (body.indexOf("aw-watcher-window_unknown") !== -1 || body.indexOf("aw-watcher-afk_unknown") !== -1) { + const preferredHost = getPreferredWindowHostFromBuckets(); + if (preferredHost) { + body = body + .replace(/aw-watcher-window_unknown/g, "aw-watcher-window_" + preferredHost) + .replace(/aw-watcher-afk_unknown/g, "aw-watcher-afk_" + preferredHost); + } + } + return body; } function installCategoryBuilderNetworkPatch() {