diff --git a/Common/Server/Utils/Monitor/Criteria/IncomingRequestCriteria.ts b/Common/Server/Utils/Monitor/Criteria/IncomingRequestCriteria.ts index d010018019..0dbcbbc8c3 100644 --- a/Common/Server/Utils/Monitor/Criteria/IncomingRequestCriteria.ts +++ b/Common/Server/Utils/Monitor/Criteria/IncomingRequestCriteria.ts @@ -91,7 +91,8 @@ export default class IncomingRequestCriteria { const differenceInMinutes: number = OneUptimeDate.getDifferenceInMinutes( lastCheckTime, - OneUptimeDate.getCurrentDate(), + (input.dataToProcess as IncomingMonitorRequest)?.checkedAt || + OneUptimeDate.getCurrentDate(), ); logger.debug("Difference in minutes: " + differenceInMinutes); diff --git a/Common/Types/Monitor/IncomingMonitor/IncomingMonitorRequest.ts b/Common/Types/Monitor/IncomingMonitor/IncomingMonitorRequest.ts index cace5261cc..2d85812abf 100644 --- a/Common/Types/Monitor/IncomingMonitor/IncomingMonitorRequest.ts +++ b/Common/Types/Monitor/IncomingMonitor/IncomingMonitorRequest.ts @@ -11,4 +11,5 @@ export default interface IncomingMonitorRequest { requestMethod?: HTTPMethod | undefined; incomingRequestReceivedAt: Date; onlyCheckForIncomingRequestReceivedAt?: boolean | undefined; + checkedAt: Date; } diff --git a/IncomingRequestIngest/API/IncomingRequest.ts b/IncomingRequestIngest/API/IncomingRequest.ts index 97bb6a44ca..5d8f5cf29e 100644 --- a/IncomingRequestIngest/API/IncomingRequest.ts +++ b/IncomingRequestIngest/API/IncomingRequest.ts @@ -17,6 +17,7 @@ import Express, { import MonitorResourceUtil from "Common/Server/Utils/Monitor/MonitorResource"; import Response from "Common/Server/Utils/Response"; import Monitor from "Common/Models/DatabaseModels/Monitor"; +import logger from "Common/Server/Utils/Logger"; const router: ExpressRouter = Express.getRouter(); @@ -72,18 +73,26 @@ const processIncomingRequest: RequestHandler = async ( throw new BadDataException("Project not found"); } + const now: Date = OneUptimeDate.getCurrentDate(); + const incomingRequest: IncomingMonitorRequest = { projectId: monitor.projectId, monitorId: new ObjectID(monitor._id.toString()), requestHeaders: requestHeaders, requestBody: requestBody, - incomingRequestReceivedAt: OneUptimeDate.getCurrentDate(), + incomingRequestReceivedAt: now, onlyCheckForIncomingRequestReceivedAt: false, requestMethod: httpMethod, + checkedAt: now, }; // process probe response here. - await MonitorResourceUtil.monitorResource(incomingRequest); + MonitorResourceUtil.monitorResource(incomingRequest).catch((err: Error) => { + // do nothing. + // we don't want to throw error here. + // we just want to log the error. + logger.error(err); + }); return Response.sendEmptySuccessResponse(req, res); } catch (err) { diff --git a/Worker/Jobs/IncomingRequestMonitor/CheckHeartbeat.ts b/Worker/Jobs/IncomingRequestMonitor/CheckHeartbeat.ts index 9818608892..3cf0783198 100644 --- a/Worker/Jobs/IncomingRequestMonitor/CheckHeartbeat.ts +++ b/Worker/Jobs/IncomingRequestMonitor/CheckHeartbeat.ts @@ -153,6 +153,7 @@ const checkHeartBeat: (monitor: Monitor) => Promise = async ( onlyCheckForIncomingRequestReceivedAt: true, monitorId: monitor.id!, projectId: monitor.projectId!, + checkedAt: OneUptimeDate.getCurrentDate(), }; logger.debug(