diff --git a/package.json b/package.json index 74387ba9917..0f5105a4c5c 100644 --- a/package.json +++ b/package.json @@ -215,6 +215,7 @@ "@types/react-loadable": "5.5.2", "@types/react-virtualized-auto-sizer": "1.0.0", "@types/sockjs-client": "^1.1.1", + "@types/uuid": "8.3.0", "@welldone-software/why-did-you-render": "4.0.6", "abortcontroller-polyfill": "1.4.0", "angular": "1.6.9", @@ -286,6 +287,7 @@ "tether-drop": "https://github.com/torkelo/drop/tarball/master", "tinycolor2": "1.4.1", "tti-polyfill": "0.2.2", + "uuid": "8.3.0", "whatwg-fetch": "3.1.0" }, "resolutions": { diff --git a/public/app/core/services/backend_srv.ts b/public/app/core/services/backend_srv.ts index 0d86fc5ea4d..b78ef8078c2 100644 --- a/public/app/core/services/backend_srv.ts +++ b/public/app/core/services/backend_srv.ts @@ -1,6 +1,7 @@ import { from, merge, MonoTypeOperatorFunction, Observable, Subject, Subscription, throwError } from 'rxjs'; import { catchError, filter, map, mergeMap, retryWhen, share, takeUntil, tap, throwIfEmpty } from 'rxjs/operators'; import { fromFetch } from 'rxjs/fetch'; +import { v4 as uuidv4 } from 'uuid'; import { BackendSrv as BackendService, BackendSrvRequest, FetchError, FetchResponse } from '@grafana/runtime'; import { AppEvents } from '@grafana/data'; @@ -66,8 +67,7 @@ export class BackendSrv implements BackendService { fetch(options: BackendSrvRequest): Observable> { return new Observable(observer => { // We need to match an entry added to the queue stream with the entry that is eventually added to the response stream - // using Date.now() as the unique identifier - const id = Date.now().toString(10); + const id = uuidv4(); // Subscription is an object that is returned whenever you subscribe to an Observable. // You can also use it as a container of many subscriptions and when it is unsubscribed all subscriptions within are also unsubscribed. diff --git a/yarn.lock b/yarn.lock index b8753ffe423..116403bafbc 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6790,6 +6790,11 @@ resolved "https://registry.yarnpkg.com/@types/unist/-/unist-2.0.3.tgz#9c088679876f374eb5983f150d4787aa6fb32d7e" integrity sha512-FvUupuM3rlRsRtCN+fDudtmytGO6iHJuuRKS1Ss0pG5z8oX0diNEw94UEL7hgDbpN94rgaK5R7sWm6RrSkZuAQ== +"@types/uuid@8.3.0": + version "8.3.0" + resolved "https://registry.yarnpkg.com/@types/uuid/-/uuid-8.3.0.tgz#215c231dff736d5ba92410e6d602050cce7e273f" + integrity sha512-eQ9qFW/fhfGJF8WKHGEHZEyVWfZxrT+6CLIJGBcZPfxUh/+BnEj+UCGYMlr9qZuX/2AltsvwrGqp0LhEW8D0zQ== + "@types/webpack-dev-server@*": version "3.1.7" resolved "https://registry.yarnpkg.com/@types/webpack-dev-server/-/webpack-dev-server-3.1.7.tgz#a3e7a20366e68bc9853c730b56e994634cb78dac" @@ -26433,6 +26438,11 @@ utils-merge@1.0.1: resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= +uuid@8.3.0: + version "8.3.0" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.0.tgz#ab738085ca22dc9a8c92725e459b1d507df5d6ea" + integrity sha512-fX6Z5o4m6XsXBdli9g7DtWgAx+osMsRRZFKma1mIUsLCz6vRvv+pz5VNbyu9UEDzpMWulZfvpgb/cmDXVulYFQ== + uuid@^3.0.1, uuid@^3.1.0, uuid@^3.3.2: version "3.3.3" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.3.tgz#4568f0216e78760ee1dbf3a4d2cf53e224112866"