From 1617db38480798d515bcef595397e43518150dde Mon Sep 17 00:00:00 2001
From: Vincent Massol <vincent@massol.net>
Date: Fri, 4 Jan 2019 11:03:59 +0100
Subject: [PATCH] XDOCKER-92: Cannot override the JVM memory

---
 10/mysql-tomcat/tomcat/setenv.sh    | 28 +++++++++++++++++++++++++++-
 10/postgres-tomcat/tomcat/setenv.sh | 28 +++++++++++++++++++++++++++-
 9/mysql-tomcat/tomcat/setenv.sh     | 28 +++++++++++++++++++++++++++-
 9/postgres-tomcat/tomcat/setenv.sh  | 28 +++++++++++++++++++++++++++-
 template/tomcat/setenv.sh           | 28 +++++++++++++++++++++++++++-
 5 files changed, 135 insertions(+), 5 deletions(-)

diff --git a/10/mysql-tomcat/tomcat/setenv.sh b/10/mysql-tomcat/tomcat/setenv.sh
index 886f49b..4e40565 100755
--- a/10/mysql-tomcat/tomcat/setenv.sh
+++ b/10/mysql-tomcat/tomcat/setenv.sh
@@ -25,4 +25,30 @@
 #   http://tomcat.apache.org/security-6.html#Fixed_in_Apache_Tomcat_6.0.10. We want to allow for them as it's useful to
 #   be able to have '/' and '' in wiki page names.
 # * On some system /dev/random is slow to init leading to a slow Tomcat and thus Xwiki startup.
-export CATALINA_OPTS="-Xmx1024m -Dorg.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH=true -Dorg.apache.catalina.connector.CoyoteAdapter.ALLOW_BACKSLASH=true -Dsecurerandom.source=file:/dev/urandom"
+
+# Users can override these values by setting the JAVA_OPTS environment variable. For example:
+# -e JAVA_OPTS="-Xmx2048m"
+
+XMX="-Xmx1024m"
+ALLOW_ENCODED_SLASH="-Dorg.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH=true"
+ALLOW_BACKSLASH="-Dorg.apache.catalina.connector.CoyoteAdapter.ALLOW_BACKSLASH=true"
+SECURERANDOM="-Dsecurerandom.source=file:/dev/urandom"
+
+if [[ ! -z "$JAVA_OPTS" ]]; then
+  if [[ ! $JAVA_OPTS =~ .*-Xmx[0-9]+.* ]]; then
+    JAVA_OPTS="$JAVA_OPTS $XMX"
+  fi
+  if [[ ! $JAVA_OPTS =~ .*ALLOW_ENCODED_SLASH.* ]]; then
+    JAVA_OPTS="$JAVA_OPTS $ALLOW_ENCODED_SLASH"
+  fi
+  if [[ ! $JAVA_OPTS =~ .*ALLOW_BACKSLASH.* ]]; then
+    JAVA_OPTS="$JAVA_OPTS $ALLOW_BACKSLASH"
+  fi
+  if [[ ! $JAVA_OPTS =~ .*securerandom\.source.* ]]; then
+    JAVA_OPTS="$JAVA_OPTS $SECURERANDOM"
+  fi
+else
+  JAVA_OPTS="$XMX $ALLOW_ENCODED_SLASH $ALLOW_BACKSLASH $SECURERANDOM"
+fi
+
+export JAVA_OPTS
diff --git a/10/postgres-tomcat/tomcat/setenv.sh b/10/postgres-tomcat/tomcat/setenv.sh
index 886f49b..4e40565 100755
--- a/10/postgres-tomcat/tomcat/setenv.sh
+++ b/10/postgres-tomcat/tomcat/setenv.sh
@@ -25,4 +25,30 @@
 #   http://tomcat.apache.org/security-6.html#Fixed_in_Apache_Tomcat_6.0.10. We want to allow for them as it's useful to
 #   be able to have '/' and '' in wiki page names.
 # * On some system /dev/random is slow to init leading to a slow Tomcat and thus Xwiki startup.
