From d0ad4df3df142ea4ae9d9d088576ae131529ecad Mon Sep 17 00:00:00 2001 From: Patrick Seidensal Date: Fri, 16 Aug 2019 14:35:32 +0200 Subject: [PATCH] mgr/dashboard: run feature toggle service outside of Angular zone to prevent Proctator from hanging indefinitely when testing pages where the feature toggles are retrieved. Fixes: mgr/dashboard: Switch to async/await for E2E tests Signed-off-by: Patrick Seidensal --- .../services/feature-toggles.service.ts | 22 ++++++++++++------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/src/pybind/mgr/dashboard/frontend/src/app/shared/services/feature-toggles.service.ts b/src/pybind/mgr/dashboard/frontend/src/app/shared/services/feature-toggles.service.ts index 9104e0b4201..2b9885aa867 100644 --- a/src/pybind/mgr/dashboard/frontend/src/app/shared/services/feature-toggles.service.ts +++ b/src/pybind/mgr/dashboard/frontend/src/app/shared/services/feature-toggles.service.ts @@ -1,8 +1,8 @@ import { HttpClient } from '@angular/common/http'; -import { Injectable } from '@angular/core'; +import { Injectable, NgZone } from '@angular/core'; -import { Observable, timer } from 'rxjs'; -import { flatMap, shareReplay } from 'rxjs/operators'; +import { Observable } from 'rxjs'; +import { shareReplay } from 'rxjs/operators'; export type FeatureTogglesMap = Map; export type FeatureTogglesMap$ = Observable; @@ -15,11 +15,17 @@ export class FeatureTogglesService { readonly REFRESH_INTERVAL: number = 20000; private featureToggleMap$: FeatureTogglesMap$; - constructor(private http: HttpClient) { - this.featureToggleMap$ = timer(0, this.REFRESH_INTERVAL).pipe( - flatMap(() => this.http.get(this.API_URL)), - shareReplay(1) - ); + constructor(private http: HttpClient, private zone: NgZone) { + this.featureToggleMap$ = this.http.get(this.API_URL).pipe(shareReplay(1)); + this.zone.runOutsideAngular(() => { + window.setInterval(() => { + this.zone.run(() => { + this.featureToggleMap$ = this.http + .get(this.API_URL) + .pipe(shareReplay(1)); + }); + }, this.REFRESH_INTERVAL); + }); } get(): FeatureTogglesMap$ { -- 2.39.5