Tracing: Remove redundant types (#91835)

* Display event name of a span

* Clean up

* Retrigger the build

* Show colon only when there are fields to display

* Rollback

* Use event name when exporting to OTLP

* Allow filtering spans by event name

* Remove redundant types

* Remove redundant TraceLog

* Update betterer report
This commit is contained in:
Piotr Jamróz 2024-09-13 10:05:37 +02:00 committed by GitHub
parent 8c702d4a6b
commit 3514504240
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
21 changed files with 47 additions and 94 deletions

View File

@ -4300,9 +4300,6 @@ exports[`better eslint`] = {
[0, 0, 0, "Do not re-export imported variable (\`./TNil\`)", "3"], [0, 0, 0, "Do not re-export imported variable (\`./TNil\`)", "3"],
[0, 0, 0, "Do not re-export imported variable (\`./links\`)", "4"] [0, 0, 0, "Do not re-export imported variable (\`./links\`)", "4"]
], ],
"public/app/features/explore/TraceView/components/types/trace.ts:5381": [
[0, 0, 0, "Unexpected any. Specify a different type.", "0"]
],
"public/app/features/explore/TraceView/components/utils/DraggableManager/demo/DraggableManagerDemo.tsx:5381": [ "public/app/features/explore/TraceView/components/utils/DraggableManager/demo/DraggableManagerDemo.tsx:5381": [
[0, 0, 0, "No untranslated strings. Wrap text with <Trans />", "0"], [0, 0, 0, "No untranslated strings. Wrap text with <Trans />", "0"],
[0, 0, 0, "No untranslated strings. Wrap text with <Trans />", "1"], [0, 0, 0, "No untranslated strings. Wrap text with <Trans />", "1"],
@ -6510,9 +6507,6 @@ exports[`better eslint`] = {
"public/app/plugins/datasource/jaeger/_importedDependencies/types/index.tsx:5381": [ "public/app/plugins/datasource/jaeger/_importedDependencies/types/index.tsx:5381": [
[0, 0, 0, "Do not re-export imported variable (\`./trace\`)", "0"] [0, 0, 0, "Do not re-export imported variable (\`./trace\`)", "0"]
], ],
"public/app/plugins/datasource/jaeger/_importedDependencies/types/trace.ts:5381": [
[0, 0, 0, "Unexpected any. Specify a different type.", "0"]
],
"public/app/plugins/datasource/jaeger/components/QueryEditor.tsx:5381": [ "public/app/plugins/datasource/jaeger/components/QueryEditor.tsx:5381": [
[0, 0, 0, "\'HorizontalGroup\' import from \'@grafana/ui\' is restricted from being used by a pattern. Use Stack component instead.", "0"] [0, 0, 0, "\'HorizontalGroup\' import from \'@grafana/ui\' is restricted from being used by a pattern. Use Stack component instead.", "0"]
], ],
@ -6524,9 +6518,6 @@ exports[`better eslint`] = {
[0, 0, 0, "Do not use any type assertions.", "0"], [0, 0, 0, "Do not use any type assertions.", "0"],
[0, 0, 0, "Unexpected any. Specify a different type.", "1"] [0, 0, 0, "Unexpected any. Specify a different type.", "1"]
], ],
"public/app/plugins/datasource/jaeger/types.ts:5381": [
[0, 0, 0, "Unexpected any. Specify a different type.", "0"]
],
"public/app/plugins/datasource/loki/LanguageProvider.ts:5381": [ "public/app/plugins/datasource/loki/LanguageProvider.ts:5381": [
[0, 0, 0, "Unexpected any. Specify a different type.", "0"] [0, 0, 0, "Unexpected any. Specify a different type.", "0"]
], ],

View File

@ -4,6 +4,7 @@
export type TraceKeyValuePair<T = any> = { export type TraceKeyValuePair<T = any> = {
key: string; key: string;
value: T; value: T;
type?: string;
}; };
/** /**

View File

@ -16,11 +16,11 @@ import { css } from '@emotion/css';
import cx from 'classnames'; import cx from 'classnames';
import * as React from 'react'; import * as React from 'react';
import { GrafanaTheme2 } from '@grafana/data'; import { GrafanaTheme2, TraceKeyValuePair } from '@grafana/data';
import { Icon, useStyles2 } from '@grafana/ui'; import { Icon, useStyles2 } from '@grafana/ui';
import { autoColor } from '../../Theme'; import { autoColor } from '../../Theme';
import { TraceKeyValuePair, TraceLink, TNil } from '../../types'; import { TraceLink, TNil } from '../../types';
import * as markers from './AccordianKeyValues.markers'; import * as markers from './AccordianKeyValues.markers';
import KeyValuesTable from './KeyValuesTable'; import KeyValuesTable from './KeyValuesTable';

View File

@ -16,12 +16,12 @@ import { css } from '@emotion/css';
import { sortBy as _sortBy } from 'lodash'; import { sortBy as _sortBy } from 'lodash';
import * as React from 'react'; import * as React from 'react';
import { GrafanaTheme2 } from '@grafana/data'; import { GrafanaTheme2, TraceKeyValuePair, TraceLog } from '@grafana/data';
import { Icon, useStyles2 } from '@grafana/ui'; import { Icon, useStyles2 } from '@grafana/ui';
import { autoColor } from '../../Theme'; import { autoColor } from '../../Theme';
import { TNil } from '../../types'; import { TNil } from '../../types';
import { TraceLog, TraceKeyValuePair, TraceLink } from '../../types/trace'; import { TraceLink } from '../../types/trace';
import { formatDuration } from '../utils'; import { formatDuration } from '../utils';
import AccordianKeyValues from './AccordianKeyValues'; import AccordianKeyValues from './AccordianKeyValues';

View File

@ -12,7 +12,9 @@
// See the License for the specific language governing permissions and // See the License for the specific language governing permissions and
// limitations under the License. // limitations under the License.
import { TraceLog, TraceSpanReference } from '../../types/trace'; import { TraceLog } from '@grafana/data';
import { TraceSpanReference } from '../../types/trace';
/** /**
* Which items of a {@link SpanDetail} component are expanded. * Which items of a {@link SpanDetail} component are expanded.

View File

@ -17,12 +17,12 @@ import cx from 'classnames';
import { PropsWithChildren } from 'react'; import { PropsWithChildren } from 'react';
import * as React from 'react'; import * as React from 'react';
import { GrafanaTheme2 } from '@grafana/data'; import { GrafanaTheme2, TraceKeyValuePair } from '@grafana/data';
import { Icon, useStyles2 } from '@grafana/ui'; import { Icon, useStyles2 } from '@grafana/ui';
import { autoColor } from '../../Theme'; import { autoColor } from '../../Theme';
import CopyIcon from '../../common/CopyIcon'; import CopyIcon from '../../common/CopyIcon';
import { TraceKeyValuePair, TraceLink, TNil } from '../../types'; import { TraceLink, TNil } from '../../types';
import jsonMarkup from './jsonMarkup'; import jsonMarkup from './jsonMarkup';

View File

@ -17,7 +17,15 @@ import { SpanStatusCode } from '@opentelemetry/api';
import cx from 'classnames'; import cx from 'classnames';
import * as React from 'react'; import * as React from 'react';
import { DataFrame, dateTimeFormat, GrafanaTheme2, IconName, LinkModel } from '@grafana/data'; import {
DataFrame,
dateTimeFormat,
GrafanaTheme2,
IconName,
LinkModel,
TraceKeyValuePair,
TraceLog,
} from '@grafana/data';
import { TraceToProfilesOptions } from '@grafana/o11y-ds-frontend'; import { TraceToProfilesOptions } from '@grafana/o11y-ds-frontend';
import { config, locationService, reportInteraction } from '@grafana/runtime'; import { config, locationService, reportInteraction } from '@grafana/runtime';
import { TimeZone } from '@grafana/schema'; import { TimeZone } from '@grafana/schema';
@ -30,7 +38,7 @@ import LabeledList from '../../common/LabeledList';
import { KIND, LIBRARY_NAME, LIBRARY_VERSION, STATUS, STATUS_MESSAGE, TRACE_STATE } from '../../constants/span'; import { KIND, LIBRARY_NAME, LIBRARY_VERSION, STATUS, STATUS_MESSAGE, TRACE_STATE } from '../../constants/span';
import { SpanLinkFunc, TNil } from '../../types'; import { SpanLinkFunc, TNil } from '../../types';
import { SpanLinkDef, SpanLinkType } from '../../types/links'; import { SpanLinkDef, SpanLinkType } from '../../types/links';
import { TraceKeyValuePair, TraceLink, TraceLog, TraceSpan, TraceSpanReference } from '../../types/trace'; import { TraceLink, TraceSpan, TraceSpanReference } from '../../types/trace';
import { formatDuration } from '../utils'; import { formatDuration } from '../utils';
import AccordianKeyValues from './AccordianKeyValues'; import AccordianKeyValues from './AccordianKeyValues';

View File

@ -16,14 +16,14 @@ import { css } from '@emotion/css';
import classNames from 'classnames'; import classNames from 'classnames';
import { PureComponent } from 'react'; import { PureComponent } from 'react';
import { GrafanaTheme2, LinkModel } from '@grafana/data'; import { GrafanaTheme2, LinkModel, TraceKeyValuePair, TraceLog } from '@grafana/data';
import { TraceToProfilesOptions } from '@grafana/o11y-ds-frontend'; import { TraceToProfilesOptions } from '@grafana/o11y-ds-frontend';
import { TimeZone } from '@grafana/schema'; import { TimeZone } from '@grafana/schema';
import { Button, clearButtonStyles, stylesFactory, withTheme2 } from '@grafana/ui'; import { Button, clearButtonStyles, stylesFactory, withTheme2 } from '@grafana/ui';
import { autoColor } from '../Theme'; import { autoColor } from '../Theme';
import { SpanLinkFunc } from '../types'; import { SpanLinkFunc } from '../types';
import { TraceLog, TraceSpan, TraceKeyValuePair, TraceLink, TraceSpanReference } from '../types/trace'; import { TraceSpan, TraceLink, TraceSpanReference } from '../types/trace';
import SpanDetail, { TraceFlameGraphs } from './SpanDetail'; import SpanDetail, { TraceFlameGraphs } from './SpanDetail';
import DetailState from './SpanDetail/DetailState'; import DetailState from './SpanDetail/DetailState';

View File

@ -18,7 +18,7 @@ import memoizeOne from 'memoize-one';
import * as React from 'react'; import * as React from 'react';
import { RefObject } from 'react'; import { RefObject } from 'react';
import { GrafanaTheme2, LinkModel } from '@grafana/data'; import { GrafanaTheme2, LinkModel, TraceKeyValuePair, TraceLog } from '@grafana/data';
import { TraceToProfilesOptions } from '@grafana/o11y-ds-frontend'; import { TraceToProfilesOptions } from '@grafana/o11y-ds-frontend';
import { config, reportInteraction } from '@grafana/runtime'; import { config, reportInteraction } from '@grafana/runtime';
import { TimeZone } from '@grafana/schema'; import { TimeZone } from '@grafana/schema';
@ -27,7 +27,7 @@ import { stylesFactory, withTheme2, ToolbarButton } from '@grafana/ui';
import { PEER_SERVICE } from '../constants/tag-keys'; import { PEER_SERVICE } from '../constants/tag-keys';
import { CriticalPathSection, SpanBarOptions, SpanLinkFunc, TNil } from '../types'; import { CriticalPathSection, SpanBarOptions, SpanLinkFunc, TNil } from '../types';
import TTraceTimeline from '../types/TTraceTimeline'; import TTraceTimeline from '../types/TTraceTimeline';
import { TraceLog, TraceSpan, Trace, TraceKeyValuePair, TraceLink, TraceSpanReference } from '../types/trace'; import { TraceSpan, Trace, TraceLink, TraceSpanReference } from '../types/trace';
import { getColorByKey } from '../utils/color-generator'; import { getColorByKey } from '../utils/color-generator';
import ListView from './ListView'; import ListView from './ListView';

View File

@ -15,7 +15,7 @@
import { css } from '@emotion/css'; import { css } from '@emotion/css';
import { PureComponent, RefObject } from 'react'; import { PureComponent, RefObject } from 'react';
import { GrafanaTheme2, LinkModel } from '@grafana/data'; import { GrafanaTheme2, LinkModel, TraceKeyValuePair, TraceLog } from '@grafana/data';
import { SpanBarOptions, TraceToProfilesOptions } from '@grafana/o11y-ds-frontend'; import { SpanBarOptions, TraceToProfilesOptions } from '@grafana/o11y-ds-frontend';
import { config, reportInteraction } from '@grafana/runtime'; import { config, reportInteraction } from '@grafana/runtime';
import { TimeZone } from '@grafana/schema'; import { TimeZone } from '@grafana/schema';
@ -25,7 +25,7 @@ import { autoColor } from '../Theme';
import { merge as mergeShortcuts } from '../keyboard-shortcuts'; import { merge as mergeShortcuts } from '../keyboard-shortcuts';
import { CriticalPathSection, SpanLinkFunc, TNil } from '../types'; import { CriticalPathSection, SpanLinkFunc, TNil } from '../types';
import TTraceTimeline from '../types/TTraceTimeline'; import TTraceTimeline from '../types/TTraceTimeline';
import { TraceSpan, Trace, TraceLog, TraceKeyValuePair, TraceLink, TraceSpanReference } from '../types/trace'; import { TraceSpan, Trace, TraceLink, TraceSpanReference } from '../types/trace';
import { TraceFlameGraphs } from './SpanDetail'; import { TraceFlameGraphs } from './SpanDetail';
import TimelineHeaderRow from './TimelineHeaderRow'; import TimelineHeaderRow from './TimelineHeaderRow';

View File

@ -14,12 +14,8 @@
import Chance from 'chance'; import Chance from 'chance';
import { import { TraceKeyValuePair } from '@grafana/data';
TraceSpanData, import { TraceSpanData, TraceProcess, TraceResponse } from 'app/features/explore/TraceView/components/types/trace';
TraceProcess,
TraceKeyValuePair,
TraceResponse,
} from 'app/features/explore/TraceView/components/types/trace';
import { getSpanId } from '../selectors/span'; import { getSpanId } from '../selectors/span';

View File

@ -15,8 +15,10 @@
import { isEqual as _isEqual } from 'lodash'; import { isEqual as _isEqual } from 'lodash';
// @ts-ignore // @ts-ignore
import { TraceKeyValuePair } from '@grafana/data';
import { getTraceSpanIdsAsTree } from '../selectors/trace'; import { getTraceSpanIdsAsTree } from '../selectors/trace';
import { TraceKeyValuePair, TraceSpan, Trace, TraceResponse, TraceProcess } from '../types'; import { TraceSpan, Trace, TraceResponse, TraceProcess } from '../types';
// @ts-ignore // @ts-ignore
import TreeNode from '../utils/TreeNode'; import TreeNode from '../utils/TreeNode';
import { getConfigValue } from '../utils/config/get-config'; import { getConfigValue } from '../utils/config/get-config';

View File

@ -12,15 +12,7 @@
// See the License for the specific language governing permissions and // See the License for the specific language governing permissions and
// limitations under the License. // limitations under the License.
export { export { TraceSpan, TraceResponse, Trace, TraceProcess, TraceLink, CriticalPathSection } from './trace';
TraceSpan,
TraceResponse,
Trace,
TraceProcess,
TraceKeyValuePair,
TraceLink,
CriticalPathSection,
} from './trace';
export { SpanBarOptions, SpanBarOptionsData } from '../settings/SpanBarSettings'; export { SpanBarOptions, SpanBarOptionsData } from '../settings/SpanBarSettings';
export { default as TTraceTimeline } from './TTraceTimeline'; export { default as TTraceTimeline } from './TTraceTimeline';
export { default as TNil } from './TNil'; export { default as TNil } from './TNil';

View File

@ -12,28 +12,17 @@
// See the License for the specific language governing permissions and // See the License for the specific language governing permissions and
// limitations under the License. // limitations under the License.
import { TraceKeyValuePair, TraceLog } from '@grafana/data';
/** /**
* All timestamps are in microseconds * All timestamps are in microseconds
*/ */
// TODO: Everett Tech Debt: Fix KeyValuePair types
export type TraceKeyValuePair = {
key: string;
type?: string;
value: any;
};
export type TraceLink = { export type TraceLink = {
url: string; url: string;
text: string; text: string;
}; };
export type TraceLog = {
timestamp: number;
fields: TraceKeyValuePair[];
name?: string;
};
export type TraceProcess = { export type TraceProcess = {
serviceName: string; serviceName: string;
tags: TraceKeyValuePair[]; tags: TraceKeyValuePair[];

View File

@ -14,9 +14,11 @@
import { SpanStatusCode } from '@opentelemetry/api'; import { SpanStatusCode } from '@opentelemetry/api';
import { TraceKeyValuePair } from '@grafana/data';
import { SearchProps, Tag } from '../../useSearch'; import { SearchProps, Tag } from '../../useSearch';
import { KIND, LIBRARY_NAME, LIBRARY_VERSION, STATUS, STATUS_MESSAGE, TRACE_STATE, ID } from '../constants/span'; import { KIND, LIBRARY_NAME, LIBRARY_VERSION, STATUS, STATUS_MESSAGE, TRACE_STATE, ID } from '../constants/span';
import { TNil, TraceKeyValuePair, TraceSpan } from '../types'; import { TNil, TraceSpan } from '../types';
// filter spans where all filters added need to be true for each individual span that is returned // filter spans where all filters added need to be true for each individual span that is returned
// i.e. the more filters added -> the more specific that the returned results are // i.e. the more filters added -> the more specific that the returned results are

View File

@ -1,8 +1,7 @@
import { act, renderHook } from '@testing-library/react'; import { act, renderHook } from '@testing-library/react';
import { DataFrame } from '@grafana/data'; import { DataFrame, TraceLog } from '@grafana/data';
import { TraceLog } from './components/types/trace';
import { useDetailState } from './useDetailState'; import { useDetailState } from './useDetailState';
const sampleFrame: DataFrame = { const sampleFrame: DataFrame = {

View File

@ -1,9 +1,9 @@
import { useCallback, useState, useEffect } from 'react'; import { useCallback, useState, useEffect } from 'react';
import { DataFrame } from '@grafana/data'; import { DataFrame, TraceLog } from '@grafana/data';
import { DetailState } from './components'; import { DetailState } from './components';
import { TraceLog, TraceSpanReference } from './components/types/trace'; import { TraceSpanReference } from './components/types/trace';
/** /**
* Keeps state of the span detail. This means whether span details are open but also state of each detail subitem * Keeps state of the span detail. This means whether span details are open but also state of each detail subitem
* like logs or tags. * like logs or tags.

View File

@ -14,8 +14,10 @@
import { isEqual as _isEqual } from 'lodash'; import { isEqual as _isEqual } from 'lodash';
import { TraceKeyValuePair } from '@grafana/data';
import { getTraceSpanIdsAsTree } from '../selectors/trace'; import { getTraceSpanIdsAsTree } from '../selectors/trace';
import { TraceKeyValuePair, TraceSpan, Trace, TraceResponse, TraceProcess } from '../types'; import { TraceSpan, Trace, TraceResponse, TraceProcess } from '../types';
import TreeNode from '../utils/TreeNode'; import TreeNode from '../utils/TreeNode';
import { getConfigValue } from '../utils/config/get-config'; import { getConfigValue } from '../utils/config/get-config';

View File

@ -12,12 +12,4 @@
// See the License for the specific language governing permissions and // See the License for the specific language governing permissions and
// limitations under the License. // limitations under the License.
export { export { TraceSpan, TraceResponse, Trace, TraceProcess, TraceLink, CriticalPathSection } from './trace';
TraceSpan,
TraceResponse,
Trace,
TraceProcess,
TraceKeyValuePair,
TraceLink,
CriticalPathSection,
} from './trace';

View File

@ -12,28 +12,17 @@
// See the License for the specific language governing permissions and // See the License for the specific language governing permissions and
// limitations under the License. // limitations under the License.
import { TraceKeyValuePair, TraceLog } from '@grafana/data';
/** /**
* All timestamps are in microseconds * All timestamps are in microseconds
*/ */
// TODO: Everett Tech Debt: Fix KeyValuePair types
export type TraceKeyValuePair = {
key: string;
type?: string;
value: any;
};
export type TraceLink = { export type TraceLink = {
url: string; url: string;
text: string; text: string;
}; };
export type TraceLog = {
timestamp: number;
fields: TraceKeyValuePair[];
name?: string;
};
export type TraceProcess = { export type TraceProcess = {
serviceName: string; serviceName: string;
tags: TraceKeyValuePair[]; tags: TraceKeyValuePair[];

View File

@ -1,22 +1,10 @@
import { DataQuery } from '@grafana/data'; import { DataQuery, TraceKeyValuePair, TraceLog } from '@grafana/data';
export type TraceKeyValuePair = {
key: string;
type?: string;
value: any;
};
export type TraceLink = { export type TraceLink = {
url: string; url: string;
text: string; text: string;
}; };
export type TraceLog = {
timestamp: number;
fields: TraceKeyValuePair[];
name?: string;
};
export type TraceProcess = { export type TraceProcess = {
serviceName: string; serviceName: string;
tags: TraceKeyValuePair[]; tags: TraceKeyValuePair[];