@oneuptime/common 10.5.17 → 10.5.18
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/Server/API/TelemetryAPI.ts +6 -0
- package/Server/EnvironmentConfig.ts +27 -0
- package/Server/Infrastructure/ClickhouseDatabase.ts +21 -1
- package/Server/Infrastructure/Postgres/DataSourceOptions.ts +19 -0
- package/Server/Infrastructure/PostgresDatabase.ts +27 -1
- package/Server/Infrastructure/QueueWorker.ts +14 -3
- package/Server/Infrastructure/Redis.ts +11 -0
- package/Server/Services/TelemetryAttributeService.ts +38 -2
- package/Server/Utils/Express.ts +32 -0
- package/Server/Utils/GracefulShutdown.ts +194 -0
- package/Server/Utils/Monitor/MonitorLogUtil.ts +22 -17
- package/Server/Utils/Profiling.ts +14 -6
- package/Server/Utils/Telemetry/LogExceptionExtractor.ts +289 -0
- package/Server/Utils/Telemetry/StackTraceParser.ts +423 -0
- package/Server/Utils/Telemetry.ts +15 -5
- package/Tests/Server/Services/TelemetryAttributeService.test.ts +83 -0
- package/Tests/Server/Utils/Telemetry/LogExceptionExtractor.test.ts +0 -0
- package/UI/Components/AutocompleteTextInput/AutocompleteTextInput.tsx +7 -1
- package/UI/Components/Dictionary/Dictionary.tsx +19 -0
- package/UI/Components/Filters/FiltersForm.tsx +1 -0
- package/UI/Components/Filters/JSONFilter.tsx +2 -0
- package/UI/Components/Filters/Types/Filter.ts +1 -0
- package/build/dist/Server/API/TelemetryAPI.js +4 -0
- package/build/dist/Server/API/TelemetryAPI.js.map +1 -1
- package/build/dist/Server/EnvironmentConfig.js +19 -0
- package/build/dist/Server/EnvironmentConfig.js.map +1 -1
- package/build/dist/Server/Infrastructure/ClickhouseDatabase.js +16 -2
- package/build/dist/Server/Infrastructure/ClickhouseDatabase.js.map +1 -1
- package/build/dist/Server/Infrastructure/Postgres/DataSourceOptions.js +10 -9
- package/build/dist/Server/Infrastructure/Postgres/DataSourceOptions.js.map +1 -1
- package/build/dist/Server/Infrastructure/PostgresDatabase.js +20 -1
- package/build/dist/Server/Infrastructure/PostgresDatabase.js.map +1 -1
- package/build/dist/Server/Infrastructure/QueueWorker.js +9 -2
- package/build/dist/Server/Infrastructure/QueueWorker.js.map +1 -1
- package/build/dist/Server/Infrastructure/Redis.js +5 -0
- package/build/dist/Server/Infrastructure/Redis.js.map +1 -1
- package/build/dist/Server/Services/TelemetryAttributeService.js +23 -1
- package/build/dist/Server/Services/TelemetryAttributeService.js.map +1 -1
- package/build/dist/Server/Utils/Express.js +23 -0
- package/build/dist/Server/Utils/Express.js.map +1 -1
- package/build/dist/Server/Utils/GracefulShutdown.js +145 -0
- package/build/dist/Server/Utils/GracefulShutdown.js.map +1 -0
- package/build/dist/Server/Utils/Monitor/MonitorLogUtil.js +12 -10
- package/build/dist/Server/Utils/Monitor/MonitorLogUtil.js.map +1 -1
- package/build/dist/Server/Utils/Profiling.js +8 -3
- package/build/dist/Server/Utils/Profiling.js.map +1 -1
- package/build/dist/Server/Utils/Telemetry/LogExceptionExtractor.js +214 -0
- package/build/dist/Server/Utils/Telemetry/LogExceptionExtractor.js.map +1 -0
- package/build/dist/Server/Utils/Telemetry/StackTraceParser.js +365 -0
- package/build/dist/Server/Utils/Telemetry/StackTraceParser.js.map +1 -0
- package/build/dist/Server/Utils/Telemetry.js +10 -4
- package/build/dist/Server/Utils/Telemetry.js.map +1 -1
- package/build/dist/Tests/Server/Services/TelemetryAttributeService.test.js +50 -0
- package/build/dist/Tests/Server/Services/TelemetryAttributeService.test.js.map +1 -0
- package/build/dist/Tests/Server/Utils/Telemetry/LogExceptionExtractor.test.js +0 -0
- package/build/dist/Tests/Server/Utils/Telemetry/LogExceptionExtractor.test.js.map +1 -0
- package/build/dist/UI/Components/AutocompleteTextInput/AutocompleteTextInput.js +7 -1
- package/build/dist/UI/Components/AutocompleteTextInput/AutocompleteTextInput.js.map +1 -1
- package/build/dist/UI/Components/Dictionary/Dictionary.js +10 -0
- package/build/dist/UI/Components/Dictionary/Dictionary.js.map +1 -1
- package/build/dist/UI/Components/Filters/FiltersForm.js +1 -1
- package/build/dist/UI/Components/Filters/FiltersForm.js.map +1 -1
- package/build/dist/UI/Components/Filters/JSONFilter.js +1 -1
- package/build/dist/UI/Components/Filters/JSONFilter.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { DatabaseHost, DatabaseName, DatabasePassword, DatabasePort, DatabaseRejectUnauthorized, DatabaseSslCa, DatabaseSslCert, DatabaseSslKey, DatabaseUsername, MaxPostgresConnections, PostgresConnectionAcquireTimeoutMs, PostgresIdleInTransactionTimeoutMs, PostgresIdleTimeoutMs, PostgresQueryTimeoutMs, PostgresSlowQueryLogThresholdMs, PostgresStatementTimeoutMs, ShouldDatabaseSslEnable, } from "../../../Server/EnvironmentConfig";
|
|
1
|
+
import { DatabaseHost, DatabaseName, DatabasePassword, DatabasePort, DatabaseRejectUnauthorized, DatabaseSslCa, DatabaseSslCert, DatabaseSslKey, DatabaseUsername, MaxPostgresConnections, PostgresConnectionAcquireTimeoutMs, PostgresIdleInTransactionTimeoutMs, PostgresIdleSessionTimeoutMs, PostgresIdleTimeoutMs, PostgresKeepAliveInitialDelayMs, PostgresQueryTimeoutMs, PostgresSlowQueryLogThresholdMs, PostgresStatementTimeoutMs, ShouldDatabaseSslEnable, } from "../../../Server/EnvironmentConfig";
|
|
2
2
|
import Migrations from "./SchemaMigrations/Index";
|
|
3
3
|
import DatabaseType from "../../../Types/DatabaseType";
|
|
4
4
|
import Entities from "../../../Models/DatabaseModels/Index";
|
|
@@ -27,14 +27,15 @@ const dataSourceOptions = {
|
|
|
27
27
|
* and client. Pool sizing + timeouts live here because TypeORM's defaults
|
|
28
28
|
* (10 connections, no timeouts) are too small for any non-trivial load.
|
|
29
29
|
*/
|
|
30
|
-
extra: {
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
30
|
+
extra: Object.assign({ max: MaxPostgresConnections, idleTimeoutMillis: PostgresIdleTimeoutMs, connectionTimeoutMillis: PostgresConnectionAcquireTimeoutMs, statement_timeout: PostgresStatementTimeoutMs, query_timeout: PostgresQueryTimeoutMs, idle_in_transaction_session_timeout: PostgresIdleInTransactionTimeoutMs,
|
|
31
|
+
/*
|
|
32
|
+
* Detect dead TCP peers (ungraceful client exit / network partition) so
|
|
33
|
+
* orphaned server-side connections get torn down instead of lingering
|
|
34
|
+
* until the OS keepalive default (~2h).
|
|
35
|
+
*/
|
|
36
|
+
keepAlive: true, keepAliveInitialDelayMillis: PostgresKeepAliveInitialDelayMs }, (PostgresIdleSessionTimeoutMs > 0
|
|
37
|
+
? { options: `-c idle_session_timeout=${PostgresIdleSessionTimeoutMs}` }
|
|
38
|
+
: {})),
|
|
38
39
|
/*
|
|
39
40
|
* Log any query slower than the configured threshold so we can find
|
|
40
41
|
* offenders in production. TypeORM emits these via the configured
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DataSourceOptions.js","sourceRoot":"","sources":["../../../../../Server/Infrastructure/Postgres/DataSourceOptions.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,gBAAgB,EAChB,YAAY,EACZ,0BAA0B,EAC1B,aAAa,EACb,eAAe,EACf,cAAc,EACd,gBAAgB,EAChB,sBAAsB,EACtB,kCAAkC,EAClC,kCAAkC,EAClC,qBAAqB,EACrB,sBAAsB,EACtB,+BAA+B,EAC/B,0BAA0B,EAC1B,uBAAuB,GACxB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,UAAU,MAAM,0BAA0B,CAAC;AAClD,OAAO,YAAY,MAAM,6BAA6B,CAAC;AACvD,OAAO,QAAQ,MAAM,sCAAsC,CAAC;AAG5D,MAAM,iBAAiB,GAAsB;IAC3C,IAAI,EAAE,YAAY,CAAC,QAAQ;IAC3B,IAAI,EAAE,YAAY,CAAC,QAAQ,EAAE;IAC7B,IAAI,EAAE,YAAY,CAAC,QAAQ,EAAE;IAC7B,QAAQ,EAAE,gBAAgB;IAC1B,QAAQ,EAAE,gBAAgB;IAC1B,QAAQ,EAAE,YAAY;IACtB,mBAAmB,EAAE,YAAY;IACjC,UAAU,EAAE,UAAU;IACtB,aAAa,EAAE,IAAI;IACnB,QAAQ,EAAE,QAAQ;IAClB,eAAe,EAAE,WAAW;IAC5B,GAAG,EAAE,uBAAuB;QAC1B,CAAC,CAAC;YACE,kBAAkB,EAAE,0BAA0B;YAC9C,EAAE,EAAE,aAAa;YACjB,GAAG,EAAE,cAAc;YACnB,IAAI,EAAE,eAAe;SACtB;QACH,CAAC,CAAC,KAAK;IACT;;;;OAIG;IACH,KAAK,
|
|
1
|
+
{"version":3,"file":"DataSourceOptions.js","sourceRoot":"","sources":["../../../../../Server/Infrastructure/Postgres/DataSourceOptions.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,gBAAgB,EAChB,YAAY,EACZ,0BAA0B,EAC1B,aAAa,EACb,eAAe,EACf,cAAc,EACd,gBAAgB,EAChB,sBAAsB,EACtB,kCAAkC,EAClC,kCAAkC,EAClC,4BAA4B,EAC5B,qBAAqB,EACrB,+BAA+B,EAC/B,sBAAsB,EACtB,+BAA+B,EAC/B,0BAA0B,EAC1B,uBAAuB,GACxB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,UAAU,MAAM,0BAA0B,CAAC;AAClD,OAAO,YAAY,MAAM,6BAA6B,CAAC;AACvD,OAAO,QAAQ,MAAM,sCAAsC,CAAC;AAG5D,MAAM,iBAAiB,GAAsB;IAC3C,IAAI,EAAE,YAAY,CAAC,QAAQ;IAC3B,IAAI,EAAE,YAAY,CAAC,QAAQ,EAAE;IAC7B,IAAI,EAAE,YAAY,CAAC,QAAQ,EAAE;IAC7B,QAAQ,EAAE,gBAAgB;IAC1B,QAAQ,EAAE,gBAAgB;IAC1B,QAAQ,EAAE,YAAY;IACtB,mBAAmB,EAAE,YAAY;IACjC,UAAU,EAAE,UAAU;IACtB,aAAa,EAAE,IAAI;IACnB,QAAQ,EAAE,QAAQ;IAClB,eAAe,EAAE,WAAW;IAC5B,GAAG,EAAE,uBAAuB;QAC1B,CAAC,CAAC;YACE,kBAAkB,EAAE,0BAA0B;YAC9C,EAAE,EAAE,aAAa;YACjB,GAAG,EAAE,cAAc;YACnB,IAAI,EAAE,eAAe;SACtB;QACH,CAAC,CAAC,KAAK;IACT;;;;OAIG;IACH,KAAK,kBACH,GAAG,EAAE,sBAAsB,EAC3B,iBAAiB,EAAE,qBAAqB,EACxC,uBAAuB,EAAE,kCAAkC,EAC3D,iBAAiB,EAAE,0BAA0B,EAC7C,aAAa,EAAE,sBAAsB,EACrC,mCAAmC,EAAE,kCAAkC;QACvE;;;;WAIG;QACH,SAAS,EAAE,IAAI,EACf,2BAA2B,EAAE,+BAA+B,IAQzD,CAAC,4BAA4B,GAAG,CAAC;QAClC,CAAC,CAAC,EAAE,OAAO,EAAE,2BAA2B,4BAA4B,EAAE,EAAE;QACxE,CAAC,CAAC,EAAE,CAAC,CACR;IACD;;;;OAIG;IACH,qBAAqB,EAAE,+BAA+B;IACtD,WAAW,EAAE,KAAK;CACnB,CAAC;AAEF,eAAe,iBAAiB,CAAC"}
|
|
@@ -13,6 +13,7 @@ import Sleep from "../../Types/Sleep";
|
|
|
13
13
|
import { DataSource } from "typeorm";
|
|
14
14
|
import { createDatabase, dropDatabase } from "typeorm-extension";
|
|
15
15
|
import CaptureSpan from "../Utils/Telemetry/CaptureSpan";
|
|
16
|
+
import GracefulShutdown, { ShutdownPriority } from "../Utils/GracefulShutdown";
|
|
16
17
|
class Database {
|
|
17
18
|
static getDatasourceOptions() {
|
|
18
19
|
this.dataSourceOptions = DatabaseDataSourceOptions;
|
|
@@ -25,6 +26,14 @@ class Database {
|
|
|
25
26
|
return Boolean(this.dataSource);
|
|
26
27
|
}
|
|
27
28
|
static async connect() {
|
|
29
|
+
/*
|
|
30
|
+
* Idempotent: a second connect() must not overwrite (and thereby orphan)
|
|
31
|
+
* the existing pool. Return the live DataSource instead of building a new
|
|
32
|
+
* one.
|
|
33
|
+
*/
|
|
34
|
+
if (this.dataSource) {
|
|
35
|
+
return this.dataSource;
|
|
36
|
+
}
|
|
28
37
|
let retry = 0;
|
|
29
38
|
const dataSourceOptions = this.getDatasourceOptions();
|
|
30
39
|
try {
|
|
@@ -47,7 +56,17 @@ class Database {
|
|
|
47
56
|
throw err;
|
|
48
57
|
}
|
|
49
58
|
};
|
|
50
|
-
|
|
59
|
+
const dataSource = await connectToDatabase();
|
|
60
|
+
/*
|
|
61
|
+
* Drain the pool on shutdown. Registered here (after a successful
|
|
62
|
+
* connect) so we never register cleanup for a pool that was never
|
|
63
|
+
* created, and — thanks to GracefulShutdown deduping by name — exactly
|
|
64
|
+
* once even if connect() is somehow reached twice.
|
|
65
|
+
*/
|
|
66
|
+
GracefulShutdown.registerHandler("PostgresDatabase", ShutdownPriority.DataStores, () => {
|
|
67
|
+
return this.disconnect();
|
|
68
|
+
});
|
|
69
|
+
return dataSource;
|
|
51
70
|
}
|
|
52
71
|
catch (err) {
|
|
53
72
|
logger.error("Postgres Database Connection Failed");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PostgresDatabase.js","sourceRoot":"","sources":["../../../../Server/Infrastructure/PostgresDatabase.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,MAAM,MAAM,iBAAiB,CAAC;AACrC,OAAO,yBAAyB,MAAM,8BAA8B,CAAC;AACrE,OAAO,KAAK,MAAM,mBAAmB,CAAC;AACtC,OAAO,EAAE,UAAU,EAAqB,MAAM,SAAS,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjE,OAAO,WAAW,MAAM,gCAAgC,CAAC;
|
|
1
|
+
{"version":3,"file":"PostgresDatabase.js","sourceRoot":"","sources":["../../../../Server/Infrastructure/PostgresDatabase.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,6 +15,7 @@ import AppMetrics from "../Utils/Telemetry/AppMetrics";
|
|
|
15
15
|
import TelemetryContext from "../Utils/Telemetry/TelemetryContext";
|
|
16
16
|
import Telemetry, { SpanStatusCode, } from "../Utils/Telemetry";
|
|
17
17
|
import Redis from "./Redis";
|
|
18
|
+
import GracefulShutdown, { ShutdownPriority } from "../Utils/GracefulShutdown";
|
|
18
19
|
export default class QueueWorker {
|
|
19
20
|
static getWorker(queueName, onJobInQueue, options) {
|
|
20
21
|
const instrumentedJobHandler = async (job) => {
|
|
@@ -77,8 +78,14 @@ export default class QueueWorker {
|
|
|
77
78
|
const worker = new Worker(queueName, instrumentedJobHandler, Object.assign(Object.assign({ connection: Redis.getRedisOptions(), concurrency: options.concurrency }, (options.lockDuration ? { lockDuration: options.lockDuration } : {})), (options.maxStalledCount !== undefined
|
|
78
79
|
? { maxStalledCount: options.maxStalledCount }
|
|
79
80
|
: {})));
|
|
80
|
-
|
|
81
|
-
|
|
81
|
+
/*
|
|
82
|
+
* Stop pulling new jobs and let in-flight ones finish on shutdown. Runs in
|
|
83
|
+
* the Workers tier — before datastores are drained — so jobs mid-flight can
|
|
84
|
+
* still reach Postgres / Redis. Replaces a SIGINT-only handler that never
|
|
85
|
+
* fired in containers (Kubernetes / docker stop send SIGTERM).
|
|
86
|
+
*/
|
|
87
|
+
GracefulShutdown.registerHandler(`QueueWorker:${queueName}`, ShutdownPriority.Workers, () => {
|
|
88
|
+
return worker.close();
|
|
82
89
|
});
|
|
83
90
|
return worker;
|
|
84
91
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QueueWorker.js","sourceRoot":"","sources":["../../../../Server/Infrastructure/QueueWorker.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAY,SAAS,EAAE,MAAM,SAAS,CAAC;AAC9C,OAAO,gBAAgB,MAAM,wCAAwC,CAAC;AAMtE,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,WAAW,MAAM,gCAAgC,CAAC;AACzD,OAAO,UAAU,MAAM,+BAA+B,CAAC;AACvD,OAAO,gBAAgB,MAAM,qCAAqC,CAAC;AACnE,OAAO,SAAS,EAAE,EAGhB,cAAc,GACf,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"QueueWorker.js","sourceRoot":"","sources":["../../../../Server/Infrastructure/QueueWorker.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,6 +12,7 @@ import logger from "../Utils/Logger";
|
|
|
12
12
|
import Sleep from "../../Types/Sleep";
|
|
13
13
|
import { Redis as RedisClient } from "ioredis";
|
|
14
14
|
import CaptureSpan from "../Utils/Telemetry/CaptureSpan";
|
|
15
|
+
import GracefulShutdown, { ShutdownPriority } from "../Utils/GracefulShutdown";
|
|
15
16
|
class Redis {
|
|
16
17
|
static isConnected() {
|
|
17
18
|
if (!this.client) {
|
|
@@ -91,6 +92,10 @@ class Redis {
|
|
|
91
92
|
};
|
|
92
93
|
await connectToDatabase(this.client);
|
|
93
94
|
logger.debug(`Redis connected on ${RedisHostname}:${RedisPort.toNumber()}`);
|
|
95
|
+
// Close the Redis connection on shutdown.
|
|
96
|
+
GracefulShutdown.registerHandler("Redis", ShutdownPriority.DataStores, () => {
|
|
97
|
+
return this.disconnect();
|
|
98
|
+
});
|
|
94
99
|
return this.client;
|
|
95
100
|
}
|
|
96
101
|
catch (err) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Redis.js","sourceRoot":"","sources":["../../../../Server/Infrastructure/Redis.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EACL,OAAO,EACP,aAAa,EACb,aAAa,EACb,aAAa,EACb,SAAS,EACT,UAAU,EACV,YAAY,EACZ,WAAW,EACX,oBAAoB,EACpB,aAAa,EACb,oBAAoB,GACrB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,MAAM,MAAM,iBAAiB,CAAC;AACrC,OAAO,KAAK,MAAM,mBAAmB,CAAC;AACtC,OAAO,EAAE,KAAK,IAAI,WAAW,EAAgB,MAAM,SAAS,CAAC;AAC7D,OAAO,WAAW,MAAM,gCAAgC,CAAC;
|
|
1
|
+
{"version":3,"file":"Redis.js","sourceRoot":"","sources":["../../../../Server/Infrastructure/Redis.ts"],"names":[],"mappings":"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"}
|
|
@@ -235,9 +235,10 @@ export class TelemetryAttributeService {
|
|
|
235
235
|
source,
|
|
236
236
|
metricName: data.metricName,
|
|
237
237
|
attributeKey: data.attributeKey,
|
|
238
|
+
searchText: data.searchText,
|
|
238
239
|
});
|
|
239
240
|
}
|
|
240
|
-
static
|
|
241
|
+
static buildAttributeValuesStatement(data) {
|
|
241
242
|
const lookbackStartDate = TelemetryAttributeService.getLookbackStartDate();
|
|
242
243
|
const statement = SQL `
|
|
243
244
|
SELECT DISTINCT ${data.source.attributesColumn}[${{
|
|
@@ -264,12 +265,33 @@ export class TelemetryAttributeService {
|
|
|
264
265
|
value: data.metricName,
|
|
265
266
|
}}`);
|
|
266
267
|
}
|
|
268
|
+
/*
|
|
269
|
+
* Case-insensitive substring filter so the value autocomplete keeps
|
|
270
|
+
* narrowing server-side as the user types. Without it only the first
|
|
271
|
+
* ATTRIBUTE_VALUES_LIMIT values (alphabetically) are ever reachable,
|
|
272
|
+
* which hides matches on high-cardinality keys (host.name, url, ...).
|
|
273
|
+
* Mirrors the ILIKE idiom used for bodySearchText / nameSearchText.
|
|
274
|
+
*/
|
|
275
|
+
if (data.searchText && data.searchText.trim().length > 0) {
|
|
276
|
+
statement.append(SQL `
|
|
277
|
+
AND ${data.source.attributesColumn}[${{
|
|
278
|
+
type: TableColumnType.Text,
|
|
279
|
+
value: data.attributeKey,
|
|
280
|
+
}}] ILIKE ${{
|
|
281
|
+
type: TableColumnType.Text,
|
|
282
|
+
value: `%${data.searchText.trim()}%`,
|
|
283
|
+
}}`);
|
|
284
|
+
}
|
|
267
285
|
statement.append(SQL `
|
|
268
286
|
ORDER BY attributeValue ASC
|
|
269
287
|
LIMIT ${{
|
|
270
288
|
type: TableColumnType.Number,
|
|
271
289
|
value: TelemetryAttributeService.ATTRIBUTE_VALUES_LIMIT,
|
|
272
290
|
}}`);
|
|
291
|
+
return statement;
|
|
292
|
+
}
|
|
293
|
+
static async fetchAttributeValuesFromDatabase(data) {
|
|
294
|
+
const statement = TelemetryAttributeService.buildAttributeValuesStatement(data);
|
|
273
295
|
const dbResult = await data.source.service.executeQuery(statement);
|
|
274
296
|
const response = await dbResult.json();
|
|
275
297
|
const rows = response.data || [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TelemetryAttributeService.js","sourceRoot":"","sources":["../../../../Server/Services/TelemetryAttributeService.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"TelemetryAttributeService.js","sourceRoot":"","sources":["../../../../Server/Services/TelemetryAttributeService.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import logger from "./Logger";
|
|
2
|
+
import GracefulShutdown, { ShutdownPriority } from "./GracefulShutdown";
|
|
2
3
|
import "ejs";
|
|
3
4
|
import express from "express";
|
|
4
5
|
import { createServer } from "http";
|
|
@@ -32,6 +33,28 @@ class Express {
|
|
|
32
33
|
if (!this.httpServer) {
|
|
33
34
|
this.httpServer = createServer(this.app);
|
|
34
35
|
}
|
|
36
|
+
/*
|
|
37
|
+
* On shutdown, stop accepting new connections first (before datastores are
|
|
38
|
+
* drained) so in-flight requests can finish but new ones don't acquire
|
|
39
|
+
* resources we're about to tear down. closeIdleConnections() drops idle
|
|
40
|
+
* keep-alive sockets so server.close() doesn't block waiting on them; the
|
|
41
|
+
* GracefulShutdown per-handler timeout bounds anything still in flight.
|
|
42
|
+
*/
|
|
43
|
+
GracefulShutdown.registerHandler("HttpServer", ShutdownPriority.HttpServer, () => {
|
|
44
|
+
return new Promise((resolve) => {
|
|
45
|
+
if (!this.httpServer || !this.httpServer.listening) {
|
|
46
|
+
resolve();
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
const server = this.httpServer;
|
|
50
|
+
if (typeof server.closeIdleConnections === "function") {
|
|
51
|
+
server.closeIdleConnections();
|
|
52
|
+
}
|
|
53
|
+
server.close(() => {
|
|
54
|
+
resolve();
|
|
55
|
+
});
|
|
56
|
+
});
|
|
57
|
+
});
|
|
35
58
|
return new Promise((resolve) => {
|
|
36
59
|
this.httpServer.listen((port === null || port === void 0 ? void 0 : port.toNumber()) || this.app.get("port"), () => {
|
|
37
60
|
logger.debug(`${appName} server started on port: ${(port === null || port === void 0 ? void 0 : port.toNumber()) || this.app.get("port")}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Express.js","sourceRoot":"","sources":["../../../../Server/Utils/Express.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"Express.js","sourceRoot":"","sources":["../../../../Server/Utils/Express.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
import logger from "./Logger";
|
|
2
|
+
/*
|
|
3
|
+
* Centralized graceful-shutdown coordinator.
|
|
4
|
+
*
|
|
5
|
+
* Before this existed, each subsystem registered its own
|
|
6
|
+
* process.on("SIGTERM" | "SIGINT") handler independently. The telemetry
|
|
7
|
+
* handler in particular called process.exit(0) as soon as the OTEL SDK
|
|
8
|
+
* flushed, which raced every other handler and — crucially — meant the
|
|
9
|
+
* Postgres / Redis / Clickhouse pools were never drained. Connections were
|
|
10
|
+
* left for the OS socket teardown to reap (and leaked outright on SIGKILL or
|
|
11
|
+
* a network partition).
|
|
12
|
+
*
|
|
13
|
+
* Now every subsystem registers an async cleanup callback here, and this class
|
|
14
|
+
* is the single owner of the signal handlers and of process.exit. Handlers run
|
|
15
|
+
* in ascending priority order (lower first) so we stop accepting new work
|
|
16
|
+
* before tearing down the resources that work depends on:
|
|
17
|
+
*
|
|
18
|
+
* HttpServer (10) -> stop accepting new HTTP requests
|
|
19
|
+
* Workers (20) -> stop pulling new queue jobs, finish in-flight jobs
|
|
20
|
+
* Buffers (30) -> flush in-memory write buffers to their datastore
|
|
21
|
+
* DataStores (40) -> drain Postgres / Redis / Clickhouse pools
|
|
22
|
+
* Telemetry (50) -> flush traces / metrics / logs / profiles last
|
|
23
|
+
*
|
|
24
|
+
* Handlers in the same tier run concurrently. Each handler is bounded by a
|
|
25
|
+
* per-handler timeout, and the whole sequence by an overall deadline, so a
|
|
26
|
+
* single hung handler can never wedge the shutdown.
|
|
27
|
+
*/
|
|
28
|
+
export var ShutdownPriority;
|
|
29
|
+
(function (ShutdownPriority) {
|
|
30
|
+
ShutdownPriority[ShutdownPriority["HttpServer"] = 10] = "HttpServer";
|
|
31
|
+
ShutdownPriority[ShutdownPriority["Workers"] = 20] = "Workers";
|
|
32
|
+
ShutdownPriority[ShutdownPriority["Buffers"] = 30] = "Buffers";
|
|
33
|
+
ShutdownPriority[ShutdownPriority["DataStores"] = 40] = "DataStores";
|
|
34
|
+
ShutdownPriority[ShutdownPriority["Telemetry"] = 50] = "Telemetry";
|
|
35
|
+
})(ShutdownPriority || (ShutdownPriority = {}));
|
|
36
|
+
class GracefulShutdown {
|
|
37
|
+
/*
|
|
38
|
+
* Register a cleanup callback to run on SIGTERM / SIGINT. Registering by a
|
|
39
|
+
* stable name is idempotent: a repeat registration (e.g. a second connect())
|
|
40
|
+
* replaces the previous callback instead of stacking a duplicate. Callers
|
|
41
|
+
* that own multiple independent resources (e.g. two Clickhouse pools) must
|
|
42
|
+
* therefore pass distinct names.
|
|
43
|
+
*/
|
|
44
|
+
static registerHandler(name, priority, callback) {
|
|
45
|
+
const existingIndex = this.handlers.findIndex((handler) => {
|
|
46
|
+
return handler.name === name;
|
|
47
|
+
});
|
|
48
|
+
if (existingIndex >= 0) {
|
|
49
|
+
this.handlers[existingIndex] = { name, priority, callback };
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
this.handlers.push({ name, priority, callback });
|
|
53
|
+
}
|
|
54
|
+
this.installSignalListeners();
|
|
55
|
+
}
|
|
56
|
+
static installSignalListeners() {
|
|
57
|
+
if (this.signalListenersInstalled) {
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
this.signalListenersInstalled = true;
|
|
61
|
+
process.on("SIGTERM", () => {
|
|
62
|
+
void this.shutdown("SIGTERM");
|
|
63
|
+
});
|
|
64
|
+
process.on("SIGINT", () => {
|
|
65
|
+
void this.shutdown("SIGINT");
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
static async shutdown(signal) {
|
|
69
|
+
if (this.isShuttingDown) {
|
|
70
|
+
/*
|
|
71
|
+
* A second signal while we're already draining means the operator (or
|
|
72
|
+
* orchestrator) is impatient. Bail out immediately.
|
|
73
|
+
*/
|
|
74
|
+
logger.warn(`GracefulShutdown: received ${signal} while already shutting down. Forcing exit.`);
|
|
75
|
+
return process.exit(1);
|
|
76
|
+
}
|
|
77
|
+
this.isShuttingDown = true;
|
|
78
|
+
logger.info(`GracefulShutdown: received ${signal}. Draining ${this.handlers.length} handler(s)...`);
|
|
79
|
+
const forceExitTimer = setTimeout(() => {
|
|
80
|
+
logger.error(`GracefulShutdown: exceeded ${this.overallTimeoutMs}ms overall deadline. Forcing exit.`);
|
|
81
|
+
return process.exit(1);
|
|
82
|
+
}, this.overallTimeoutMs);
|
|
83
|
+
// Don't let this timer keep the event loop alive on its own.
|
|
84
|
+
forceExitTimer.unref();
|
|
85
|
+
// Run handlers tier by tier; lower priority tiers complete before the next.
|
|
86
|
+
const tiers = Array.from(new Set(this.handlers.map((handler) => {
|
|
87
|
+
return handler.priority;
|
|
88
|
+
}))).sort((a, b) => {
|
|
89
|
+
return a - b;
|
|
90
|
+
});
|
|
91
|
+
for (const tier of tiers) {
|
|
92
|
+
const handlersInTier = this.handlers.filter((handler) => {
|
|
93
|
+
return handler.priority === tier;
|
|
94
|
+
});
|
|
95
|
+
// Handlers within a tier are independent, so run them concurrently.
|
|
96
|
+
await Promise.all(handlersInTier.map((handler) => {
|
|
97
|
+
return this.runHandlerWithTimeout(handler);
|
|
98
|
+
}));
|
|
99
|
+
}
|
|
100
|
+
clearTimeout(forceExitTimer);
|
|
101
|
+
logger.info("GracefulShutdown: all handlers complete. Exiting cleanly.");
|
|
102
|
+
return process.exit(0);
|
|
103
|
+
}
|
|
104
|
+
static async runHandlerWithTimeout(handler) {
|
|
105
|
+
logger.debug(`GracefulShutdown: running handler "${handler.name}"...`);
|
|
106
|
+
let timer = null;
|
|
107
|
+
const timeout = new Promise((resolve) => {
|
|
108
|
+
timer = setTimeout(() => {
|
|
109
|
+
logger.warn(`GracefulShutdown: handler "${handler.name}" exceeded ${this.perHandlerTimeoutMs}ms. Moving on.`);
|
|
110
|
+
return resolve();
|
|
111
|
+
}, this.perHandlerTimeoutMs);
|
|
112
|
+
timer.unref();
|
|
113
|
+
});
|
|
114
|
+
const run = (async () => {
|
|
115
|
+
try {
|
|
116
|
+
await handler.callback();
|
|
117
|
+
logger.debug(`GracefulShutdown: handler "${handler.name}" done.`);
|
|
118
|
+
}
|
|
119
|
+
catch (err) {
|
|
120
|
+
logger.error(`GracefulShutdown: handler "${handler.name}" failed:`);
|
|
121
|
+
logger.error(err);
|
|
122
|
+
}
|
|
123
|
+
})();
|
|
124
|
+
await Promise.race([run, timeout]);
|
|
125
|
+
if (timer) {
|
|
126
|
+
clearTimeout(timer);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
GracefulShutdown.handlers = [];
|
|
131
|
+
GracefulShutdown.signalListenersInstalled = false;
|
|
132
|
+
GracefulShutdown.isShuttingDown = false;
|
|
133
|
+
/*
|
|
134
|
+
* How long a single handler may run before we give up on it and move on.
|
|
135
|
+
* Kept comfortably under the orchestrator (Kubernetes) default
|
|
136
|
+
* terminationGracePeriodSeconds of 30s.
|
|
137
|
+
*/
|
|
138
|
+
GracefulShutdown.perHandlerTimeoutMs = 10000;
|
|
139
|
+
/*
|
|
140
|
+
* Hard ceiling for the entire shutdown. If we blow past this we force-exit
|
|
141
|
+
* rather than risk being SIGKILLed mid-cleanup.
|
|
142
|
+
*/
|
|
143
|
+
GracefulShutdown.overallTimeoutMs = 25000;
|
|
144
|
+
export default GracefulShutdown;
|
|
145
|
+
//# sourceMappingURL=GracefulShutdown.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GracefulShutdown.js","sourceRoot":"","sources":["../../../../Server/Utils/GracefulShutdown.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import MonitorLogService from "../../Services/MonitorLogService";
|
|
2
2
|
import GlobalConfigService from "../../Services/GlobalConfigService";
|
|
3
3
|
import logger from "../Logger";
|
|
4
|
+
import GracefulShutdown, { ShutdownPriority } from "../GracefulShutdown";
|
|
4
5
|
import OneUptimeDate from "../../../Types/Date";
|
|
5
6
|
import ObjectID from "../../../Types/ObjectID";
|
|
6
7
|
/*
|
|
@@ -167,17 +168,19 @@ class MonitorLogUtil {
|
|
|
167
168
|
}
|
|
168
169
|
}
|
|
169
170
|
/*
|
|
170
|
-
* Register
|
|
171
|
-
*
|
|
172
|
-
*
|
|
173
|
-
*
|
|
171
|
+
* Register the shutdown flush exactly once, lazily on first ingest. We avoid
|
|
172
|
+
* registering at module-load time so tooling that imports this file (e.g.
|
|
173
|
+
* migration runners, CLI scripts) doesn't end up holding a stray handler.
|
|
174
|
+
*
|
|
175
|
+
* Runs in the Buffers tier — ahead of the DataStores tier — so the buffer is
|
|
176
|
+
* drained to Clickhouse before the datastore pools are torn down.
|
|
174
177
|
*/
|
|
175
178
|
static ensureShutdownHooks() {
|
|
176
179
|
if (this.shutdownHooksRegistered) {
|
|
177
180
|
return;
|
|
178
181
|
}
|
|
179
182
|
this.shutdownHooksRegistered = true;
|
|
180
|
-
|
|
183
|
+
GracefulShutdown.registerHandler("MonitorLogUtil", ShutdownPriority.Buffers, async () => {
|
|
181
184
|
try {
|
|
182
185
|
await this.flushAndWait();
|
|
183
186
|
}
|
|
@@ -185,9 +188,7 @@ class MonitorLogUtil {
|
|
|
185
188
|
logger.error("Error flushing MonitorLog buffer on shutdown:");
|
|
186
189
|
logger.error(err);
|
|
187
190
|
}
|
|
188
|
-
};
|
|
189
|
-
process.on("SIGTERM", flushOnShutdown);
|
|
190
|
-
process.on("SIGINT", flushOnShutdown);
|
|
191
|
+
});
|
|
191
192
|
}
|
|
192
193
|
}
|
|
193
194
|
// Default retention in days if GlobalConfig is not set
|
|
@@ -201,8 +202,9 @@ MonitorLogUtil.CACHE_TTL_MS = 5 * 60 * 1000; // 5 minutes
|
|
|
201
202
|
* here until either MONITOR_LOG_FLUSH_BATCH_SIZE rows arrive
|
|
202
203
|
* (size trigger) or MONITOR_LOG_FLUSH_INTERVAL_MS elapses since
|
|
203
204
|
* the first row entered an empty buffer (time trigger),
|
|
204
|
-
* whichever comes first. On graceful shutdown the
|
|
205
|
-
*
|
|
205
|
+
* whichever comes first. On graceful shutdown the registered
|
|
206
|
+
* GracefulShutdown handler below drains the buffer (in the
|
|
207
|
+
* Buffers tier, before the datastores are torn down).
|
|
206
208
|
*/
|
|
207
209
|
MonitorLogUtil.buffer = [];
|
|
208
210
|
MonitorLogUtil.flushTimer = null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MonitorLogUtil.js","sourceRoot":"","sources":["../../../../../Server/Utils/Monitor/MonitorLogUtil.ts"],"names":[],"mappings":"AAAA,OAAO,iBAAiB,MAAM,kCAAkC,CAAC;AACjE,OAAO,mBAAmB,MAAM,oCAAoC,CAAC;AAErE,OAAO,MAAM,MAAM,WAAW,CAAC;AAC/B,OAAO,aAAa,MAAM,qBAAqB,CAAC;AAChD,OAAO,QAAQ,MAAM,yBAAyB,CAAC;AAI/C;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,4BAA4B,GAAW,KAAM,CAAC;AACpD,MAAM,6BAA6B,GAAW,IAAK,CAAC;AAEpD,MAAqB,cAAc;
|
|
1
|
+
{"version":3,"file":"MonitorLogUtil.js","sourceRoot":"","sources":["../../../../../Server/Utils/Monitor/MonitorLogUtil.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import Pyroscope from "@pyroscope/nodejs";
|
|
2
2
|
import { EnableProfiling } from "../EnvironmentConfig";
|
|
3
3
|
import logger from "./Logger";
|
|
4
|
+
import GracefulShutdown, { ShutdownPriority } from "./GracefulShutdown";
|
|
4
5
|
export default class Profiling {
|
|
5
6
|
static init(data) {
|
|
6
7
|
if (!EnableProfiling) {
|
|
@@ -31,11 +32,15 @@ export default class Profiling {
|
|
|
31
32
|
logger.error("Failed to initialize profiling:", profilingLogAttributes);
|
|
32
33
|
logger.error(err, profilingLogAttributes);
|
|
33
34
|
}
|
|
34
|
-
|
|
35
|
-
|
|
35
|
+
// Stop the profiler last (Telemetry tier), alongside the OTEL flush.
|
|
36
|
+
GracefulShutdown.registerHandler("Profiling", ShutdownPriority.Telemetry, async () => {
|
|
37
|
+
try {
|
|
38
|
+
await Pyroscope.stop();
|
|
39
|
+
}
|
|
40
|
+
catch (err) {
|
|
36
41
|
logger.error("Error stopping profiler:", profilingLogAttributes);
|
|
37
42
|
logger.error(err, profilingLogAttributes);
|
|
38
|
-
}
|
|
43
|
+
}
|
|
39
44
|
});
|
|
40
45
|
}
|
|
41
46
|
static getServerAddress() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Profiling.js","sourceRoot":"","sources":["../../../../Server/Utils/Profiling.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,MAAyB,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"Profiling.js","sourceRoot":"","sources":["../../../../Server/Utils/Profiling.ts"],"names":[],"mappings":"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"}
|