From: Patrick Seidensal Date: Fri, 16 Aug 2019 12:35:32 +0000 (+0200) Subject: mgr/dashboard: run feature toggle service outside of Angular zone X-Git-Tag: v15.1.0~1745^2~33 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=d0ad4df3df142ea4ae9d9d088576ae131529ecad;p=ceph.git 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 --- 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 9104e0b42013..2b9885aa8672 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$ {