Explore: Add throttling when doing live queries (#19085)

This commit is contained in:
Andrej Ocenas 2019-09-13 10:58:29 +02:00 committed by GitHub
parent 4c8f417f18
commit 81ec76bdef
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -1,5 +1,6 @@
// Libraries
import { map } from 'rxjs/operators';
import { map, throttleTime } from 'rxjs/operators';
import { identity } from 'rxjs';
// Services & Utils
import store from 'app/core/store';
import { getDatasourceSrv } from 'app/features/plugins/datasource_srv';
@ -481,9 +482,11 @@ export function runQueries(exploreId: ExploreId): ThunkResult<void> {
const newQuerySub = runRequest(datasourceInstance, transaction.request)
.pipe(
map((data: PanelData) => {
return preProcessPanelData(data, queryResponse);
})
map((data: PanelData) => preProcessPanelData(data, queryResponse)),
// Simple throttle for live tailing, in case of > 1000 rows per interval we spend about 200ms on processing and
// rendering. In case this is optimized this can be tweaked, but also it should be only as fast as user
// actually can see what is happening.
live ? throttleTime(500) : identity
)
.subscribe((data: PanelData) => {
if (!data.error && firstResponse) {