From 73b0981788f6d78a097a20aad2bca257a5967420 Mon Sep 17 00:00:00 2001 From: 1900 Date: Tue, 6 Sep 2022 13:41:52 +0800 Subject: [PATCH 1/2] Update zh-CN.json --- lang/zh-CN.json | 1 + 1 file changed, 1 insertion(+) diff --git a/lang/zh-CN.json b/lang/zh-CN.json index b09718d4..f154e07c 100644 --- a/lang/zh-CN.json +++ b/lang/zh-CN.json @@ -62,6 +62,7 @@ "label.username": "用户名", "label.view-details": "查看更多", "label.websites": "网站", + "label.yesterday": "昨天", "message.active-users": "当前在线 {x} 人", "message.confirm-delete": "你确定要删除 {target} 吗?", "message.confirm-reset": "您确定要重置 {target} 的数据吗?", From 99914d6e98de4dea11e52fd389ef131fb14dba34 Mon Sep 17 00:00:00 2001 From: Brian Cao Date: Mon, 5 Sep 2022 22:47:45 -0700 Subject: [PATCH 2/2] Add retry connection to redis. Clean up up redis/session logic --- lib/kafka.js | 4 ++++ lib/redis.js | 7 ++++++- lib/session.js | 10 ++++------ queries/analytics/session/createSession.js | 2 +- queries/analytics/session/getSessionByUuid.js | 2 +- 5 files changed, 16 insertions(+), 9 deletions(-) diff --git a/lib/kafka.js b/lib/kafka.js index 6d007009..6b6f315f 100644 --- a/lib/kafka.js +++ b/lib/kafka.js @@ -33,6 +33,8 @@ function getClient() { global[KAFKA] = client; } + log('Kafka initialized'); + return client; } @@ -44,6 +46,8 @@ async function getProducer() { global[KAFKA_PRODUCER] = producer; } + log('Kafka producer initialized'); + return producer; } diff --git a/lib/redis.js b/lib/redis.js index 92c8bdb9..63b513e6 100644 --- a/lib/redis.js +++ b/lib/redis.js @@ -13,7 +13,12 @@ function getClient() { return null; } - const redis = new Redis(process.env.REDIS_URL); + const redis = new Redis(process.env.REDIS_URL, { + retryStrategy(times) { + log(`Redis reconnecting attempt: ${times}`); + return 5000; + }, + }); if (process.env.NODE_ENV !== 'production') { global[REDIS] = redis; diff --git a/lib/session.js b/lib/session.js index 1b79f316..6e78333b 100644 --- a/lib/session.js +++ b/lib/session.js @@ -32,7 +32,7 @@ export async function getSession(req) { // Check if website exists if (redis.client) { - websiteId = await redis.client.get(`website:${website_uuid}`); + websiteId = Number(await redis.client.get(`website:${website_uuid}`)); } // Check database if redis does not have @@ -49,23 +49,21 @@ export async function getSession(req) { const session_uuid = uuid(websiteId, hostname, ip, userAgent); - let sessionCreated = false; let sessionId = null; let session = null; // Check if session exists if (redis.client) { - sessionCreated = !!(await redis.client.get(`session:${session_uuid}`)); + sessionId = Number(await redis.client.get(`session:${session_uuid}`)); } // Check database if redis does not have - if (!sessionCreated) { + if (!sessionId) { session = await getSessionByUuid(session_uuid); - sessionCreated = !!session; sessionId = session ? session.session_id : null; } - if (!sessionCreated) { + if (!sessionId) { try { session = await createSession(websiteId, { session_uuid, diff --git a/queries/analytics/session/createSession.js b/queries/analytics/session/createSession.js index 8153b8f4..4e23dac1 100644 --- a/queries/analytics/session/createSession.js +++ b/queries/analytics/session/createSession.js @@ -23,7 +23,7 @@ async function relationalQuery(website_id, data) { }) .then(async res => { if (redis.client && res) { - await redis.client.set(`session:${res.session_uuid}`, 1); + await redis.client.set(`session:${res.session_uuid}`, res.session_id); } return res; diff --git a/queries/analytics/session/getSessionByUuid.js b/queries/analytics/session/getSessionByUuid.js index 6412ca8c..911848dc 100644 --- a/queries/analytics/session/getSessionByUuid.js +++ b/queries/analytics/session/getSessionByUuid.js @@ -19,7 +19,7 @@ async function relationalQuery(session_uuid) { }) .then(async res => { if (redis.client && res) { - await redis.client.set(`session:${res.session_uuid}`, 1); + await redis.client.set(`session:${res.session_uuid}`, res.session_id); } return res;