From 368da73ac4b011f38d61cf016df6217aaa681fbd Mon Sep 17 00:00:00 2001 From: Josh Hunt Date: Tue, 17 Aug 2021 11:50:37 +0100 Subject: [PATCH] AzureMonitor: Fix crash from infinite render loop (#37924) --- .../components/MetricsQueryEditor/dataHooks.ts | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/public/app/plugins/datasource/grafana-azure-monitor-datasource/components/MetricsQueryEditor/dataHooks.ts b/public/app/plugins/datasource/grafana-azure-monitor-datasource/components/MetricsQueryEditor/dataHooks.ts index 7a64ef556ad..7587ee5c4b2 100644 --- a/public/app/plugins/datasource/grafana-azure-monitor-datasource/components/MetricsQueryEditor/dataHooks.ts +++ b/public/app/plugins/datasource/grafana-azure-monitor-datasource/components/MetricsQueryEditor/dataHooks.ts @@ -69,10 +69,15 @@ export const useSubscriptions: DataHook = (query, datasource, onChange, setError ); useEffect(() => { - if (!subscription && defaultSubscription && hasOption(subscriptionOptions, defaultSubscription)) { - onChange(setSubscriptionID(query, defaultSubscription)); - } else if ((!subscription && subscriptionOptions.length) || subscriptionOptions.length === 1) { - onChange(setSubscriptionID(query, subscriptionOptions[0].value)); + // Return early if subscriptions havent loaded, or if the query already has a subscription + if (!subscriptionOptions.length || (subscription && hasOption(subscriptionOptions, subscription))) { + return; + } + + const defaultSub = defaultSubscription || subscriptionOptions[0].value; + + if (!subscription && defaultSub && hasOption(subscriptionOptions, defaultSub)) { + onChange(setSubscriptionID(query, defaultSub)); } }, [subscriptionOptions, query, subscription, defaultSubscription, onChange]);