-export CATALINA_OPTS="-Xmx1024m -Dorg.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH=true -Dorg.apache.catalina.connector.CoyoteAdapter.ALLOW_BACKSLASH=true -Dsecurerandom.source=file:/dev/urandom"
+
+# Users can override these values by setting the JAVA_OPTS environment variable. For example:
+# -e JAVA_OPTS="-Xmx2048m"
+
+XMX="-Xmx1024m"
+ALLOW_ENCODED_SLASH="-Dorg.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH=true"
+ALLOW_BACKSLASH="-Dorg.apache.catalina.connector.CoyoteAdapter.ALLOW_BACKSLASH=true"
+SECURERANDOM="-Dsecurerandom.source=file:/dev/urandom"
+
+if [[ ! -z "$JAVA_OPTS" ]]; then
+  if [[ ! $JAVA_OPTS =~ .*-Xmx[0-9]+.* ]]; then
+    JAVA_OPTS="$JAVA_OPTS $XMX"
+  fi
+  if [[ ! $JAVA_OPTS =~ .*ALLOW_ENCODED_SLASH.* ]]; then
+    JAVA_OPTS="$JAVA_OPTS $ALLOW_ENCODED_SLASH"
+  fi
+  if [[ ! $JAVA_OPTS =~ .*ALLOW_BACKSLASH.* ]]; then
+    JAVA_OPTS="$JAVA_OPTS $ALLOW_BACKSLASH"
+  fi
+  if [[ ! $JAVA_OPTS =~ .*securerandom\.source.* ]]; then
+    JAVA_OPTS="$JAVA_OPTS $SECURERANDOM"
+  fi
+else
+  JAVA_OPTS="$XMX $ALLOW_ENCODED_SLASH $ALLOW_BACKSLASH $SECURERANDOM"
+fi
+
+export JAVA_OPTS
diff --git a/9/mysql-tomcat/tomcat/setenv.sh b/9/mysql-tomcat/tomcat/setenv.sh
index 886f49b..4e40565 100755
--- a/9/mysql-tomcat/tomcat/setenv.sh
+++ b/9/mysql-tomcat/tomcat/setenv.sh
@@ -25,4 +25,30 @@
 #   http://tomcat.apache.org/security-6.html#Fixed_in_Apache_Tomcat_6.0.10. We want to allow for them as it's useful to
 #   be able to have '/' and '' in wiki page names.
 # * On some system /dev/random is slow to init leading to a slow Tomcat and thus Xwiki startup.
-export CATALINA_OPTS="-Xmx1024m -Dorg.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH=true -Dorg.apache.catalina.connector.CoyoteAdapter.ALLOW_BACKSLASH=true -Dsecurerandom.source=file:/dev/urandom"
+
+# Users can override these values by setting the JAVA_OPTS environment variable. For example:
+# -e JAVA_OPTS="-Xmx2048m"
+
+XMX="-Xmx1024m"
+ALLOW_ENCODED_SLASH="-Dorg.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH=true"
+ALLOW_BACKSLASH="-Dorg.apache.catalina.connector.CoyoteAdapter.ALLOW_BACKSLASH=true"
+SECURERANDOM="-Dsecurerandom.source=file:/dev/urandom"
+
+if [[ ! -z "$JAVA_OPTS" ]]; then
+  if [[ ! $JAVA_OPTS =~ .*-Xmx[0-9]+.* ]]; then
+    JAVA_OPTS="$JAVA_OPTS $XMX"
+  fi
+  if [[ ! $JAVA_OPTS =~ .*ALLOW_ENCODED_SLASH.* ]]; then
+    JAVA_OPTS="$JAVA_OPTS $ALLOW_ENCODED_SLASH"
+  fi
+  if [[ ! $JAVA_OPTS =~ .*ALLOW_BACKSLASH.* ]]; then
+    JAVA_OPTS="$JAVA_OPTS $ALLOW_BACKSLASH"
+  fi
+  if [[ ! $JAVA_OPTS =~ .*securerandom\.source.* ]]; then
+    JAVA_OPTS="$JAVA_OPTS $SECURERANDOM"
+  fi
+else
+  JAVA_OPTS="$XMX $ALLOW_ENCODED_SLASH $ALLOW_BACKSLASH $SECURERANDOM"
+fi
+
+export JAVA_OPTS
diff --git a/9/postgres-tomcat/tomcat/setenv.sh b/9/postgres-tomcat/tomcat/setenv.sh
index 886f49b..4e40565 100755
--- a/9/postgres-tomcat/tomcat/setenv.sh
+++ b/9/postgres-tomcat/tomcat/setenv.sh
@@ -25,4 +25,30 @@
 #   http://tomcat.apache.org/security-6.html#Fixed_in_Apache_Tomcat_6.0.10. We want to allow for them as it's useful to
 #   be able to have '/' and '' in wiki page names.
 # * On some system /dev/random is slow to init leading to a slow Tomcat and thus Xwiki startup.
