Skip to content

Commit 161cdcc

Browse files
authored
fix: error trace event pattern should have red color (#1743)
1 parent f8519d5 commit 161cdcc

4 files changed

Lines changed: 26 additions & 11 deletions

File tree

‎.changeset/violet-bears-attend.md‎

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"@hyperdx/app": patch
3+
---
4+
5+
fix: error trace event pattern should have red color

‎packages/app/src/components/DBRowTable.tsx‎

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,7 @@ const SPECIAL_VALUES = {
123123
const ACCESSOR_MAP: Record<string, AccessorFn> = {
124124
duration: row =>
125125
row.duration >= 0 ? row.duration : SPECIAL_VALUES.not_available,
126+
severityText: row => row.severityText ?? row.statusCode,
126127
default: (row, column) => row[column],
127128
};
128129

@@ -516,7 +517,10 @@ export const RawLogTable = memo(
516517
<PatternTrendChart
517518
data={value.data}
518519
dateRange={value.dateRange}
519-
color={logLevelColor(info.row.original.severityText)}
520+
color={logLevelColor(
521+
info.row.original.severityText ??
522+
info.row.original.statusCode,
523+
)}
520524
/>
521525
</div>
522526
);

‎packages/app/src/components/PatternTable.tsx‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ export default function PatternTable({
4444
samples: SAMPLES,
4545
bodyValueExpression,
4646
severityTextExpression: source?.severityTextExpression ?? '',
47+
statusCodeExpression: source?.statusCodeExpression ?? '',
4748
totalCount,
4849
});
4950

@@ -79,7 +80,7 @@ export default function PatternTable({
7980
__hdx_pattern_trend: 'Trend',
8081
countStr: 'Count',
8182
pattern: 'Pattern',
82-
severityText: 'level',
83+
severityText: 'Level',
8384
}}
8485
config={patternQueryConfig}
8586
showExpandButton={false}

‎packages/app/src/hooks/usePatterns.tsx‎

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,7 @@ async function mineEventPatterns(logs: string[], pyodide: any) {
107107
export const PATTERN_COLUMN_ALIAS = '__hdx_pattern_field';
108108
export const TIMESTAMP_COLUMN_ALIAS = '__hdx_timestamp';
109109
export const SEVERITY_TEXT_COLUMN_ALIAS = '__hdx_severity_text';
110+
export const STATUS_CODE_COLUMN_ALIAS = '__hdx_status_code';
110111

111112
export type SampleLog = {
112113
[PATTERN_COLUMN_ALIAS]: string;
@@ -126,12 +127,14 @@ function usePatterns({
126127
samples,
127128
bodyValueExpression,
128129
severityTextExpression,
130+
statusCodeExpression,
129131
enabled = true,
130132
}: {
131133
config: ChartConfigWithDateRange;
132134
samples: number;
133135
bodyValueExpression: string;
134136
severityTextExpression?: string;
137+
statusCodeExpression?: string;
135138
enabled?: boolean;
136139
}) {
137140
const configWithPrimaryAndPartitionKey = useConfigWithPrimaryAndPartitionKey({
@@ -143,6 +146,9 @@ function usePatterns({
143146
...(severityTextExpression
144147
? [`${severityTextExpression} as ${SEVERITY_TEXT_COLUMN_ALIAS}`]
145148
: []),
149+
...(statusCodeExpression
150+
? [`${statusCodeExpression} as ${STATUS_CODE_COLUMN_ALIAS}`]
151+
: []),
146152
].join(','),
147153
// TODO: Proper sampling
148154
orderBy: [{ ordering: 'DESC', valueExpression: 'rand()' }],
@@ -210,13 +216,15 @@ export function useGroupedPatterns({
210216
samples,
211217
bodyValueExpression,
212218
severityTextExpression,
219+
statusCodeExpression,
213220
totalCount,
214221
enabled = true,
215222
}: {
216223
config: ChartConfigWithDateRange;
217224
samples: number;
218225
bodyValueExpression: string;
219226
severityTextExpression?: string;
227+
statusCodeExpression?: string;
220228
totalCount?: number;
221229
enabled?: boolean;
222230
}) {
@@ -229,15 +237,9 @@ export function useGroupedPatterns({
229237
samples,
230238
bodyValueExpression,
231239
severityTextExpression,
240+
statusCodeExpression,
232241
enabled,
233242
});
234-
const columnMap = useMemo(() => {
235-
return selectColumnMapWithoutAdditionalKeys(
236-
results?.meta,
237-
results?.additionalKeysLength,
238-
);
239-
}, [results]);
240-
const columns = useMemo(() => Array.from(columnMap.keys()), [columnMap]);
241243

242244
const sampledRowCount = results?.data.length;
243245
const sampleMultiplier = useMemo(() => {
@@ -283,12 +285,15 @@ export function useGroupedPatterns({
283285

284286
// return at least 1
285287
const count = Math.max(Math.round(rows.length * sampleMultiplier), 1);
288+
const lastRow = rows.at(-1);
289+
286290
fullPatternGroups[patternId] = {
287291
id: patternId,
288-
pattern: rows[rows.length - 1].__hdx_pattern, // last pattern is usually the most up to date templated pattern
292+
pattern: lastRow?.__hdx_pattern, // last pattern is usually the most up to date templated pattern
289293
count,
290294
countStr: `~${count}`,
291-
severityText: rows[rows.length - 1].__hdx_severity_text, // last severitytext is usually representative of the entire pattern set
295+
severityText: lastRow?.[SEVERITY_TEXT_COLUMN_ALIAS], // last severitytext is usually representative of the entire pattern set
296+
statusCode: lastRow?.[STATUS_CODE_COLUMN_ALIAS],
292297
samples: rows,
293298
__hdx_pattern_trend: {
294299
data: Object.entries(bucketCounts).map(([bucket, count]) => ({

0 commit comments

Comments
 (0)