From fb6623fe1f93172ee9f8737c204dd1a796597883 Mon Sep 17 00:00:00 2001 From: Pavel Tiunov Date: Fri, 10 Apr 2020 19:53:04 -0700 Subject: [PATCH] feat: Provide status messages for ``/cubejs-api/v1/run-scheduled-refresh` API --- packages/cubejs-api-gateway/index.js | 6 ++++-- packages/cubejs-server-core/core/RefreshScheduler.js | 12 ++++++++++-- packages/cubejs-server-core/core/index.js | 2 +- 3 files changed, 15 insertions(+), 5 deletions(-) diff --git a/packages/cubejs-api-gateway/index.js b/packages/cubejs-api-gateway/index.js index 4283284fad41e..044f76a596af2 100644 --- a/packages/cubejs-api-gateway/index.js +++ b/packages/cubejs-api-gateway/index.js @@ -325,8 +325,10 @@ class ApiGateway { const requestStarted = new Date(); try { const refreshScheduler = this.refreshScheduler(); - await refreshScheduler.runScheduledRefresh(context, this.parseQueryParam(queryingOptions || {})); - res({}); // TODO status + res(await refreshScheduler.runScheduledRefresh(context, { + ...this.parseQueryParam(queryingOptions || {}), + throwErrors: true + })); } catch (e) { this.handleError({ e, context, res, requestStarted diff --git a/packages/cubejs-server-core/core/RefreshScheduler.js b/packages/cubejs-server-core/core/RefreshScheduler.js index 1e27aaac84616..569e2089cb573 100644 --- a/packages/cubejs-server-core/core/RefreshScheduler.js +++ b/packages/cubejs-server-core/core/RefreshScheduler.js @@ -79,6 +79,7 @@ class RefreshScheduler { async runScheduledRefresh(context, queryingOptions) { queryingOptions = { timezone: 'UTC', ...queryingOptions }; + const { throwErrors, ...restOptions } = queryingOptions; context = { requestId: `scheduler-${uuid()}`, ...context }; this.serverCore.logger('Refresh Scheduler Run', { authInfo: context.authInfo, @@ -87,9 +88,12 @@ class RefreshScheduler { try { const compilerApi = this.serverCore.getCompilerApi(context); await Promise.all([ - this.refreshCubesRefreshKey(context, compilerApi, queryingOptions), - this.refreshPreAggregations(context, compilerApi, queryingOptions) + this.refreshCubesRefreshKey(context, compilerApi, restOptions), + this.refreshPreAggregations(context, compilerApi, restOptions) ]); + return { + finished: true + }; } catch (e) { if (e.error !== 'Continue wait') { this.serverCore.logger('Refresh Scheduler Error', { @@ -98,7 +102,11 @@ class RefreshScheduler { requestId: context.requestId }); } + if (throwErrors) { + throw e; + } } + return { finished: false }; } async refreshCubesRefreshKey(context, compilerApi, queryingOptions) { diff --git a/packages/cubejs-server-core/core/index.js b/packages/cubejs-server-core/core/index.js index 2d83b37000d86..75b80b3b5023f 100644 --- a/packages/cubejs-server-core/core/index.js +++ b/packages/cubejs-server-core/core/index.js @@ -462,7 +462,7 @@ class CubejsServerCore { async runScheduledRefresh(context, queryingOptions) { const scheduler = new RefreshScheduler(this); - await scheduler.runScheduledRefresh(context, queryingOptions); + return scheduler.runScheduledRefresh(context, queryingOptions); } async getDriver() {