From e23bf6285912daad8e67b170d7d6188ede657f19 Mon Sep 17 00:00:00 2001 From: Rafael Date: Sun, 17 Sep 2023 17:19:06 -0300 Subject: [PATCH] Fix Memory Leak on Data Gathering when server TZ is behind UTC (#2332) * Fix for timezones behind UTC (the previous code converted the date to one day before (in local time) then added a day, which resulted in the same day after converting back to UTC and thus generating an infinite loop) * Update changelog --------- Co-authored-by: Rafael Claudio Co-authored-by: Thomas <4159106+dtslvr@users.noreply.github.com> --- CHANGELOG.md | 6 ++++++ .../data-gathering/data-gathering.processor.ts | 11 ++--------- 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 359e339cb..5ab47a335 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,12 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## Unreleased + +### Fixed + +- Fixed a memory leak related to the server's timezone (behind UTC) in the data gathering + ## 2.3.0 - 2023-09-17 ### Added diff --git a/apps/api/src/services/data-gathering/data-gathering.processor.ts b/apps/api/src/services/data-gathering/data-gathering.processor.ts index c517e0f15..a3ab0e513 100644 --- a/apps/api/src/services/data-gathering/data-gathering.processor.ts +++ b/apps/api/src/services/data-gathering/data-gathering.processor.ts @@ -13,6 +13,7 @@ import { Injectable, Logger } from '@nestjs/common'; import { Prisma } from '@prisma/client'; import { Job } from 'bull'; import { + addDays, format, getDate, getMonth, @@ -101,15 +102,7 @@ export class DataGatheringProcessor { }); } - // Count month one up for iteration - currentDate = new Date( - Date.UTC( - getYear(currentDate), - getMonth(currentDate), - getDate(currentDate) + 1, - 0 - ) - ); + currentDate = addDays(currentDate, 1); } await this.marketDataService.updateMany({ data });