querysub 0.320.0 → 0.322.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/2-proxy/PathValueProxyWatcher.ts +1 -8
- package/src/4-querysub/Querysub.ts +2 -2
- package/src/diagnostics/logs/FastArchiveAppendable.ts +10 -3
- package/src/diagnostics/logs/FastArchiveController.ts +4 -3
- package/src/diagnostics/logs/TimeRangeSelector.tsx +10 -1
- package/src/diagnostics/logs/lifeCycleAnalysis/spec.md +4 -1
package/package.json
CHANGED
|
@@ -2255,15 +2255,8 @@ registerPeriodic(function checkForZombieWatches() {
|
|
|
2255
2255
|
let zombies = Array.from(proxyWatcher.getAllWatchers()).filter(isZombieWatch);
|
|
2256
2256
|
lastZombieCount = zombies.length;
|
|
2257
2257
|
if (zombies.length > 0) {
|
|
2258
|
-
console.warn(red(`Found ${zombies.length} zombie watchers`));
|
|
2259
2258
|
let namesSet = new Set(zombies.map(x => x.debugName));
|
|
2260
|
-
|
|
2261
|
-
for (let name of topNames) {
|
|
2262
|
-
console.warn(red(` ${name}`));
|
|
2263
|
-
}
|
|
2264
|
-
if (namesSet.size > topNames.length) {
|
|
2265
|
-
console.warn(red(` ... and ${namesSet.size - topNames.length} more`));
|
|
2266
|
-
}
|
|
2259
|
+
console.warn(`Found ${zombies.length} zombie watchers`, { names: Array.from(namesSet) });
|
|
2267
2260
|
}
|
|
2268
2261
|
});
|
|
2269
2262
|
|
|
@@ -16,7 +16,7 @@ import { SocketFunction } from "socket-function/SocketFunction";
|
|
|
16
16
|
import { isHotReloading, watchFilesAndTriggerHotReloading } from "socket-function/hot/HotReloadController";
|
|
17
17
|
import { RequireController, setRequireBootRequire } from "socket-function/require/RequireController";
|
|
18
18
|
import { cache, cacheLimited, lazy } from "socket-function/src/caching";
|
|
19
|
-
import { getOwnMachineId, getThreadKeyCert, verifyMachineIdForPublicKey } from "../-a-auth/certs";
|
|
19
|
+
import { getOwnMachineId, getOwnThreadId, getThreadKeyCert, verifyMachineIdForPublicKey } from "../-a-auth/certs";
|
|
20
20
|
import { getHostedIP, getSNICerts, publishMachineARecords } from "../-e-certs/EdgeCertController";
|
|
21
21
|
import { LOCAL_DOMAIN, nodePathAuthority } from "../0-path-value-core/NodePathAuthorities";
|
|
22
22
|
import { debugCoreMode, registerGetCompressNetwork, encodeParentFilter, registerGetCompressDisk, authorityStorage } from "../0-path-value-core/pathValueCore";
|
|
@@ -519,7 +519,7 @@ export class Querysub {
|
|
|
519
519
|
|
|
520
520
|
public static getOwnNodeId = getOwnNodeId;
|
|
521
521
|
public static getSelfNodeId = getOwnNodeId;
|
|
522
|
-
public static getOwnThreadId =
|
|
522
|
+
public static getOwnThreadId = getOwnThreadId;
|
|
523
523
|
|
|
524
524
|
/** Set ClientWatcher.DEBUG_SOURCES to true for to be populated */
|
|
525
525
|
public static getTriggerReason() {
|
|
@@ -99,7 +99,10 @@ export type DatumStats = {
|
|
|
99
99
|
};
|
|
100
100
|
|
|
101
101
|
|
|
102
|
-
export function getFileTimeStamp(path: string):
|
|
102
|
+
export function getFileTimeStamp(path: string): {
|
|
103
|
+
startTime: number;
|
|
104
|
+
endTime: number;
|
|
105
|
+
} {
|
|
103
106
|
let file = path.replaceAll("\\", "/").split("/").at(-1)!;
|
|
104
107
|
// Remove .log extension and parse as ISO date
|
|
105
108
|
let dateStr = file.replace(/\.log$/, "");
|
|
@@ -107,7 +110,11 @@ export function getFileTimeStamp(path: string): number {
|
|
|
107
110
|
if (dateStr.length === 13) { // YYYY-MM-DDTHH format
|
|
108
111
|
dateStr += ":00:00.000Z";
|
|
109
112
|
}
|
|
110
|
-
|
|
113
|
+
let startTime = new Date(dateStr).getTime();
|
|
114
|
+
return {
|
|
115
|
+
startTime,
|
|
116
|
+
endTime: startTime + timeInHour,
|
|
117
|
+
};
|
|
111
118
|
}
|
|
112
119
|
|
|
113
120
|
|
|
@@ -284,7 +291,7 @@ export class FastArchiveAppendable<Datum> {
|
|
|
284
291
|
try {
|
|
285
292
|
// We could use modified time here? Although, this is nice if we move files around, and then manually have them moved, although even then... this could cause problem be tripping while we are copying the file, so... maybe this is just wrong?
|
|
286
293
|
let timeStamp = getFileTimeStamp(fullPath);
|
|
287
|
-
if (timeStamp > Date.now() - UPLOAD_THRESHOLD) continue;
|
|
294
|
+
if (timeStamp.endTime > Date.now() - UPLOAD_THRESHOLD) continue;
|
|
288
295
|
|
|
289
296
|
// NOTE: Because we use the same target path, if multiple services do this at the same time it's fine. Not great, but... fine.
|
|
290
297
|
let backblazePath = FastArchiveAppendable.getBackblazePath({ fileName: file, threadId });
|
|
@@ -101,7 +101,7 @@ export class FastArchiveAppendableControllerBase {
|
|
|
101
101
|
|
|
102
102
|
let fileTimestamp = getFileTimeStamp(file);
|
|
103
103
|
//console.log(`Found ${new Date(fileTimestamp).toISOString()} in ${threadDir + file}`);
|
|
104
|
-
if (fileTimestamp < timeRange.startTime || fileTimestamp > timeRange.endTime) {
|
|
104
|
+
if (fileTimestamp.endTime < timeRange.startTime || fileTimestamp.startTime > timeRange.endTime) {
|
|
105
105
|
continue;
|
|
106
106
|
}
|
|
107
107
|
|
|
@@ -418,8 +418,9 @@ export class FastArchiveAppendableControllerBase {
|
|
|
418
418
|
let urlObj = new URL(url);
|
|
419
419
|
urlObj.hostname = ipDomain;
|
|
420
420
|
url = urlObj.toString();
|
|
421
|
-
let
|
|
422
|
-
let
|
|
421
|
+
let timeStamp = getFileTimeStamp(file.path);
|
|
422
|
+
let startTime = timeStamp.startTime;
|
|
423
|
+
let endTime = timeStamp.endTime;
|
|
423
424
|
|
|
424
425
|
localFiles.push({
|
|
425
426
|
nodeId: aliveNodeId,
|
|
@@ -7,7 +7,7 @@ import { formatTime } from "socket-function/src/formatting/format";
|
|
|
7
7
|
import { InputLabel } from "../../library-components/InputLabel";
|
|
8
8
|
import { Button } from "../../library-components/Button";
|
|
9
9
|
import { Querysub } from "../../4-querysub/QuerysubController";
|
|
10
|
-
import { timeInHour, timeInMinute } from "socket-function/src/misc";
|
|
10
|
+
import { timeInDay, timeInHour, timeInMinute } from "socket-function/src/misc";
|
|
11
11
|
|
|
12
12
|
// URL parameters for time range
|
|
13
13
|
export const startTimeParam = new URLParam("startTime", undefined as number | undefined);
|
|
@@ -73,6 +73,15 @@ export class TimeRangeSelector extends qreact.Component {
|
|
|
73
73
|
}}
|
|
74
74
|
outerClass={!endTimeParam.value && css.opacity(0.5) || ""}
|
|
75
75
|
/>
|
|
76
|
+
<Button
|
|
77
|
+
hue={110} onClick={() => {
|
|
78
|
+
let now = Date.now();
|
|
79
|
+
startTimeParam.value = now;
|
|
80
|
+
endTimeParam.value = undefined;
|
|
81
|
+
}}
|
|
82
|
+
>
|
|
83
|
+
Set to future data
|
|
84
|
+
</Button>
|
|
76
85
|
{(endTimeParam.value || startTimeParam.value) && <Button
|
|
77
86
|
hue={110} onClick={resetToLastDay}
|
|
78
87
|
>
|
|
@@ -4,7 +4,8 @@ Very small amount of data
|
|
|
4
4
|
https://127-0-0-1.querysubtest.com:7007/?hot&enableLogs&page=login&filter=%22431%22&showingmanagement&endTime=1755140880000&startTime=1754950020000&managementpage=LogViewer2
|
|
5
5
|
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
3) Our time range is not being correctly applied. We have data from 4-5, and are filtering from 4:25 to 5:32, and not matching that data, even though it overlaps a lot.
|
|
8
|
+
4) API watchers are repeatedly dying. I feel like this is fixable, especially with our logs...
|
|
8
9
|
|
|
9
10
|
5) Update all services, and move them to that machine
|
|
10
11
|
5) Verify the hezner server can run the site well
|
|
@@ -18,6 +19,8 @@ Very small amount of data
|
|
|
18
19
|
- https://127-0-0-1.querysubtest.com:7007/?enableLogs&page=login&showingmanagement&endTime=1757835685102.667&managementpage=LogViewer2&machineview=service-detail&startTime=1757745685102.667&serviceId=service-1756340309836&filter=__machineId%20%3D%20a794fbcf7b104c68%20%26%20Edge
|
|
19
20
|
- Or... maybe logs are lost SOMETIMES, and ALWAYS when we kill the server? Although... that would mean we have multiple issues. Ugh...
|
|
20
21
|
|
|
22
|
+
11) API ranges overlapped? What? I think our code to pick an empty range is wrong?
|
|
23
|
+
|
|
21
24
|
6) Update URLParam to allow linking it to other parameters, resetting when they change.
|
|
22
25
|
- With a function, and have standard one beside URLParam (that uses page and tab)
|
|
23
26
|
- ALSO managementPageURL
|