feature/IO-2742-redis - Checkpoint, All optimizations to prevent multiple requests to redis have been applied. Things like using lists for the Log Events, to getting and setting multiple values at the same time when given the chance.
Signed-off-by: Dave Richer <dave@imexsystems.ca>
This commit is contained in:
@@ -3,7 +3,8 @@ require("dotenv").config({
|
||||
path: path.resolve(process.cwd(), `.env.${process.env.NODE_ENV || "development"}`)
|
||||
});
|
||||
|
||||
const { io, setSessionData, clearSessionData, getSessionData } = require("../../server");
|
||||
const { io, setSessionData, clearSessionData, getMultipleSessionData, addItemToEndOfList } = require("../../server");
|
||||
|
||||
const { admin } = require("../firebase/firebase-handler");
|
||||
const logger = require("../utils/logger");
|
||||
const { default: CdkJobExport, CdkSelectedCustomer } = require("../cdk/cdk-job-export");
|
||||
@@ -117,7 +118,10 @@ function registerPbsApEvents(socket) {
|
||||
|
||||
socket.on("pbs-export-ap", async ({ billids, txEnvelope }) => {
|
||||
await setSessionData(socket.id, "pbs_txEnvelope", txEnvelope);
|
||||
PbsExportAp(socket, { billids, txEnvelope }).catch((err) => console.error(`Error in pbs-export-ap: ${err}`));
|
||||
PbsExportAp(socket, {
|
||||
billids,
|
||||
txEnvelope
|
||||
}).catch((err) => console.error(`Error in pbs-export-ap: ${err}`));
|
||||
});
|
||||
}
|
||||
|
||||
@@ -149,76 +153,67 @@ function registerDmsClearSessionEvent(socket) {
|
||||
|
||||
// Logging helper functions
|
||||
async function createLogEvent(socket, level, message) {
|
||||
const logLevel = await getSessionData(socket.id, "log_level");
|
||||
const recordid = await getSessionData(socket.id, "recordid");
|
||||
const logEvents = await getSessionData(socket.id, "logEvents");
|
||||
const { logLevel, recordid } = await getMultipleSessionData(socket.id, ["log_level", "recordid"]);
|
||||
|
||||
if (LogLevelHierarchy(logLevel) >= LogLevelHierarchy(level)) {
|
||||
console.log(`[WS LOG EVENT] ${level} - ${new Date()} - ${socket.user.email} - ${socket.id} - ${message}`);
|
||||
socket.emit("log-event", { timestamp: new Date(), level, message });
|
||||
const logMessage = { timestamp: new Date(), level, message };
|
||||
|
||||
// Log the message to the console and emit it via the socket
|
||||
console.log(`[WS LOG EVENT] ${level} - ${logMessage.timestamp} - ${socket.user.email} - ${socket.id} - ${message}`);
|
||||
socket.emit("log-event", logMessage);
|
||||
|
||||
// Log the event via the logger
|
||||
logger.log("ws-log-event", level, socket.user.email, recordid, { wsmessage: message });
|
||||
|
||||
if (logEvents && Array.isArray(logEvents)) {
|
||||
logEvents.push({ timestamp: new Date(), level, message });
|
||||
setSessionData(socket.id, "logEvents", logEvents).catch((err) =>
|
||||
console.error(`Error setting logEvents in Redis: ${err}`)
|
||||
);
|
||||
}
|
||||
// Add the log message to the Redis list using the helper function
|
||||
await addItemToEndOfList(socket.id, "logEvents", logMessage);
|
||||
}
|
||||
}
|
||||
|
||||
async function createJsonEvent(socket, level, message, json) {
|
||||
const logEvents = await getSessionData(socket.id, "logEvents");
|
||||
const logLevel = await getSessionData(socket.id, "log_level");
|
||||
const recordid = await getSessionData(socket.id, "recordid");
|
||||
const { logLevel, recordid } = await getMultipleSessionData(socket.id, ["log_level", "recordid"]);
|
||||
|
||||
if (LogLevelHierarchy(logLevel) >= LogLevelHierarchy(level)) {
|
||||
socket.emit("log-event", { timestamp: new Date(), level, message });
|
||||
}
|
||||
const logMessage = { timestamp: new Date(), level, message };
|
||||
|
||||
logger.log("ws-log-event-json", level, socket.user.email, recordid, {
|
||||
wsmessage: message,
|
||||
json
|
||||
});
|
||||
// Emit the log message via the socket
|
||||
socket.emit("log-event", logMessage);
|
||||
|
||||
if (logEvents && Array.isArray(logEvents)) {
|
||||
logEvents.push({ timestamp: new Date(), level, message });
|
||||
setSessionData(socket.id, "logEvents", logEvents).catch((err) =>
|
||||
console.error(`Error setting logEvents in Redis: ${err}`)
|
||||
);
|
||||
// Log the JSON event via the logger
|
||||
logger.log("ws-log-event-json", level, socket.user.email, recordid, {
|
||||
wsmessage: message,
|
||||
json
|
||||
});
|
||||
|
||||
// Use the helper function to append the log event to the Redis list
|
||||
await addItemToEndOfList(socket.id, "logEvents", logMessage);
|
||||
}
|
||||
}
|
||||
|
||||
async function createXmlEvent(socket, xml, message, isError = false) {
|
||||
const logLevel = await getSessionData(socket.id, "log_level");
|
||||
const recordid = await getSessionData(socket.id, "recordid");
|
||||
const logEvents = await getSessionData(socket.id, "logEvents");
|
||||
const { logLevel, recordid } = await getMultipleSessionData(socket.id, ["log_level", "recordid"]);
|
||||
|
||||
if (LogLevelHierarchy(logLevel) >= LogLevelHierarchy("TRACE")) {
|
||||
socket.emit("log-event", {
|
||||
const logMessage = {
|
||||
timestamp: new Date(),
|
||||
level: isError ? "ERROR" : "TRACE",
|
||||
message: `${message}: ${xml}`
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
logger.log(
|
||||
isError ? "ws-log-event-xml-error" : "ws-log-event-xml",
|
||||
isError ? "ERROR" : "TRACE",
|
||||
socket.user.email,
|
||||
recordid,
|
||||
{ wsmessage: message, xml }
|
||||
);
|
||||
// Emit the log message via the socket
|
||||
socket.emit("log-event", logMessage);
|
||||
|
||||
if (logEvents && Array.isArray(logEvents)) {
|
||||
logEvents.push({
|
||||
timestamp: new Date(),
|
||||
level: isError ? "ERROR" : "TRACE",
|
||||
message,
|
||||
xml
|
||||
});
|
||||
// Log the XML event via the logger
|
||||
logger.log(
|
||||
isError ? "ws-log-event-xml-error" : "ws-log-event-xml",
|
||||
isError ? "ERROR" : "TRACE",
|
||||
socket.user.email,
|
||||
recordid,
|
||||
{ wsmessage: message, xml }
|
||||
);
|
||||
|
||||
await setSessionData(socket.id, "logEvents", logEvents);
|
||||
// Use the helper function to append the log event to the Redis list
|
||||
await addItemToEndOfList(socket.id, "logEvents", { ...logMessage, xml });
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user