diff --git a/public/app/plugins/datasource/opentsdb/components/OpenTsdbQueryEditor.tsx b/public/app/plugins/datasource/opentsdb/components/OpenTsdbQueryEditor.tsx index 53afa9b4dfe..ec2518be510 100644 --- a/public/app/plugins/datasource/opentsdb/components/OpenTsdbQueryEditor.tsx +++ b/public/app/plugins/datasource/opentsdb/components/OpenTsdbQueryEditor.tsx @@ -1,5 +1,5 @@ import { css } from '@emotion/css'; -import React, { useState } from 'react'; +import React, { useEffect, useState } from 'react'; import { GrafanaTheme2, QueryEditorProps, textUtil } from '@grafana/data'; import { useStyles2 } from '@grafana/ui'; @@ -62,17 +62,21 @@ export function OpenTsdbQueryEditor({ query.downsampleFillPolicy = 'none'; } - datasource.getAggregators().then((aggs: string[]) => { - if (aggs.length !== 0) { - setAggregators(aggs); - } - }); + useEffect(() => { + datasource.getAggregators().then((aggs: string[]) => { + if (aggs.length !== 0) { + setAggregators(aggs); + } + }); + }, [datasource]); - datasource.getFilterTypes().then((filterTypes: string[]) => { - if (filterTypes.length !== 0) { - setFilterTypes(filterTypes); - } - }); + useEffect(() => { + datasource.getFilterTypes().then((newFilterTypes: string[]) => { + if (newFilterTypes.length !== 0) { + setFilterTypes(newFilterTypes); + } + }); + }, [datasource]); async function suggestMetrics(value: string): Promise> { return datasource.metricFindQuery(`metrics(${value})`).then(getTextValues);