@oneuptime/common 11.3.5 → 11.3.6
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/Infrastructure/Queue.ts +103 -16
- package/Server/Services/AnalyticsDatabaseService.ts +9 -5
- package/Server/Services/TeamMemberService.ts +38 -1
- package/Server/Utils/AnalyticsDatabase/StatementGenerator.ts +31 -0
- package/Server/Utils/Monitor/IncomingRequestIncidentGrouping.ts +428 -0
- package/Server/Utils/Monitor/MonitorAlert.ts +158 -8
- package/Server/Utils/Monitor/MonitorCriteriaEvaluator.ts +26 -0
- package/Server/Utils/Monitor/MonitorIncident.ts +147 -2
- package/Server/Utils/Monitor/MonitorResource.ts +74 -0
- package/Tests/Server/Utils/AnalyticsDatabase/ClusterAwareSchema.test.ts +2 -1
- package/Tests/Server/Utils/AnalyticsDatabase/StatementGenerator.test.ts +32 -0
- package/Tests/Server/Utils/Monitor/IncomingRequestIncidentGrouping.test.ts +389 -0
- package/Tests/Server/Utils/Monitor/SeriesAbsenceResolutionGuard.test.ts +177 -0
- package/Tests/Types/Events/Recurring.test.ts +475 -0
- package/Tests/Types/Monitor/CriteriaFilter.test.ts +348 -0
- package/Tests/Types/OnCallDutyPolicy/RestrictionTimes.test.ts +331 -0
- package/Tests/UI/Components/Alert.test.tsx +23 -15
- package/Tests/UI/Components/Breadcrumbs.test.tsx +18 -6
- package/Tests/UI/Components/Button.test.tsx +3 -3
- package/Tests/UI/Components/DictionaryFilterOperator.test.ts +174 -0
- package/Tests/UI/Components/EmptyState/EmptyState.test.tsx +4 -3
- package/Tests/UI/Components/Input.test.tsx +3 -2
- package/Tests/UI/Components/Pill.test.tsx +4 -2
- package/Tests/UI/Components/SideMenuItem.test.tsx +18 -8
- package/Tests/UI/Components/TextArea.test.tsx +6 -4
- package/Types/Monitor/IncomingMonitor/IncidentGroupingConfig.ts +74 -0
- package/Types/Monitor/MonitorCriteriaInstance.ts +22 -0
- package/UI/Components/Dictionary/Dictionary.tsx +123 -50
- package/UI/Components/Dictionary/DictionaryFilterOperator.ts +96 -1
- package/UI/Components/MasterPage/MasterPage.tsx +5 -3
- package/build/dist/Server/Infrastructure/Queue.js +83 -15
- package/build/dist/Server/Infrastructure/Queue.js.map +1 -1
- package/build/dist/Server/Services/AnalyticsDatabaseService.js +9 -5
- package/build/dist/Server/Services/AnalyticsDatabaseService.js.map +1 -1
- package/build/dist/Server/Services/TeamMemberService.js +37 -1
- package/build/dist/Server/Services/TeamMemberService.js.map +1 -1
- package/build/dist/Server/Utils/AnalyticsDatabase/StatementGenerator.js +26 -0
- package/build/dist/Server/Utils/AnalyticsDatabase/StatementGenerator.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/IncomingRequestIncidentGrouping.js +288 -0
- package/build/dist/Server/Utils/Monitor/IncomingRequestIncidentGrouping.js.map +1 -0
- package/build/dist/Server/Utils/Monitor/MonitorAlert.js +119 -8
- package/build/dist/Server/Utils/Monitor/MonitorAlert.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js +24 -0
- package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorIncident.js +103 -2
- package/build/dist/Server/Utils/Monitor/MonitorIncident.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorResource.js +62 -0
- package/build/dist/Server/Utils/Monitor/MonitorResource.js.map +1 -1
- package/build/dist/Types/Monitor/IncomingMonitor/IncidentGroupingConfig.js +8 -0
- package/build/dist/Types/Monitor/IncomingMonitor/IncidentGroupingConfig.js.map +1 -0
- package/build/dist/Types/Monitor/MonitorCriteriaInstance.js +10 -0
- package/build/dist/Types/Monitor/MonitorCriteriaInstance.js.map +1 -1
- package/build/dist/UI/Components/Dictionary/Dictionary.js +60 -9
- package/build/dist/UI/Components/Dictionary/Dictionary.js.map +1 -1
- package/build/dist/UI/Components/Dictionary/DictionaryFilterOperator.js +69 -0
- package/build/dist/UI/Components/Dictionary/DictionaryFilterOperator.js.map +1 -1
- package/build/dist/UI/Components/MasterPage/MasterPage.js +5 -3
- package/build/dist/UI/Components/MasterPage/MasterPage.js.map +1 -1
- package/package.json +1 -1
|
@@ -55,7 +55,7 @@ export interface ComponentProps {
|
|
|
55
55
|
|
|
56
56
|
interface Item {
|
|
57
57
|
key: string;
|
|
58
|
-
value: string | number | boolean
|
|
58
|
+
value: string | number | boolean | Array<string>;
|
|
59
59
|
type: ValueType;
|
|
60
60
|
operator: DictionaryFilterOperator;
|
|
61
61
|
}
|
|
@@ -108,14 +108,18 @@ const DictionaryForm: FunctionComponent<ComponentProps> = (
|
|
|
108
108
|
const detected: {
|
|
109
109
|
operator: DictionaryFilterOperator;
|
|
110
110
|
rawValue: string;
|
|
111
|
+
rawValues?: Array<string> | undefined;
|
|
111
112
|
} = detectOperatorFromValue(rawEntry);
|
|
112
113
|
|
|
113
114
|
/*
|
|
114
|
-
* Restore typed values (number/boolean) for the form input from
|
|
115
|
+
* Restore typed values (number/boolean/array) for the form input from
|
|
115
116
|
* the stringified raw representation when the column type allows.
|
|
116
117
|
*/
|
|
117
|
-
let restoredValue: string | number | boolean =
|
|
118
|
-
|
|
118
|
+
let restoredValue: string | number | boolean | Array<string> =
|
|
119
|
+
detected.rawValue;
|
|
120
|
+
if (getOperatorOption(detected.operator).expectsMultiValue) {
|
|
121
|
+
restoredValue = detected.rawValues ?? [];
|
|
122
|
+
} else if (valueType === ValueType.Number && detected.rawValue !== "") {
|
|
119
123
|
const parsed: number = Number(detected.rawValue);
|
|
120
124
|
restoredValue = isNaN(parsed) ? detected.rawValue : parsed;
|
|
121
125
|
} else if (valueType === ValueType.Boolean) {
|
|
@@ -178,6 +182,16 @@ const DictionaryForm: FunctionComponent<ComponentProps> = (
|
|
|
178
182
|
});
|
|
179
183
|
return;
|
|
180
184
|
}
|
|
185
|
+
if (operatorOption.expectsMultiValue) {
|
|
186
|
+
result[item.key] = buildDictionaryValue({
|
|
187
|
+
operator: item.operator,
|
|
188
|
+
rawValue: "",
|
|
189
|
+
rawValues: Array.isArray(item.value)
|
|
190
|
+
? (item.value as Array<string>)
|
|
191
|
+
: [],
|
|
192
|
+
});
|
|
193
|
+
return;
|
|
194
|
+
}
|
|
181
195
|
result[item.key] = buildDictionaryValue({
|
|
182
196
|
operator: item.operator,
|
|
183
197
|
rawValue: String(item.value ?? ""),
|
|
@@ -298,11 +312,22 @@ const DictionaryForm: FunctionComponent<ComponentProps> = (
|
|
|
298
312
|
const newData: Array<Item> = [...data];
|
|
299
313
|
newData[index]!.operator = newOperator;
|
|
300
314
|
/*
|
|
301
|
-
* Reset the value when
|
|
302
|
-
*
|
|
315
|
+
* Reset the value when the input shape changes so we
|
|
316
|
+
* don't ship a stale scalar where an array is expected
|
|
317
|
+
* (or vice versa). Value-less operators clear to "".
|
|
303
318
|
*/
|
|
304
319
|
if (newOperatorOption.hidesValueInput) {
|
|
305
320
|
newData[index]!.value = "";
|
|
321
|
+
} else if (
|
|
322
|
+
newOperatorOption.expectsMultiValue &&
|
|
323
|
+
!Array.isArray(newData[index]!.value)
|
|
324
|
+
) {
|
|
325
|
+
newData[index]!.value = [];
|
|
326
|
+
} else if (
|
|
327
|
+
!newOperatorOption.expectsMultiValue &&
|
|
328
|
+
Array.isArray(newData[index]!.value)
|
|
329
|
+
) {
|
|
330
|
+
newData[index]!.value = "";
|
|
306
331
|
}
|
|
307
332
|
setData(newData);
|
|
308
333
|
onDataChange(newData);
|
|
@@ -370,51 +395,99 @@ const DictionaryForm: FunctionComponent<ComponentProps> = (
|
|
|
370
395
|
}}
|
|
371
396
|
/>
|
|
372
397
|
)}
|
|
373
|
-
{!hideValueInput &&
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
398
|
+
{!hideValueInput &&
|
|
399
|
+
item.type === ValueType.Text &&
|
|
400
|
+
operatorOption.expectsMultiValue && (
|
|
401
|
+
<Dropdown
|
|
402
|
+
isMultiSelect={true}
|
|
403
|
+
placeholder={props.valuePlaceholder}
|
|
404
|
+
value={(Array.isArray(item.value) ? item.value : []).map(
|
|
405
|
+
(selectedValue: string) => {
|
|
406
|
+
return { label: selectedValue, value: selectedValue };
|
|
407
|
+
},
|
|
408
|
+
)}
|
|
409
|
+
options={Array.from(
|
|
410
|
+
new Set([
|
|
411
|
+
...(Array.isArray(item.value)
|
|
412
|
+
? (item.value as Array<string>)
|
|
413
|
+
: []),
|
|
414
|
+
...(item.key && props.valueSuggestions?.[item.key]
|
|
415
|
+
? props.valueSuggestions[item.key]!
|
|
416
|
+
: []),
|
|
417
|
+
]),
|
|
418
|
+
).map((optionValue: string) => {
|
|
419
|
+
return { label: optionValue, value: optionValue };
|
|
420
|
+
})}
|
|
421
|
+
onChange={(
|
|
422
|
+
selectedOption:
|
|
423
|
+
| DropdownValue
|
|
424
|
+
| Array<DropdownValue>
|
|
425
|
+
| null,
|
|
426
|
+
) => {
|
|
427
|
+
const selectedValues: Array<string> = Array.isArray(
|
|
428
|
+
selectedOption,
|
|
429
|
+
)
|
|
430
|
+
? selectedOption.map((selected: DropdownValue) => {
|
|
431
|
+
return String(selected);
|
|
432
|
+
})
|
|
433
|
+
: selectedOption !== null &&
|
|
434
|
+
selectedOption !== undefined
|
|
435
|
+
? [String(selectedOption)]
|
|
436
|
+
: [];
|
|
437
|
+
const newData: Array<Item> = [...data];
|
|
438
|
+
newData[index]!.value = selectedValues;
|
|
439
|
+
setData(newData);
|
|
440
|
+
onDataChange(newData);
|
|
441
|
+
}}
|
|
442
|
+
/>
|
|
443
|
+
)}
|
|
444
|
+
{!hideValueInput &&
|
|
445
|
+
item.type === ValueType.Text &&
|
|
446
|
+
!operatorOption.expectsMultiValue && (
|
|
447
|
+
<AutocompleteTextInput
|
|
448
|
+
value={item.value.toString()}
|
|
449
|
+
placeholder={
|
|
450
|
+
operatorOption.expectsNumericValue
|
|
451
|
+
? "Number"
|
|
452
|
+
: props.valuePlaceholder
|
|
414
453
|
}
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
454
|
+
suggestions={
|
|
455
|
+
operatorOption.expectsNumericValue
|
|
456
|
+
? undefined
|
|
457
|
+
: item.key && props.valueSuggestions?.[item.key]
|
|
458
|
+
? props.valueSuggestions[item.key]
|
|
459
|
+
: undefined
|
|
460
|
+
}
|
|
461
|
+
isLoadingSuggestions={
|
|
462
|
+
operatorOption.expectsNumericValue
|
|
463
|
+
? false
|
|
464
|
+
: Boolean(
|
|
465
|
+
item.key &&
|
|
466
|
+
props.loadingValueKeys?.includes(item.key),
|
|
467
|
+
)
|
|
468
|
+
}
|
|
469
|
+
loadingMessage="Loading values..."
|
|
470
|
+
onChange={(value: string) => {
|
|
471
|
+
const newData: Array<Item> = [...data];
|
|
472
|
+
newData[index]!.value = value;
|
|
473
|
+
setData(newData);
|
|
474
|
+
onDataChange(newData);
|
|
475
|
+
|
|
476
|
+
/*
|
|
477
|
+
* Let the parent refine value suggestions server-side
|
|
478
|
+
* as the user types. Skip numeric operators — those
|
|
479
|
+
* have no value suggestions to narrow.
|
|
480
|
+
*/
|
|
481
|
+
if (
|
|
482
|
+
props.onValueSearch &&
|
|
483
|
+
item.key &&
|
|
484
|
+
!operatorOption.expectsNumericValue
|
|
485
|
+
) {
|
|
486
|
+
props.onValueSearch(item.key, value);
|
|
487
|
+
}
|
|
488
|
+
}}
|
|
489
|
+
/>
|
|
490
|
+
)}
|
|
418
491
|
|
|
419
492
|
{!hideValueInput && item.type === ValueType.Number && (
|
|
420
493
|
<Input
|
|
@@ -10,6 +10,8 @@ import LessThan from "../../../Types/BaseDatabase/LessThan";
|
|
|
10
10
|
import LessThanOrEqual from "../../../Types/BaseDatabase/LessThanOrEqual";
|
|
11
11
|
import IsNull from "../../../Types/BaseDatabase/IsNull";
|
|
12
12
|
import NotNull from "../../../Types/BaseDatabase/NotNull";
|
|
13
|
+
import Includes from "../../../Types/BaseDatabase/Includes";
|
|
14
|
+
import IncludesNone from "../../../Types/BaseDatabase/IncludesNone";
|
|
13
15
|
import { ObjectType } from "../../../Types/JSON";
|
|
14
16
|
|
|
15
17
|
/*
|
|
@@ -20,6 +22,8 @@ import { ObjectType } from "../../../Types/JSON";
|
|
|
20
22
|
export enum DictionaryFilterOperator {
|
|
21
23
|
EqualTo = "EqualTo",
|
|
22
24
|
NotEqual = "NotEqual",
|
|
25
|
+
IsAnyOf = "IsAnyOf",
|
|
26
|
+
IsNoneOf = "IsNoneOf",
|
|
23
27
|
Contains = "Contains",
|
|
24
28
|
NotContains = "NotContains",
|
|
25
29
|
StartsWith = "StartsWith",
|
|
@@ -40,6 +44,11 @@ export interface DictionaryFilterOperatorOption {
|
|
|
40
44
|
hidesValueInput?: boolean | undefined;
|
|
41
45
|
// Numeric operators force a numeric value input.
|
|
42
46
|
expectsNumericValue?: boolean | undefined;
|
|
47
|
+
/*
|
|
48
|
+
* Multi-value operators (IsAnyOf) take an array of values and render a
|
|
49
|
+
* multi-select instead of a single value input.
|
|
50
|
+
*/
|
|
51
|
+
expectsMultiValue?: boolean | undefined;
|
|
43
52
|
}
|
|
44
53
|
|
|
45
54
|
export const DICTIONARY_FILTER_OPERATOR_OPTIONS: ReadonlyArray<DictionaryFilterOperatorOption> =
|
|
@@ -54,6 +63,18 @@ export const DICTIONARY_FILTER_OPERATOR_OPTIONS: ReadonlyArray<DictionaryFilterO
|
|
|
54
63
|
label: "does not equal",
|
|
55
64
|
symbol: "!=",
|
|
56
65
|
},
|
|
66
|
+
{
|
|
67
|
+
operator: DictionaryFilterOperator.IsAnyOf,
|
|
68
|
+
label: "is any of",
|
|
69
|
+
symbol: "is any of",
|
|
70
|
+
expectsMultiValue: true,
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
operator: DictionaryFilterOperator.IsNoneOf,
|
|
74
|
+
label: "is none of",
|
|
75
|
+
symbol: "is none of",
|
|
76
|
+
expectsMultiValue: true,
|
|
77
|
+
},
|
|
57
78
|
{
|
|
58
79
|
operator: DictionaryFilterOperator.Contains,
|
|
59
80
|
label: "contains",
|
|
@@ -127,7 +148,9 @@ export type DictionaryEntryValue =
|
|
|
127
148
|
| LessThan<number>
|
|
128
149
|
| LessThanOrEqual<number>
|
|
129
150
|
| IsNull
|
|
130
|
-
| NotNull
|
|
151
|
+
| NotNull
|
|
152
|
+
| Includes
|
|
153
|
+
| IncludesNone;
|
|
131
154
|
|
|
132
155
|
export const getOperatorOption: (
|
|
133
156
|
operator: DictionaryFilterOperator,
|
|
@@ -162,7 +185,13 @@ const matchesObjectType: (value: unknown, type: ObjectType) => boolean = (
|
|
|
162
185
|
|
|
163
186
|
interface RawValueAndOperator {
|
|
164
187
|
operator: DictionaryFilterOperator;
|
|
188
|
+
/*
|
|
189
|
+
* For multi-value operators (IsAnyOf) this is a display-friendly joined
|
|
190
|
+
* string (e.g. "system, user") so existing chip/viewer consumers render
|
|
191
|
+
* it without changes; `rawValues` carries the structured array.
|
|
192
|
+
*/
|
|
165
193
|
rawValue: string;
|
|
194
|
+
rawValues?: Array<string> | undefined;
|
|
166
195
|
}
|
|
167
196
|
|
|
168
197
|
/**
|
|
@@ -201,6 +230,46 @@ export const detectOperatorFromValue: (
|
|
|
201
230
|
return { operator: DictionaryFilterOperator.IsNotEmpty, rawValue: "" };
|
|
202
231
|
}
|
|
203
232
|
|
|
233
|
+
if (
|
|
234
|
+
value instanceof Includes ||
|
|
235
|
+
matchesObjectType(value, ObjectType.Includes)
|
|
236
|
+
) {
|
|
237
|
+
const rawArray: unknown =
|
|
238
|
+
value instanceof Includes
|
|
239
|
+
? value.values
|
|
240
|
+
: (value as { value?: unknown }).value;
|
|
241
|
+
const values: Array<string> = Array.isArray(rawArray)
|
|
242
|
+
? rawArray.map((entry: unknown) => {
|
|
243
|
+
return String(entry);
|
|
244
|
+
})
|
|
245
|
+
: [];
|
|
246
|
+
return {
|
|
247
|
+
operator: DictionaryFilterOperator.IsAnyOf,
|
|
248
|
+
rawValue: values.join(", "),
|
|
249
|
+
rawValues: values,
|
|
250
|
+
};
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
if (
|
|
254
|
+
value instanceof IncludesNone ||
|
|
255
|
+
matchesObjectType(value, ObjectType.IncludesNone)
|
|
256
|
+
) {
|
|
257
|
+
const rawArray: unknown =
|
|
258
|
+
value instanceof IncludesNone
|
|
259
|
+
? value.values
|
|
260
|
+
: (value as { value?: unknown }).value;
|
|
261
|
+
const values: Array<string> = Array.isArray(rawArray)
|
|
262
|
+
? rawArray.map((entry: unknown) => {
|
|
263
|
+
return String(entry);
|
|
264
|
+
})
|
|
265
|
+
: [];
|
|
266
|
+
return {
|
|
267
|
+
operator: DictionaryFilterOperator.IsNoneOf,
|
|
268
|
+
rawValue: values.join(", "),
|
|
269
|
+
rawValues: values,
|
|
270
|
+
};
|
|
271
|
+
}
|
|
272
|
+
|
|
204
273
|
const wrapperValue: string =
|
|
205
274
|
value instanceof Object && "value" in value
|
|
206
275
|
? String(
|
|
@@ -315,9 +384,11 @@ export const detectOperatorFromValue: (
|
|
|
315
384
|
export const buildDictionaryValue: (input: {
|
|
316
385
|
operator: DictionaryFilterOperator;
|
|
317
386
|
rawValue: string;
|
|
387
|
+
rawValues?: Array<string> | undefined;
|
|
318
388
|
}) => DictionaryEntryValue = (input: {
|
|
319
389
|
operator: DictionaryFilterOperator;
|
|
320
390
|
rawValue: string;
|
|
391
|
+
rawValues?: Array<string> | undefined;
|
|
321
392
|
}): DictionaryEntryValue => {
|
|
322
393
|
const { operator, rawValue } = input;
|
|
323
394
|
const trimmed: string = rawValue ?? "";
|
|
@@ -327,6 +398,30 @@ export const buildDictionaryValue: (input: {
|
|
|
327
398
|
return trimmed;
|
|
328
399
|
case DictionaryFilterOperator.NotEqual:
|
|
329
400
|
return new NotEqual<string>(trimmed);
|
|
401
|
+
case DictionaryFilterOperator.IsAnyOf:
|
|
402
|
+
/*
|
|
403
|
+
* Multi-value membership → SQL `attributes['k'] IN (...)`. Drop empty
|
|
404
|
+
* entries; an empty Includes is treated as "All" downstream
|
|
405
|
+
* (sanitizeAttributeFilters drops it and StatementGenerator skips the
|
|
406
|
+
* predicate rather than emitting `IN ()`).
|
|
407
|
+
*/
|
|
408
|
+
return new Includes(
|
|
409
|
+
(input.rawValues ?? []).filter((entry: string) => {
|
|
410
|
+
return entry !== "";
|
|
411
|
+
}),
|
|
412
|
+
);
|
|
413
|
+
case DictionaryFilterOperator.IsNoneOf:
|
|
414
|
+
/*
|
|
415
|
+
* Multi-value exclusion → SQL `attributes['k'] NOT IN (...)`. Drop
|
|
416
|
+
* empty entries; an empty IncludesNone is treated as "All" downstream
|
|
417
|
+
* (sanitizeAttributeFilters drops it and StatementGenerator skips the
|
|
418
|
+
* predicate rather than emitting `NOT IN ()`).
|
|
419
|
+
*/
|
|
420
|
+
return new IncludesNone(
|
|
421
|
+
(input.rawValues ?? []).filter((entry: string) => {
|
|
422
|
+
return entry !== "";
|
|
423
|
+
}),
|
|
424
|
+
);
|
|
330
425
|
case DictionaryFilterOperator.Contains:
|
|
331
426
|
/*
|
|
332
427
|
* Statement.serialize already wraps Search instances with `%...%`,
|
|
@@ -78,9 +78,11 @@ const MasterPage: FunctionComponent<ComponentProps> = (
|
|
|
78
78
|
<main
|
|
79
79
|
id="main-content"
|
|
80
80
|
tabIndex={-1}
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
81
|
+
/*
|
|
82
|
+
* grow so the main content fills the remaining vertical space in
|
|
83
|
+
* the flex column, keeping the page top-aligned and pinning the
|
|
84
|
+
* footer to the bottom even when the content is short.
|
|
85
|
+
*/
|
|
84
86
|
className="grow focus:outline-none"
|
|
85
87
|
>
|
|
86
88
|
{props.children}
|
|
@@ -60,8 +60,8 @@ class Queue {
|
|
|
60
60
|
// Keep BullMQ data under control to avoid Redis bloat
|
|
61
61
|
defaultJobOptions: {
|
|
62
62
|
// keep only recent completed/failed jobs
|
|
63
|
-
removeOnComplete: { count: 500 }, // keep last
|
|
64
|
-
removeOnFail: { count: 100 }, // keep last
|
|
63
|
+
removeOnComplete: { count: 500 }, // keep last 500 completed jobs
|
|
64
|
+
removeOnFail: { count: 100 }, // keep last 100 failed jobs
|
|
65
65
|
},
|
|
66
66
|
/*
|
|
67
67
|
* Optionally cap the event stream length (supported in BullMQ >= v5)
|
|
@@ -80,22 +80,71 @@ class Queue {
|
|
|
80
80
|
logger.error("Error setting up reconnect listener for queue");
|
|
81
81
|
logger.error(err);
|
|
82
82
|
});
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
83
|
+
/*
|
|
84
|
+
* Lazy fallback for the startup sweep: the first time a queue is created in
|
|
85
|
+
* this process, kick off its once-per-process terminal-job cleanup. The
|
|
86
|
+
* eager path (cleanAllQueuesOnStartup, called at service boot) normally
|
|
87
|
+
* wins; whichever runs first is the only one to sweep, via the gate inside
|
|
88
|
+
* cleanQueueOnStartup(). Fire and forget so it never blocks enqueue.
|
|
89
|
+
*/
|
|
90
|
+
void this.cleanQueueOnStartup(queueName);
|
|
91
|
+
return queue;
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Eagerly sweeps every queue's terminal (completed/failed) jobs at process
|
|
95
|
+
* startup, so the Completed/Failed counts on the admin Health page reset on a
|
|
96
|
+
* pod (re)start regardless of when — or whether — each queue next produces a
|
|
97
|
+
* job. Call once during service boot (see App/Index.ts). Each queue is swept
|
|
98
|
+
* at most once per process via the cleanedQueueNames gate, so this is safe to
|
|
99
|
+
* call alongside the lazy getQueue() path and from any service role.
|
|
100
|
+
*/
|
|
101
|
+
static async cleanAllQueuesOnStartup() {
|
|
102
|
+
await Promise.all(Object.values(QueueName).map((queueName) => {
|
|
103
|
+
return this.cleanQueueOnStartup(queueName);
|
|
104
|
+
}));
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Removes terminal (completed/failed) jobs for a single queue, at most once
|
|
108
|
+
* per process (gated by cleanedQueueNames). Drains in batches because
|
|
109
|
+
* BullMQ's clean() caps each call at `limit` removals. Leaves live states
|
|
110
|
+
* (waiting/active/delayed) untouched. Best-effort: any error is logged and
|
|
111
|
+
* swallowed so a transient Redis hiccup at boot never breaks queue setup.
|
|
112
|
+
*/
|
|
113
|
+
static async cleanQueueOnStartup(queueName) {
|
|
114
|
+
/*
|
|
115
|
+
* Gate synchronously, before any await, so the lazy getQueue() trigger and
|
|
116
|
+
* the eager cleanAllQueuesOnStartup() call can't both sweep the same queue.
|
|
117
|
+
*/
|
|
118
|
+
if (this.cleanedQueueNames.has(queueName)) {
|
|
119
|
+
return;
|
|
120
|
+
}
|
|
121
|
+
this.cleanedQueueNames.add(queueName);
|
|
122
|
+
const queue = this.getQueue(queueName);
|
|
123
|
+
const terminalStates = [
|
|
124
|
+
"completed",
|
|
125
|
+
"failed",
|
|
126
|
+
];
|
|
127
|
+
for (const state of terminalStates) {
|
|
128
|
+
try {
|
|
129
|
+
let removedTotal = 0;
|
|
130
|
+
for (let batch = 0; batch < this.STARTUP_CLEANUP_MAX_BATCHES; batch++) {
|
|
131
|
+
const removed = await queue.clean(this.STARTUP_CLEANUP_GRACE_MS, this.STARTUP_CLEANUP_BATCH_SIZE, state);
|
|
132
|
+
removedTotal += removed.length;
|
|
133
|
+
// A short batch means the state is drained; stop looping.
|
|
134
|
+
if (removed.length < this.STARTUP_CLEANUP_BATCH_SIZE) {
|
|
135
|
+
break;
|
|
136
|
+
}
|
|
92
137
|
}
|
|
93
|
-
|
|
94
|
-
|
|
138
|
+
if (removedTotal > 0) {
|
|
139
|
+
logger.debug(`Queue ${queueName}: removed ${removedTotal} ${state} job(s) on startup`);
|
|
95
140
|
}
|
|
96
|
-
}
|
|
141
|
+
}
|
|
142
|
+
catch (err) {
|
|
143
|
+
// Ignore cleanup errors to not impact normal flow.
|
|
144
|
+
logger.debug(`Queue ${queueName}: startup ${state} cleanup failed`);
|
|
145
|
+
logger.debug(err);
|
|
146
|
+
}
|
|
97
147
|
}
|
|
98
|
-
return queue;
|
|
99
148
|
}
|
|
100
149
|
static async removeJob(queueName, jobId) {
|
|
101
150
|
if (!jobId) {
|
|
@@ -340,6 +389,19 @@ Queue.cleanedQueueNames = new Set();
|
|
|
340
389
|
Queue.queueSizeMetricRegistered = false;
|
|
341
390
|
// store repeatable jobs to re-add on reconnect
|
|
342
391
|
Queue.repeatableJobs = {};
|
|
392
|
+
/*
|
|
393
|
+
* How old (in ms) a completed/failed job must be before the startup sweep
|
|
394
|
+
* removes it. 0 means "remove all terminal jobs on every restart", which
|
|
395
|
+
* resets the Completed/Failed counts on the admin Health page so operators
|
|
396
|
+
* stop seeing stale failures after a deploy/restart. Raise this (e.g. to
|
|
397
|
+
* 24 * 60 * 60 * 1000) if you'd rather keep recent failures around for
|
|
398
|
+
* crash-loop debugging.
|
|
399
|
+
*/
|
|
400
|
+
Queue.STARTUP_CLEANUP_GRACE_MS = 0;
|
|
401
|
+
// Number of jobs removed per clean() call; we loop until the state is drained.
|
|
402
|
+
Queue.STARTUP_CLEANUP_BATCH_SIZE = 1000;
|
|
403
|
+
// Safety cap so a pathologically large backlog can't loop forever.
|
|
404
|
+
Queue.STARTUP_CLEANUP_MAX_BATCHES = 1000;
|
|
343
405
|
export default Queue;
|
|
344
406
|
__decorate([
|
|
345
407
|
CaptureSpan(),
|
|
@@ -347,6 +409,12 @@ __decorate([
|
|
|
347
409
|
__metadata("design:paramtypes", [String]),
|
|
348
410
|
__metadata("design:returntype", BullQueue)
|
|
349
411
|
], Queue, "getQueue", null);
|
|
412
|
+
__decorate([
|
|
413
|
+
CaptureSpan(),
|
|
414
|
+
__metadata("design:type", Function),
|
|
415
|
+
__metadata("design:paramtypes", []),
|
|
416
|
+
__metadata("design:returntype", Promise)
|
|
417
|
+
], Queue, "cleanAllQueuesOnStartup", null);
|
|
350
418
|
__decorate([
|
|
351
419
|
CaptureSpan(),
|
|
352
420
|
__metadata("design:type", Function),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Queue.js","sourceRoot":"","sources":["../../../../Server/Infrastructure/Queue.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Queue.js","sourceRoot":"","sources":["../../../../Server/Infrastructure/Queue.ts"],"names":[],"mappings":"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"}
|
|
@@ -58,8 +58,10 @@ export const MigrationExecuteOptions = {
|
|
|
58
58
|
useMigrationConnection: true,
|
|
59
59
|
clickhouseSettings: {
|
|
60
60
|
send_progress_in_http_headers: 1,
|
|
61
|
-
|
|
62
|
-
|
|
61
|
+
/*
|
|
62
|
+
* Emit a progress header every 10s — well under the App pool's 58s and the
|
|
63
|
+
* migration pool's 30-minute idle ceiling.
|
|
64
|
+
*/
|
|
63
65
|
http_headers_progress_interval_ms: "10000",
|
|
64
66
|
},
|
|
65
67
|
};
|
|
@@ -258,9 +260,11 @@ export default class AnalyticsDatabaseService extends BaseService {
|
|
|
258
260
|
}
|
|
259
261
|
async addColumnInDatabase(column) {
|
|
260
262
|
const statement = this.statementGenerator.toAddColumnStatement(column);
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
263
|
+
/*
|
|
264
|
+
* Schema-sync / migration-only path: route through the migration pool so a
|
|
265
|
+
* column add that backfills a DEFAULT/MATERIALIZED expression on a large
|
|
266
|
+
* table is not destroyed at the App pool's 58s socket-idle timeout.
|
|
267
|
+
*/
|
|
264
268
|
await this.execute(statement, MigrationExecuteOptions);
|
|
265
269
|
// Add skip index separately (ClickHouse requires ADD INDEX as a separate ALTER statement)
|
|
266
270
|
const indexStatement = this.statementGenerator.toAddSkipIndexStatement(column);
|