From 3e291d1019a5ce3faec8422980426abdc2106ced Mon Sep 17 00:00:00 2001 From: Hongbo Wu Date: Thu, 18 Jan 2024 21:13:32 +0800 Subject: [PATCH] fix tests --- packages/api/src/jobs/save_page.ts | 9 ++------- packages/api/src/util.ts | 6 ++++++ packages/content-fetch/src/redis.ts | 14 ++++++++++++++ 3 files changed, 22 insertions(+), 7 deletions(-) diff --git a/packages/api/src/jobs/save_page.ts b/packages/api/src/jobs/save_page.ts index 6f7ef83ca..06a53e065 100644 --- a/packages/api/src/jobs/save_page.ts +++ b/packages/api/src/jobs/save_page.ts @@ -6,14 +6,9 @@ import { env } from '../env' const signToken = promisify(jwt.sign) -const IMPORTER_METRICS_COLLECTOR_URL = - process.env.IMPORTER_METRICS_COLLECTOR_URL +const IMPORTER_METRICS_COLLECTOR_URL = env.queue.importerMetricsUrl const JWT_SECRET = env.server.jwtSecret -const REST_BACKEND_ENDPOINT = process.env.INTERNAL_API_URL - -if (!IMPORTER_METRICS_COLLECTOR_URL || !REST_BACKEND_ENDPOINT) { - throw new Error('Missing environment variables') -} +const REST_BACKEND_ENDPOINT = env.server.internalApiUrl const REQUEST_TIMEOUT = 30000 // 30 seconds diff --git a/packages/api/src/util.ts b/packages/api/src/util.ts index f7fc8f28e..8b0064372 100755 --- a/packages/api/src/util.ts +++ b/packages/api/src/util.ts @@ -22,6 +22,7 @@ export interface BackendEnv { apiEnv: string instanceId: string trustProxy: boolean + internalApiUrl: string } client: { url: string @@ -70,6 +71,7 @@ export interface BackendEnv { rssFeedTaskHandlerUrl: string integrationExporterUrl: string integrationImporterUrl: string + importerMetricsUrl: string } fileUpload: { gcsUploadBucket: string @@ -156,6 +158,8 @@ const nullableEnvVars = [ 'SUBSCRIPTION_FEED_MAX', 'REDIS_URL', 'REDIS_CERT', + 'IMPORTER_METRICS_COLLECTOR_URL', + 'INTERNAL_API_URL', ] // Allow some vars to be null/empty /* If not in GAE and Prod/QA/Demo env (f.e. on localhost/dev env), allow following env vars to be null */ @@ -204,6 +208,7 @@ export function getEnv(): BackendEnv { instanceId: parse('GAE_INSTANCE') || `x${os.userInfo().username}_${os.hostname()}`, trustProxy: parse('TRUST_PROXY') === 'true', + internalApiUrl: parse('INTERNAL_API_URL'), } const client = { url: parse('CLIENT_URL'), @@ -245,6 +250,7 @@ export function getEnv(): BackendEnv { rssFeedTaskHandlerUrl: parse('RSS_FEED_TASK_HANDLER_URL'), integrationExporterUrl: parse('INTEGRATION_EXPORTER_URL'), integrationImporterUrl: parse('INTEGRATION_IMPORTER_URL'), + importerMetricsUrl: parse('IMPORTER_METRICS_COLLECTOR_URL'), } const imageProxy = { url: parse('IMAGE_PROXY_URL'), diff --git a/packages/content-fetch/src/redis.ts b/packages/content-fetch/src/redis.ts index 433826498..2160a70a3 100644 --- a/packages/content-fetch/src/redis.ts +++ b/packages/content-fetch/src/redis.ts @@ -1,3 +1,4 @@ +/* eslint-disable @typescript-eslint/no-misused-promises */ import { Redis } from 'ioredis' const url = process.env.REDIS_URL @@ -22,3 +23,16 @@ redis.on('connect', () => { redis.on('error', (err) => { console.error('Redis error', err) }) + +redis.on('close', () => { + console.log('Redis connection closed') +}) + +export const gracefulShutdown = async (signal: string) => { + console.log(`Received ${signal}, closing server...`) + await redis.quit() + process.exit(0) +} + +process.on('SIGINT', () => gracefulShutdown('SIGINT')) +process.on('SIGTERM', () => gracefulShutdown('SIGTERM'))