diff options
author | Anton Tananaev <anton@traccar.org> | 2024-01-25 08:11:32 -0800 |
---|---|---|
committer | Anton Tananaev <anton@traccar.org> | 2024-01-25 08:11:32 -0800 |
commit | 29b8caa047b3b1468eb8b21e76f5df8b5c2f6ddb (patch) | |
tree | 62f4d08576b303ea50138ffa265c68c5ff2897e1 /src/main/java/org/traccar/schedule/TaskHealthCheck.java | |
parent | 4d9d78496a0260c6cb43211065a8aafe8cc7e7a9 (diff) | |
download | trackermap-server-29b8caa047b3b1468eb8b21e76f5df8b5c2f6ddb.tar.gz trackermap-server-29b8caa047b3b1468eb8b21e76f5df8b5c2f6ddb.tar.bz2 trackermap-server-29b8caa047b3b1468eb8b21e76f5df8b5c2f6ddb.zip |
Initialization grace period (fix #5258)
Diffstat (limited to 'src/main/java/org/traccar/schedule/TaskHealthCheck.java')
-rw-r--r-- | src/main/java/org/traccar/schedule/TaskHealthCheck.java | 24 |
1 files changed, 17 insertions, 7 deletions
diff --git a/src/main/java/org/traccar/schedule/TaskHealthCheck.java b/src/main/java/org/traccar/schedule/TaskHealthCheck.java index abdc5af48..a60935f18 100644 --- a/src/main/java/org/traccar/schedule/TaskHealthCheck.java +++ b/src/main/java/org/traccar/schedule/TaskHealthCheck.java @@ -1,5 +1,5 @@ /* - * Copyright 2020 - 2022 Anton Tananaev (anton@traccar.org) + * Copyright 2020 - 2024 Anton Tananaev (anton@traccar.org) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -34,6 +34,8 @@ public class TaskHealthCheck implements ScheduleTask { private final Config config; private final Client client; + private final long gracePeriod = System.currentTimeMillis() + TimeUnit.HOURS.toMillis(1); + private SystemD systemD; private boolean enabled; @@ -77,14 +79,22 @@ public class TaskHealthCheck implements ScheduleTask { @Override public void run() { LOGGER.debug("Health check running"); - int status = client.target(getUrl()).request().get().getStatus(); - if (status == 200) { - int result = systemD.sd_notify(0, "WATCHDOG=1"); - if (result < 0) { - LOGGER.warn("Health check notify error {}", result); + if (System.currentTimeMillis() > gracePeriod) { + int status = client.target(getUrl()).request().get().getStatus(); + if (status == 200) { + notifyWatchdog(); + } else { + LOGGER.warn("Health check failed with status {}", status); } } else { - LOGGER.warn("Health check failed with status {}", status); + notifyWatchdog(); + } + } + + private void notifyWatchdog() { + int result = systemD.sd_notify(0, "WATCHDOG=1"); + if (result < 0) { + LOGGER.warn("Health check notify error {}", result); } } |