From f4f99a30b2bf6c6f0ea1fd2e4d2a053974e2e158 Mon Sep 17 00:00:00 2001 From: Hongbo Wu Date: Thu, 22 Sep 2022 11:17:02 +0800 Subject: [PATCH 1/5] Add redis tls and cert --- packages/text-to-speech/src/index.ts | 5 ++++- packages/text-to-speech/src/redis.ts | 12 ++++++++++-- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/packages/text-to-speech/src/index.ts b/packages/text-to-speech/src/index.ts index 24ea470a0..b7d5618d1 100644 --- a/packages/text-to-speech/src/index.ts +++ b/packages/text-to-speech/src/index.ts @@ -181,7 +181,10 @@ export const textToSpeechStreamingHandler = Sentry.GCPFunction.wrapHttpFunction( const ssml = `${startSsml(ssmlOptions)}${utteranceInput.text}${endSsml()}` // hash ssml to get the cache key const cacheKey = crypto.createHash('md5').update(ssml).digest('hex') - const redisClient = await createRedisClient() + const redisClient = await createRedisClient( + process.env.REDIS_URL, + process.env.REDIS_CERT + ) // find audio data in cache const cacheResult = await redisClient.get(cacheKey) if (cacheResult) { diff --git a/packages/text-to-speech/src/redis.ts b/packages/text-to-speech/src/redis.ts index b62ee8891..ba0180452 100644 --- a/packages/text-to-speech/src/redis.ts +++ b/packages/text-to-speech/src/redis.ts @@ -1,11 +1,19 @@ import { createClient } from 'redis' -export const createRedisClient = async () => { - const redisClient = createClient({ url: process.env.REDIS_URL }) +export const createRedisClient = async (url?: string, cert?: string) => { + const redisClient = createClient({ + url, + socket: { + tls: url?.startsWith('rediss://'), + cert: cert?.replace(/\\n/g, '\n'), + rejectUnauthorized: false, + }, + }) redisClient.on('error', (err) => console.error('Redis Client Error', err)) await redisClient.connect() + console.log('Redis Client Connected:', url) return redisClient } From 279dbf2049b8b2ebf41482b0bf5064302f64b417 Mon Sep 17 00:00:00 2001 From: Hongbo Wu Date: Thu, 22 Sep 2022 11:20:11 +0800 Subject: [PATCH 2/5] Extend ttl to 12 hours --- packages/text-to-speech/src/index.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/text-to-speech/src/index.ts b/packages/text-to-speech/src/index.ts index b7d5618d1..5af829e30 100644 --- a/packages/text-to-speech/src/index.ts +++ b/packages/text-to-speech/src/index.ts @@ -210,12 +210,12 @@ export const textToSpeechStreamingHandler = Sentry.GCPFunction.wrapHttpFunction( return res.status(500).send({ errorCode: 'SYNTHESIZER_ERROR' }) } const audioDataString = audioData.toString('hex') - // save audio data to cache for 1 hour + // save audio data to cache for 12 hours await redisClient.set( cacheKey, JSON.stringify({ audioDataString, speechMarks }), { - EX: 3600, // in seconds + EX: 3600 * 12, // in seconds NX: true, } ) From a7563a55e1dc130adf1e152fc9a1bbbc3d759a6d Mon Sep 17 00:00:00 2001 From: Hongbo Wu Date: Thu, 22 Sep 2022 11:24:54 +0800 Subject: [PATCH 3/5] Add comments --- packages/text-to-speech/src/redis.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/text-to-speech/src/redis.ts b/packages/text-to-speech/src/redis.ts index ba0180452..c12d93a3d 100644 --- a/packages/text-to-speech/src/redis.ts +++ b/packages/text-to-speech/src/redis.ts @@ -4,8 +4,8 @@ export const createRedisClient = async (url?: string, cert?: string) => { const redisClient = createClient({ url, socket: { - tls: url?.startsWith('rediss://'), - cert: cert?.replace(/\\n/g, '\n'), + tls: url?.startsWith('rediss://'), // rediss:// is the protocol for TLS + cert: cert?.replace(/\\n/g, '\n'), // replace \n with new line rejectUnauthorized: false, }, }) From b9e2fc465c932b7089708055ad407e19ab47111f Mon Sep 17 00:00:00 2001 From: Hongbo Wu Date: Thu, 22 Sep 2022 11:25:13 +0800 Subject: [PATCH 4/5] More comments --- packages/text-to-speech/src/redis.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/text-to-speech/src/redis.ts b/packages/text-to-speech/src/redis.ts index c12d93a3d..067c78627 100644 --- a/packages/text-to-speech/src/redis.ts +++ b/packages/text-to-speech/src/redis.ts @@ -6,7 +6,7 @@ export const createRedisClient = async (url?: string, cert?: string) => { socket: { tls: url?.startsWith('rediss://'), // rediss:// is the protocol for TLS cert: cert?.replace(/\\n/g, '\n'), // replace \n with new line - rejectUnauthorized: false, + rejectUnauthorized: false, // for self-signed certs }, }) From 2150ce2ce86f24d1e4937edab9db4ccd7e96ad9f Mon Sep 17 00:00:00 2001 From: Hongbo Wu Date: Thu, 22 Sep 2022 11:51:56 +0800 Subject: [PATCH 5/5] Set TTL to 24 hours --- packages/text-to-speech/src/index.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/text-to-speech/src/index.ts b/packages/text-to-speech/src/index.ts index 5af829e30..a25af17bf 100644 --- a/packages/text-to-speech/src/index.ts +++ b/packages/text-to-speech/src/index.ts @@ -210,12 +210,12 @@ export const textToSpeechStreamingHandler = Sentry.GCPFunction.wrapHttpFunction( return res.status(500).send({ errorCode: 'SYNTHESIZER_ERROR' }) } const audioDataString = audioData.toString('hex') - // save audio data to cache for 12 hours + // save audio data to cache for 24 hours for mainly the newsletters await redisClient.set( cacheKey, JSON.stringify({ audioDataString, speechMarks }), { - EX: 3600 * 12, // in seconds + EX: 3600 * 24, // in seconds NX: true, } )