mirror of
https://github.com/grafana/grafana.git
synced 2024-12-28 01:41:24 -06:00
Chore: Remove md5 dependency and use uuid/v5 instead (#34192)
This commit is contained in:
parent
9f9666415b
commit
8cfbee1e11
@ -105,12 +105,11 @@
|
|||||||
"@types/hoist-non-react-statics": "3.3.1",
|
"@types/hoist-non-react-statics": "3.3.1",
|
||||||
"@types/is-hotkey": "0.1.1",
|
"@types/is-hotkey": "0.1.1",
|
||||||
"@types/jest": "26.0.15",
|
"@types/jest": "26.0.15",
|
||||||
"@types/jsurl": "^1.2.28",
|
|
||||||
"@types/jquery": "3.3.38",
|
"@types/jquery": "3.3.38",
|
||||||
|
"@types/jsurl": "^1.2.28",
|
||||||
"@types/lodash": "4.14.149",
|
"@types/lodash": "4.14.149",
|
||||||
"@types/logfmt": "^1.2.1",
|
"@types/logfmt": "^1.2.1",
|
||||||
"@types/lru-cache": "^5.1.0",
|
"@types/lru-cache": "^5.1.0",
|
||||||
"@types/md5": "^2.1.33",
|
|
||||||
"@types/mousetrap": "1.6.3",
|
"@types/mousetrap": "1.6.3",
|
||||||
"@types/node": "13.7.0",
|
"@types/node": "13.7.0",
|
||||||
"@types/papaparse": "5.2.0",
|
"@types/papaparse": "5.2.0",
|
||||||
@ -264,7 +263,6 @@
|
|||||||
"lodash": "4.17.21",
|
"lodash": "4.17.21",
|
||||||
"logfmt": "^1.3.2",
|
"logfmt": "^1.3.2",
|
||||||
"lru-cache": "^5.1.1",
|
"lru-cache": "^5.1.1",
|
||||||
"md5": "^2.2.1",
|
|
||||||
"memoize-one": "5.1.1",
|
"memoize-one": "5.1.1",
|
||||||
"moment": "2.29.1",
|
"moment": "2.29.1",
|
||||||
"moment-timezone": "0.5.33",
|
"moment-timezone": "0.5.33",
|
||||||
|
@ -48,7 +48,7 @@ describe('Live Stream Tests', () => {
|
|||||||
expect(last).toEqual({
|
expect(last).toEqual({
|
||||||
ts: '2019-08-28T20:50:40.118Z',
|
ts: '2019-08-28T20:50:40.118Z',
|
||||||
tsNs: '1567025440118944705',
|
tsNs: '1567025440118944705',
|
||||||
id: '8c50d09800ce8dda69a2ff25405c9f65_A',
|
id: '25d81461-a66f-53ff-98d5-e39515af4735_A',
|
||||||
line: 'Kittens',
|
line: 'Kittens',
|
||||||
labels: { filename: '/var/log/sntpc.log' },
|
labels: { filename: '/var/log/sntpc.log' },
|
||||||
});
|
});
|
||||||
|
@ -72,10 +72,10 @@ describe('loki result transformer', () => {
|
|||||||
expect(data[0].fields[1].labels!['foo']).toEqual('bar');
|
expect(data[0].fields[1].labels!['foo']).toEqual('bar');
|
||||||
expect(data[0].fields[0].values.get(0)).toEqual('2020-01-24T09:19:22.021Z');
|
expect(data[0].fields[0].values.get(0)).toEqual('2020-01-24T09:19:22.021Z');
|
||||||
expect(data[0].fields[1].values.get(0)).toEqual(streamResult[0].values[0][1]);
|
expect(data[0].fields[1].values.get(0)).toEqual(streamResult[0].values[0][1]);
|
||||||
expect(data[0].fields[2].values.get(0)).toEqual('2b431b8a98b80b3b2c2f4cd2444ae6cb');
|
expect(data[0].fields[2].values.get(0)).toEqual('4b79cb43-81ce-52f7-b1e9-a207fff144dc');
|
||||||
expect(data[1].fields[0].values.get(0)).toEqual('2020-01-24T09:19:22.031Z');
|
expect(data[1].fields[0].values.get(0)).toEqual('2020-01-24T09:19:22.031Z');
|
||||||
expect(data[1].fields[1].values.get(0)).toEqual(streamResult[1].values[0][1]);
|
expect(data[1].fields[1].values.get(0)).toEqual(streamResult[1].values[0][1]);
|
||||||
expect(data[1].fields[2].values.get(0)).toEqual('75d73d66cff40f9d1a1f2d5a0bf295d0');
|
expect(data[1].fields[2].values.get(0)).toEqual('73d144f6-57f2-5a45-a49c-eb998e2006b1');
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should always generate unique ids for logs', () => {
|
it('should always generate unique ids for logs', () => {
|
||||||
@ -102,18 +102,18 @@ describe('loki result transformer', () => {
|
|||||||
|
|
||||||
const data = streamResultWithDuplicateLogs.map((stream) => ResultTransformer.lokiStreamResultToDataFrame(stream));
|
const data = streamResultWithDuplicateLogs.map((stream) => ResultTransformer.lokiStreamResultToDataFrame(stream));
|
||||||
|
|
||||||
expect(data[0].fields[2].values.get(0)).toEqual('65cee200875f58ee1430d8bd2e8b74e7');
|
expect(data[0].fields[2].values.get(0)).toEqual('b48fe7dc-36aa-5d37-bfba-087ef810d8fa');
|
||||||
expect(data[0].fields[2].values.get(1)).toEqual('65cee200875f58ee1430d8bd2e8b74e7_1');
|
expect(data[0].fields[2].values.get(1)).toEqual('b48fe7dc-36aa-5d37-bfba-087ef810d8fa_1');
|
||||||
expect(data[0].fields[2].values.get(2)).not.toEqual('65cee200875f58ee1430d8bd2e8b74e7_2');
|
expect(data[0].fields[2].values.get(2)).not.toEqual('b48fe7dc-36aa-5d37-bfba-087ef810d8fa_2');
|
||||||
expect(data[0].fields[2].values.get(3)).toEqual('65cee200875f58ee1430d8bd2e8b74e7_2');
|
expect(data[0].fields[2].values.get(3)).toEqual('b48fe7dc-36aa-5d37-bfba-087ef810d8fa_2');
|
||||||
expect(data[1].fields[2].values.get(0)).not.toEqual('65cee200875f58ee1430d8bd2e8b74e7_3');
|
expect(data[1].fields[2].values.get(0)).not.toEqual('b48fe7dc-36aa-5d37-bfba-087ef810d8fa_3');
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should append refId to the unique ids if refId is provided', () => {
|
it('should append refId to the unique ids if refId is provided', () => {
|
||||||
const data = streamResult.map((stream) => ResultTransformer.lokiStreamResultToDataFrame(stream, false, 'B'));
|
const data = streamResult.map((stream) => ResultTransformer.lokiStreamResultToDataFrame(stream, false, 'B'));
|
||||||
expect(data.length).toBe(2);
|
expect(data.length).toBe(2);
|
||||||
expect(data[0].fields[2].values.get(0)).toEqual('2b431b8a98b80b3b2c2f4cd2444ae6cb_B');
|
expect(data[0].fields[2].values.get(0)).toEqual('4b79cb43-81ce-52f7-b1e9-a207fff144dc_B');
|
||||||
expect(data[1].fields[2].values.get(0)).toEqual('75d73d66cff40f9d1a1f2d5a0bf295d0_B');
|
expect(data[1].fields[2].values.get(0)).toEqual('73d144f6-57f2-5a45-a49c-eb998e2006b1_B');
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -172,7 +172,7 @@ describe('loki result transformer', () => {
|
|||||||
line:
|
line:
|
||||||
't=2020-02-12T15:04:51+0000 lvl=info msg="Starting Grafana" logger=server version=6.7.0-pre commit=6f09bc9fb4 branch=issue-21929 compiled=2020-02-11T20:43:28+0000',
|
't=2020-02-12T15:04:51+0000 lvl=info msg="Starting Grafana" logger=server version=6.7.0-pre commit=6f09bc9fb4 branch=issue-21929 compiled=2020-02-11T20:43:28+0000',
|
||||||
labels: { filename: '/var/log/grafana/grafana.log' },
|
labels: { filename: '/var/log/grafana/grafana.log' },
|
||||||
id: '19e8e093d70122b3b53cb6e24efd6e2d',
|
id: '07f0607c-04ee-51bd-8a0c-fc0f85d37489',
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -205,12 +205,12 @@ describe('loki result transformer', () => {
|
|||||||
data.refId = 'C';
|
data.refId = 'C';
|
||||||
|
|
||||||
ResultTransformer.appendResponseToBufferedData(tailResponse, data);
|
ResultTransformer.appendResponseToBufferedData(tailResponse, data);
|
||||||
expect(data.get(0).id).toEqual('870e4d105741bdfc2c67904ee480d4f3_C');
|
expect(data.get(0).id).toEqual('75e72b25-8589-5f99-8d10-ccb5eb27c1b4_C');
|
||||||
expect(data.get(1).id).toEqual('870e4d105741bdfc2c67904ee480d4f3_1_C');
|
expect(data.get(1).id).toEqual('75e72b25-8589-5f99-8d10-ccb5eb27c1b4_1_C');
|
||||||
expect(data.get(2).id).toEqual('707e4ec2b842f389dbb993438505856d_C');
|
expect(data.get(2).id).toEqual('3ca99d6b-3ab5-5970-93c0-eb3c9449088e_C');
|
||||||
expect(data.get(3).id).toEqual('78f044015a58fad3e257a855b167d85e_C');
|
expect(data.get(3).id).toEqual('ec9bea1d-70cb-556c-8519-d5d6ae18c004_C');
|
||||||
expect(data.get(4).id).toEqual('870e4d105741bdfc2c67904ee480d4f3_2_C');
|
expect(data.get(4).id).toEqual('75e72b25-8589-5f99-8d10-ccb5eb27c1b4_2_C');
|
||||||
expect(data.get(5).id).toEqual('707e4ec2b842f389dbb993438505856d_1_C');
|
expect(data.get(5).id).toEqual('3ca99d6b-3ab5-5970-93c0-eb3c9449088e_1_C');
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
import { capitalize, groupBy, isEmpty } from 'lodash';
|
import { capitalize, groupBy, isEmpty } from 'lodash';
|
||||||
import md5 from 'md5';
|
import { v5 as uuidv5 } from 'uuid';
|
||||||
import { of } from 'rxjs';
|
import { of } from 'rxjs';
|
||||||
|
|
||||||
import {
|
import {
|
||||||
@ -38,6 +38,8 @@ import {
|
|||||||
LokiStats,
|
LokiStats,
|
||||||
} from './types';
|
} from './types';
|
||||||
|
|
||||||
|
const UUID_NAMESPACE = '6ec946da-0f49-47a8-983a-1d76d17e7c92';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Transforms LokiStreamResult structure into a dataFrame. Used when doing standard queries and newer version of Loki.
|
* Transforms LokiStreamResult structure into a dataFrame. Used when doing standard queries and newer version of Loki.
|
||||||
*/
|
*/
|
||||||
@ -155,7 +157,7 @@ export function appendResponseToBufferedData(response: LokiTailResponse, data: M
|
|||||||
|
|
||||||
function createUid(ts: string, labelsString: string, line: string, usedUids: any, refId?: string): string {
|
function createUid(ts: string, labelsString: string, line: string, usedUids: any, refId?: string): string {
|
||||||
// Generate id as hashed nanosecond timestamp, labels and line (this does not have to be unique)
|
// Generate id as hashed nanosecond timestamp, labels and line (this does not have to be unique)
|
||||||
let id = md5(`${ts}_${labelsString}_${line}`);
|
let id = uuidv5(`${ts}_${labelsString}_${line}`, UUID_NAMESPACE);
|
||||||
|
|
||||||
// Check if generated id is unique
|
// Check if generated id is unique
|
||||||
// If not and we've already used it, append it's count after it
|
// If not and we've already used it, append it's count after it
|
||||||
|
28
yarn.lock
28
yarn.lock
@ -4440,13 +4440,6 @@
|
|||||||
resolved "https://registry.yarnpkg.com/@types/marked/-/marked-1.1.0.tgz#53509b5f127e0c05c19176fcf1d743a41e00ff19"
|
resolved "https://registry.yarnpkg.com/@types/marked/-/marked-1.1.0.tgz#53509b5f127e0c05c19176fcf1d743a41e00ff19"
|
||||||
integrity sha512-j8XXj6/l9kFvCwMyVqozznqpd/nk80krrW+QiIJN60Uu9gX5Pvn4/qPJ2YngQrR3QREPwmrE1f9/EWKVTFzoEw==
|
integrity sha512-j8XXj6/l9kFvCwMyVqozznqpd/nk80krrW+QiIJN60Uu9gX5Pvn4/qPJ2YngQrR3QREPwmrE1f9/EWKVTFzoEw==
|
||||||
|
|
||||||
"@types/md5@^2.1.33":
|
|
||||||
version "2.1.33"
|
|
||||||
resolved "https://registry.yarnpkg.com/@types/md5/-/md5-2.1.33.tgz#8c8dba30df4ad0e92296424f08c4898dd808e8df"
|
|
||||||
integrity sha512-8+X960EtKLoSblhauxLKy3zzotagjoj3Jt1Tx9oaxUdZEPIBl+mkrUz6PNKpzJgkrKSN9YgkWTA29c0KnLshmA==
|
|
||||||
dependencies:
|
|
||||||
"@types/node" "*"
|
|
||||||
|
|
||||||
"@types/mdast@^3.0.0":
|
"@types/mdast@^3.0.0":
|
||||||
version "3.0.3"
|
version "3.0.3"
|
||||||
resolved "https://registry.yarnpkg.com/@types/mdast/-/mdast-3.0.3.tgz#2d7d671b1cd1ea3deb306ea75036c2a0407d2deb"
|
resolved "https://registry.yarnpkg.com/@types/mdast/-/mdast-3.0.3.tgz#2d7d671b1cd1ea3deb306ea75036c2a0407d2deb"
|
||||||
@ -7220,11 +7213,6 @@ chardet@^0.7.0:
|
|||||||
resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e"
|
resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e"
|
||||||
integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==
|
integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==
|
||||||
|
|
||||||
charenc@~0.0.1:
|
|
||||||
version "0.0.2"
|
|
||||||
resolved "https://registry.yarnpkg.com/charenc/-/charenc-0.0.2.tgz#c0a1d2f3a7092e03774bfa83f14c0fc5790a8667"
|
|
||||||
integrity sha1-wKHS86cJLgN3S/qD8UwPxXkKhmc=
|
|
||||||
|
|
||||||
check-more-types@^2.24.0:
|
check-more-types@^2.24.0:
|
||||||
version "2.24.0"
|
version "2.24.0"
|
||||||
resolved "https://registry.yarnpkg.com/check-more-types/-/check-more-types-2.24.0.tgz#1420ffb10fd444dcfc79b43891bbfffd32a84600"
|
resolved "https://registry.yarnpkg.com/check-more-types/-/check-more-types-2.24.0.tgz#1420ffb10fd444dcfc79b43891bbfffd32a84600"
|
||||||
@ -8159,11 +8147,6 @@ cross-spawn@^5.0.1:
|
|||||||
shebang-command "^1.2.0"
|
shebang-command "^1.2.0"
|
||||||
which "^1.2.9"
|
which "^1.2.9"
|
||||||
|
|
||||||
crypt@~0.0.1:
|
|
||||||
version "0.0.2"
|
|
||||||
resolved "https://registry.yarnpkg.com/crypt/-/crypt-0.0.2.tgz#88d7ff7ec0dfb86f713dc87bbb42d044d3e6c41b"
|
|
||||||
integrity sha1-iNf/fsDfuG9xPch7u0LQRNPmxBs=
|
|
||||||
|
|
||||||
crypto-browserify@^3.11.0:
|
crypto-browserify@^3.11.0:
|
||||||
version "3.12.0"
|
version "3.12.0"
|
||||||
resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec"
|
resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec"
|
||||||
@ -12661,7 +12644,7 @@ is-boolean-object@^1.0.1, is-boolean-object@^1.1.0:
|
|||||||
dependencies:
|
dependencies:
|
||||||
call-bind "^1.0.0"
|
call-bind "^1.0.0"
|
||||||
|
|
||||||
is-buffer@^1.1.5, is-buffer@~1.1.1:
|
is-buffer@^1.1.5:
|
||||||
version "1.1.6"
|
version "1.1.6"
|
||||||
resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be"
|
resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be"
|
||||||
integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==
|
integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==
|
||||||
@ -14834,15 +14817,6 @@ md5.js@^1.3.4:
|
|||||||
inherits "^2.0.1"
|
inherits "^2.0.1"
|
||||||
safe-buffer "^5.1.2"
|
safe-buffer "^5.1.2"
|
||||||
|
|
||||||
md5@^2.2.1:
|
|
||||||
version "2.2.1"
|
|
||||||
resolved "https://registry.yarnpkg.com/md5/-/md5-2.2.1.tgz#53ab38d5fe3c8891ba465329ea23fac0540126f9"
|
|
||||||
integrity sha1-U6s41f48iJG6RlMp6iP6wFQBJvk=
|
|
||||||
dependencies:
|
|
||||||
charenc "~0.0.1"
|
|
||||||
crypt "~0.0.1"
|
|
||||||
is-buffer "~1.1.1"
|
|
||||||
|
|
||||||
mdast-squeeze-paragraphs@^4.0.0:
|
mdast-squeeze-paragraphs@^4.0.0:
|
||||||
version "4.0.0"
|
version "4.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/mdast-squeeze-paragraphs/-/mdast-squeeze-paragraphs-4.0.0.tgz#7c4c114679c3bee27ef10b58e2e015be79f1ef97"
|
resolved "https://registry.yarnpkg.com/mdast-squeeze-paragraphs/-/mdast-squeeze-paragraphs-4.0.0.tgz#7c4c114679c3bee27ef10b58e2e015be79f1ef97"
|
||||||
|
Loading…
Reference in New Issue
Block a user