From 828e463e3850100c1d90c525c95c6f27dc5431c8 Mon Sep 17 00:00:00 2001 From: Mateusz Kwasniewski Date: Mon, 23 Oct 2023 11:34:03 +0200 Subject: [PATCH] refactor: move version service scheduling to scheduler (#5120) --- .../tests/client-feature-toggle.e2e.test.ts | 1 - src/lib/routes/admin-api/config.test.ts | 1 - src/lib/routes/admin-api/context.test.ts | 1 - src/lib/routes/admin-api/metrics.test.ts | 1 - src/lib/routes/admin-api/public-signup.test.ts | 1 - src/lib/routes/admin-api/strategy.test.ts | 1 - src/lib/routes/admin-api/tag.test.ts | 1 - src/lib/routes/backstage.test.ts | 1 - src/lib/routes/client-api/metrics.test.ts | 2 -- src/lib/routes/client-api/register.test.ts | 1 - src/lib/routes/health-check.test.ts | 1 - src/lib/routes/public-invite.test.ts | 1 - src/lib/services/index.ts | 7 +++++++ src/lib/services/version-service.ts | 11 ----------- 14 files changed, 7 insertions(+), 24 deletions(-) diff --git a/src/lib/features/client-feature-toggles/tests/client-feature-toggle.e2e.test.ts b/src/lib/features/client-feature-toggles/tests/client-feature-toggle.e2e.test.ts index 6e98a1a476ec..5b817dc51b28 100644 --- a/src/lib/features/client-feature-toggles/tests/client-feature-toggle.e2e.test.ts +++ b/src/lib/features/client-feature-toggles/tests/client-feature-toggle.e2e.test.ts @@ -25,7 +25,6 @@ async function getSetup() { clientFeatureToggleStore: stores.clientFeatureToggleStore, request: supertest(app), destroy: () => { - services.versionService.destroy(); services.clientInstanceService.destroy(); }, }; diff --git a/src/lib/routes/admin-api/config.test.ts b/src/lib/routes/admin-api/config.test.ts index b4aae85e1ad4..99a14438ccbc 100644 --- a/src/lib/routes/admin-api/config.test.ts +++ b/src/lib/routes/admin-api/config.test.ts @@ -29,7 +29,6 @@ async function getSetup() { base, request: supertest(app), destroy: () => { - services.versionService.destroy(); services.clientInstanceService.destroy(); }, }; diff --git a/src/lib/routes/admin-api/context.test.ts b/src/lib/routes/admin-api/context.test.ts index 95896b5864e7..c3b40594a083 100644 --- a/src/lib/routes/admin-api/context.test.ts +++ b/src/lib/routes/admin-api/context.test.ts @@ -21,7 +21,6 @@ async function getSetup() { base, request: supertest(app), destroy: () => { - services.versionService.destroy(); services.clientInstanceService.destroy(); }, }; diff --git a/src/lib/routes/admin-api/metrics.test.ts b/src/lib/routes/admin-api/metrics.test.ts index 640e1ff989a7..ef56d0876dfe 100644 --- a/src/lib/routes/admin-api/metrics.test.ts +++ b/src/lib/routes/admin-api/metrics.test.ts @@ -20,7 +20,6 @@ async function getSetup() { perms, config, destroy: () => { - services.versionService.destroy(); services.clientInstanceService.destroy(); }, }; diff --git a/src/lib/routes/admin-api/public-signup.test.ts b/src/lib/routes/admin-api/public-signup.test.ts index 011cbb618937..342181bbbc05 100644 --- a/src/lib/routes/admin-api/public-signup.test.ts +++ b/src/lib/routes/admin-api/public-signup.test.ts @@ -34,7 +34,6 @@ describe('Public Signup API', () => { stores, perms, destroy: () => { - services.versionService.destroy(); services.clientInstanceService.destroy(); services.publicSignupTokenService.destroy(); }, diff --git a/src/lib/routes/admin-api/strategy.test.ts b/src/lib/routes/admin-api/strategy.test.ts index 55a83eb94af4..f8538ec62a73 100644 --- a/src/lib/routes/admin-api/strategy.test.ts +++ b/src/lib/routes/admin-api/strategy.test.ts @@ -19,7 +19,6 @@ async function getSetup() { const app = await getApp(config, stores, services); destroy = () => { - services.versionService.destroy(); services.clientInstanceService.destroy(); }; diff --git a/src/lib/routes/admin-api/tag.test.ts b/src/lib/routes/admin-api/tag.test.ts index 26944d7500ea..ad183a62ebc1 100644 --- a/src/lib/routes/admin-api/tag.test.ts +++ b/src/lib/routes/admin-api/tag.test.ts @@ -22,7 +22,6 @@ async function getSetup() { tagStore: stores.tagStore, request: supertest(app), destroy: () => { - services.versionService.destroy(); services.clientInstanceService.destroy(); }, }; diff --git a/src/lib/routes/backstage.test.ts b/src/lib/routes/backstage.test.ts index 93583eeec6c1..23572d566560 100644 --- a/src/lib/routes/backstage.test.ts +++ b/src/lib/routes/backstage.test.ts @@ -19,6 +19,5 @@ test('should enable prometheus', async () => { .get('/internal-backstage/prometheus') .expect('Content-Type', /text/) .expect(200); - services.versionService.destroy(); services.clientInstanceService.destroy(); }); diff --git a/src/lib/routes/client-api/metrics.test.ts b/src/lib/routes/client-api/metrics.test.ts index c02b7b215758..1fd8cea49101 100644 --- a/src/lib/routes/client-api/metrics.test.ts +++ b/src/lib/routes/client-api/metrics.test.ts @@ -1,5 +1,4 @@ import supertest from 'supertest'; -import createStores from '../../../test/fixtures/store'; import getApp from '../../app'; import { createTestConfig } from '../../../test/config/test-config'; import { clientMetricsSchema } from '../../services/client-metrics/schema'; @@ -21,7 +20,6 @@ async function getSetup(opts?: IUnleashOptions) { stores: db.stores, services, destroy: async () => { - services.versionService.destroy(); services.clientInstanceService.destroy(); await db.destroy(); }, diff --git a/src/lib/routes/client-api/register.test.ts b/src/lib/routes/client-api/register.test.ts index 9a55816cc7be..64704e7513bc 100644 --- a/src/lib/routes/client-api/register.test.ts +++ b/src/lib/routes/client-api/register.test.ts @@ -15,7 +15,6 @@ async function getSetup() { request: supertest(app), stores, destroy: () => { - services.versionService.destroy(); services.clientInstanceService.destroy(); }, }; diff --git a/src/lib/routes/health-check.test.ts b/src/lib/routes/health-check.test.ts index c08bfeaab4d2..1149f8e8f6f3 100644 --- a/src/lib/routes/health-check.test.ts +++ b/src/lib/routes/health-check.test.ts @@ -16,7 +16,6 @@ async function getSetup() { request: supertest(app), stores, destroy: () => { - services.versionService.destroy(); services.clientInstanceService.destroy(); }, }; diff --git a/src/lib/routes/public-invite.test.ts b/src/lib/routes/public-invite.test.ts index cff14e7c6fca..b55dc6ddd3fe 100644 --- a/src/lib/routes/public-invite.test.ts +++ b/src/lib/routes/public-invite.test.ts @@ -40,7 +40,6 @@ describe('Public Signup API', () => { stores, perms, destroy: () => { - services.versionService.destroy(); services.clientInstanceService.destroy(); services.publicSignupTokenService.destroy(); }, diff --git a/src/lib/services/index.ts b/src/lib/services/index.ts index cb2e1f556e05..b508e67bedc3 100644 --- a/src/lib/services/index.ts +++ b/src/lib/services/index.ts @@ -116,6 +116,7 @@ export const scheduleServices = async ( maintenanceService, eventAnnouncerService, featureToggleService, + versionService, lastSeenService, } = services; @@ -198,6 +199,12 @@ export const scheduleServices = async ( minutesToMilliseconds(1), 'updatePotentiallyStaleFeatures', ); + + schedulerService.schedule( + versionService.checkLatestVersion.bind(versionService), + hoursToMilliseconds(48), + 'checkLatestVersion', + ); }; export const createServices = ( diff --git a/src/lib/services/version-service.ts b/src/lib/services/version-service.ts index fc6e336608ce..dbb9681a2541 100644 --- a/src/lib/services/version-service.ts +++ b/src/lib/services/version-service.ts @@ -16,7 +16,6 @@ import { IUnleashConfig } from '../types/option'; import version from '../util/version'; import { Logger } from '../logger'; import { ISettingStore } from '../types/stores/settings-store'; -import { hoursToMilliseconds } from 'date-fns'; import { IStrategyStore } from 'lib/types'; import { FEATURES_EXPORTED, FEATURES_IMPORTED } from '../types'; import { CUSTOM_ROOT_ROLE_TYPE } from '../util'; @@ -191,11 +190,6 @@ export default class VersionService { async setup(): Promise { await this.setInstanceId(); await this.checkLatestVersion(); - this.timer = setInterval( - async () => this.checkLatestVersion(), - hoursToMilliseconds(48), - ); - this.timer.unref(); } async setInstanceId(): Promise { @@ -365,11 +359,6 @@ export default class VersionService { instanceId: this.instanceId, }; } - - destroy(): void { - clearInterval(this.timer); - this.timer = null; - } } module.exports = VersionService;