From 1fa697bf5929aca65dee7fe97ca6bc91b1f2dd71 Mon Sep 17 00:00:00 2001 From: Tajen Freeman Date: Wed, 23 Jun 2021 13:52:45 -0600 Subject: [PATCH] Fixed file leaking. Heartbeat file is now closed by admin after being used --- .../piezo/admin/controllers/HealthCheck.scala | 20 ++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/admin/app/com/lucidchart/piezo/admin/controllers/HealthCheck.scala b/admin/app/com/lucidchart/piezo/admin/controllers/HealthCheck.scala index 1d36412..daf85c7 100644 --- a/admin/app/com/lucidchart/piezo/admin/controllers/HealthCheck.scala +++ b/admin/app/com/lucidchart/piezo/admin/controllers/HealthCheck.scala @@ -30,12 +30,18 @@ class HealthCheck(configuration: Configuration, cc: ControllerComponents) extend } def areWorkersHealthy(): (Boolean, String) = { - val heartbeatFile = Source.fromFile(heartbeatFilename).getLines().toList - val heartbeatTimestamp = heartbeatFile(0) - val formatter = ISODateTimeFormat.dateTimeNoMillis().withZoneUTC() - val heartbeatTime = formatter.parseDateTime(heartbeatTimestamp) - val currentTime = new DateTime - val isTimestampRecent = Minutes.minutesBetween(heartbeatTime, currentTime).getMinutes < minutesBetweenBeats - (isTimestampRecent, formatter.print(heartbeatTime)) + val heartbeatFile = Source.fromFile(heartbeatFilename) + try { + val heartbeatFileLines = heartbeatFile.getLines().toList + val heartbeatTimestamp = heartbeatFileLines(0) + val formatter = ISODateTimeFormat.dateTimeNoMillis().withZoneUTC() + val heartbeatTime = formatter.parseDateTime(heartbeatTimestamp) + val currentTime = new DateTime + val isTimestampRecent = Minutes.minutesBetween(heartbeatTime, currentTime).getMinutes < minutesBetweenBeats + (isTimestampRecent, formatter.print(heartbeatTime)) + } + finally { + heartbeatFile.close() + } } }