From f3e8bf70456b13c905553cdc280c1961a0e31b99 Mon Sep 17 00:00:00 2001 From: Kristaps Fabians Geikins Date: Thu, 25 Jan 2024 11:02:55 +0200 Subject: [PATCH] chore(fe2): more redis logging --- packages/frontend-2/composables/logging.ts | 2 ++ .../frontend-2/plugins/004-redis.server.ts | 22 ++++++++++++++++--- 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/packages/frontend-2/composables/logging.ts b/packages/frontend-2/composables/logging.ts index 213c9f34f..5555d457a 100644 --- a/packages/frontend-2/composables/logging.ts +++ b/packages/frontend-2/composables/logging.ts @@ -2,6 +2,8 @@ import type { NuxtApp } from '#app' import type { Optional } from '@speckle/shared' import { buildFakePinoLogger } from '~~/lib/core/helpers/observability' +export type AppLogger = ReturnType + export const useLogger = () => { return useNuxtApp().$logger } diff --git a/packages/frontend-2/plugins/004-redis.server.ts b/packages/frontend-2/plugins/004-redis.server.ts index a961ec36d..71be917b6 100644 --- a/packages/frontend-2/plugins/004-redis.server.ts +++ b/packages/frontend-2/plugins/004-redis.server.ts @@ -8,10 +8,26 @@ let redis: InstanceType | undefined = undefined /** * Provide redis (only in SSR) */ -export default defineNuxtPlugin(() => { +export default defineNuxtPlugin(async () => { const { redisUrl } = useRuntimeConfig() - if (!redis) { - redis = redisUrl?.length ? new Redis(redisUrl) : undefined + const logger = useLogger() + + const hasValidStatus = + redis && ['ready', 'connecting', 'reconnecting'].includes(redis.status) + if (!redis || !hasValidStatus) { + if (redis) { + await redis.quit() + } + + redis = new Redis(redisUrl) + + redis.on('error', (err) => { + logger.error(err, 'Redis error') + }) + + redis.on('end', () => { + logger.info('Redis disconnected from server') + }) } return {