From 7a9de4f71100a3809532ae02c642d48edd38cd72 Mon Sep 17 00:00:00 2001
From: Kai Reinhard <K.Reinhard@micromata.de>
Date: Mon, 19 Apr 2021 18:30:07 +0000
Subject: [PATCH] environment.sh is now created by BorgButlerApplicaiton, only for docker installations. BorgCache will now be initialized on startup, so shutdown will not fail.

---
 borgbutler-server/src/main/kotlin/de/micromata/borgbutler/server/BorgButlerApplication.kt |   21 +++++++++++++++++++--
 1 files changed, 19 insertions(+), 2 deletions(-)

diff --git a/borgbutler-server/src/main/kotlin/de/micromata/borgbutler/server/BorgButlerApplication.kt b/borgbutler-server/src/main/kotlin/de/micromata/borgbutler/server/BorgButlerApplication.kt
index 6207080..d577112 100644
--- a/borgbutler-server/src/main/kotlin/de/micromata/borgbutler/server/BorgButlerApplication.kt
+++ b/borgbutler-server/src/main/kotlin/de/micromata/borgbutler/server/BorgButlerApplication.kt
@@ -55,9 +55,16 @@
         }
         SpringApplication.run(BorgButlerApplication::class.java, *args)
 
-        if (borgButlerHome != null) {
-            init(borgButlerHome)
+        init(borgButlerHome)
+        if (RunningMode.dockerMode) {
+            val workingDir = File(borgButlerHome)
+            val environmentFile = File(workingDir, ENVIRONMENT_FILE)
+            if (!environmentFile.exists()) {
+                log.info { "Creating environment file for java options (docker): ${environmentFile.absolutePath}" }
+                environmentFile.writeText(ENVIRONMENT_FILE_INITIAL_CONTENT)
+            }
         }
+
         // create Options object
         val options = Options()
         options.addOption(
@@ -134,6 +141,7 @@
             System.err.println("Parsing failed.  Reason: " + ex.message)
             printHelp(options)
         }
+        ButlerCache.getInstance() // Force initialization (otherwise shutdown may fail if cache isn't used beof).
     }
 
     @EventListener(ApplicationReadyEvent::class)
@@ -201,5 +209,14 @@
             }
             // 2018-12-04T22:44:58.924642
         }
+
+
+        private const val ENVIRONMENT_FILE = "environment.sh"
+        private const val ENVIRONMENT_FILE_INITIAL_CONTENT = "#!/bin/bash\n\n" +
+                "# Set the java options here (for docker installation only):\n" +
+                "#export JAVA_OPTS=-DXmx4g\n" +
+                "export JAVA_OPTS=\n\n" +
+                "# Set your options here (will be used for starting\n" +
+                "export JAVA_ARGS=\n"
     }
 }

--
Gitblit v1.10.0