-export CATALINA_OPTS="-Xmx1024m -Dorg.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH=true -Dorg.apache.catalina.connector.CoyoteAdapter.ALLOW_BACKSLASH=true -Dsecurerandom.source=file:/dev/urandom"
+
+# Users can override these values by setting the JAVA_OPTS environment variable. For example:
+# -e JAVA_OPTS="-Xmx2048m"
+
+XMX="-Xmx1024m"
+ALLOW_ENCODED_SLASH="-Dorg.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH=true"
+ALLOW_BACKSLASH="-Dorg.apache.catalina.connector.CoyoteAdapter.ALLOW_BACKSLASH=true"
+SECURERANDOM="-Dsecurerandom.source=file:/dev/urandom"
+
+if [[ ! -z "$JAVA_OPTS" ]]; then
+  if [[ ! $JAVA_OPTS =~ .*-Xmx[0-9]+.* ]]; then
+    JAVA_OPTS="$JAVA_OPTS $XMX"
+  fi
+  if [[ ! $JAVA_OPTS =~ .*ALLOW_ENCODED_SLASH.* ]]; then
+    JAVA_OPTS="$JAVA_OPTS $ALLOW_ENCODED_SLASH"
+  fi
+  if [[ ! $JAVA_OPTS =~ .*ALLOW_BACKSLASH.* ]]; then
+    JAVA_OPTS="$JAVA_OPTS $ALLOW_BACKSLASH"
+  fi
+  if [[ ! $JAVA_OPTS =~ .*securerandom\.source.* ]]; then
+    JAVA_OPTS="$JAVA_OPTS $SECURERANDOM"
+  fi
+else
+  JAVA_OPTS="$XMX $ALLOW_ENCODED_SLASH $ALLOW_BACKSLASH $SECURERANDOM"
+fi
+
+export JAVA_OPTS
diff --git a/template/tomcat/setenv.sh b/template/tomcat/setenv.sh
index ed93af8..93ff95b 100755
--- a/template/tomcat/setenv.sh
+++ b/template/tomcat/setenv.sh
@@ -25,4 +25,30 @@
 #   http://tomcat.apache.org/security-6.html#Fixed_in_Apache_Tomcat_6.0.10. We want to allow for them as it's useful to
 #   be able to have '/' and '\' in wiki page names.
 # * On some system /dev/random is slow to init leading to a slow Tomcat and thus Xwiki startup.
-export CATALINA_OPTS="-Xmx1024m -Dorg.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH=true -Dorg.apache.catalina.connector.CoyoteAdapter.ALLOW_BACKSLASH=true -Dsecurerandom.source=file:/dev/urandom"
+
+# Users can override these values by setting the JAVA_OPTS environment variable. For example:
+# -e JAVA_OPTS="-Xmx2048m"
+
+XMX="-Xmx1024m"
+ALLOW_ENCODED_SLASH="-Dorg.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH=true"
+ALLOW_BACKSLASH="-Dorg.apache.catalina.connector.CoyoteAdapter.ALLOW_BACKSLASH=true"
+SECURERANDOM="-Dsecurerandom.source=file:/dev/urandom"
+
+if [[ ! -z "\$JAVA_OPTS" ]]; then
+  if [[ ! \$JAVA_OPTS =~ .*-Xmx[0-9]+.* ]]; then
+    JAVA_OPTS="\$JAVA_OPTS \$XMX"
+  fi
+  if [[ ! \$JAVA_OPTS =~ .*ALLOW_ENCODED_SLASH.* ]]; then
+    JAVA_OPTS="\$JAVA_OPTS \$ALLOW_ENCODED_SLASH"
+  fi
+  if [[ ! \$JAVA_OPTS =~ .*ALLOW_BACKSLASH.* ]]; then
+    JAVA_OPTS="\$JAVA_OPTS \$ALLOW_BACKSLASH"
+  fi
+  if [[ ! \$JAVA_OPTS =~ .*securerandom\\.source.* ]]; then
+    JAVA_OPTS="\$JAVA_OPTS \$SECURERANDOM"
+  fi
+else
+  JAVA_OPTS="\$XMX \$ALLOW_ENCODED_SLASH \$ALLOW_BACKSLASH \$SECURERANDOM"
+fi
+
+export JAVA_OPTS
-- 
GitLab