From 43c35286f38085339f28b76bcb06977c2e99532f Mon Sep 17 00:00:00 2001 From: Matt Date: Sun, 9 Jan 2022 16:02:32 -0800 Subject: [PATCH] Reword restart modal (#374) Clarifies that photon will restart (when running as service) --- .../src/views/SettingsViews/General.vue | 4 ++-- .../common/util/file/FileUtils.java | 3 ++- .../photonvision/server/RequestHandler.java | 18 ++++++++++++------ 3 files changed, 16 insertions(+), 9 deletions(-) diff --git a/photon-client/src/views/SettingsViews/General.vue b/photon-client/src/views/SettingsViews/General.vue index 2214a8e9e..67cd585bc 100644 --- a/photon-client/src/views/SettingsViews/General.vue +++ b/photon-client/src/views/SettingsViews/General.vue @@ -250,7 +250,7 @@ export default { {headers: {"Content-Type": "multipart/form-data"}}).then(() => { this.snackbar = { color: "success", - text: "Settings imported successfully! Program will now exit...", + text: "Settings imported successfully! PhotonVision will restart in the background...", }; this.snack = true; }).catch(err => { @@ -296,7 +296,7 @@ export default { }).then(() => { this.snackbar = { color: "success", - text: "New .jar copied successfully! Program will now exit...", + text: "New .jar copied successfully! PhotonVision will restart in the background...", }; this.snack = true; }).catch(err => { diff --git a/photon-core/src/main/java/org/photonvision/common/util/file/FileUtils.java b/photon-core/src/main/java/org/photonvision/common/util/file/FileUtils.java index 538a7e7e1..809b1a517 100644 --- a/photon-core/src/main/java/org/photonvision/common/util/file/FileUtils.java +++ b/photon-core/src/main/java/org/photonvision/common/util/file/FileUtils.java @@ -20,6 +20,7 @@ import java.io.File; import java.io.FileNotFoundException; import java.io.IOException; import java.nio.file.Files; +import java.nio.file.NoSuchFileException; import java.nio.file.Path; import java.nio.file.attribute.PosixFileAttributes; import java.nio.file.attribute.PosixFilePermission; @@ -60,7 +61,7 @@ public class FileUtils { public static void deleteFile(Path path) { try { Files.delete(path); - } catch (FileNotFoundException fe) { + } catch (FileNotFoundException | NoSuchFileException fe) { logger.warn("Tried to delete file \"" + path + "\" but it did not exist"); } catch (IOException e) { logger.error("Exception deleting file \"" + path + "\"!", e); diff --git a/photon-server/src/main/java/org/photonvision/server/RequestHandler.java b/photon-server/src/main/java/org/photonvision/server/RequestHandler.java index 53d6139e7..6af230d54 100644 --- a/photon-server/src/main/java/org/photonvision/server/RequestHandler.java +++ b/photon-server/src/main/java/org/photonvision/server/RequestHandler.java @@ -40,6 +40,7 @@ import org.photonvision.common.logging.LogGroup; import org.photonvision.common.logging.Logger; import org.photonvision.common.networking.NetworkManager; import org.photonvision.common.util.ShellExec; +import org.photonvision.common.util.TimedTaskManager; import org.photonvision.common.util.file.ProgramDirectoryUtilities; import org.photonvision.vision.processes.VisionModuleManager; import org.photonvision.vision.target.TargetModel; @@ -99,8 +100,7 @@ public class RequestHandler { ctx.status(200); logger.info("Settings uploaded, going down for restart."); - restartProgram(ctx); - + restartProgram(); } else { logger.error("Couldn't read uploaded file! Ignoring."); ctx.status(500); @@ -128,7 +128,7 @@ public class RequestHandler { ctx.status(200); logger.info("New .jar in place, going down for restart..."); - restartProgram(ctx); + restartProgram(); } catch (FileNotFoundException e) { logger.error( @@ -224,13 +224,19 @@ public class RequestHandler { ctx.status(HardwareManager.getInstance().restartDevice() ? 200 : 500); } + public static void restartProgram(Context ctx) { + restartProgram(); + } + + public static void restartProgram() { + TimedTaskManager.getInstance().addOneShotTask(RequestHandler::restartProgramInternal, 0); + } + /** * Note that this doesn't actually restart the program itself -- instead, it relies on systemd or * an equivalent. */ - public static void restartProgram(Context ctx) { - ctx.status(200); - + public static void restartProgramInternal() { if (Platform.isRaspberryPi()) { try { new ShellExec().executeBashCommand("systemctl restart photonvision.service");