ctubbsii commented on code in PR #2120:
URL: https://github.com/apache/zookeeper/pull/2120#discussion_r1755356759
##########
bin/zkEnv.sh:
##########
@@ -145,9 +145,15 @@ fi
#echo "CLASSPATH=$CLASSPATH"
# default heap for zookeeper server
-ZK_SERVER_HEAP="${ZK_SERVER_HEAP:-1000}"
-export SERVER_JVMFLAGS="-Xmx${ZK_SERVER_HEAP}m $SERVER_JVMFLAGS"
+if [[ -n $ZK_SERVER_HEAP ]]; then
+ echo 'WARNING: ZK_SERVER_HEAP will not be recognized in a future version.
Set -Xmx directly using SERVER_JVMFLAGS instead.'
+ SERVER_JVMFLAGS="-Xmx${ZK_SERVER_HEAP}m $SERVER_JVMFLAGS"
+fi
+export SERVER_JVMFLAGS=${SERVER_JVMFLAGS:--Xmx1000m}
Review Comment:
A small modification could be made to avoid the "breakage" of not having a
default when the `SERVER_JVMFLAGS` is altered to set something other than the
max heap size, and the deprecated property isn't used:
```bash
if [[ -n $ZK_SERVER_HEAP ]]; then
echo 'WARNING: ZK_SERVER_HEAP will not be recognized in a future
version. Set -Xmx directly using SERVER_JVMFLAGS instead.'
SERVER_JVMFLAGS="-Xmx${ZK_SERVER_HEAP}m $SERVER_JVMFLAGS"
else
SERVER_JVMFLAGS="-Xmx1000m $SERVER_JVMFLAGS" # this ensures a default
value is always prepended
fi
export SERVER_JVMFLAGS
```
This works if the user wants to override with a different `-Xmx` value (the
latter will be used). However, that leaves the situation in the current state
of not allowing the `-Xmx` to be overridden with a related, but incompatible
option, like `-XX:MaxRAMPercentage`, which was the whole point of this effort
to add (or to avoid) an additional environmental property to handle it. This
implementation was suggested and pursued, because it was minimally complex, and
put more control in users hands. The other alternatives considered were
creating new properties and conditional logic for other memory related options
(originally suggested in ZOOKEEPER-4797), or (as @kezhuw suggested)
conditionally prepending, depending on whether one of the related options was
detected. I think both of these are overly complex, and give the appearance of
supporting more use cases, while actually supporting the same number of use
cases as the simpler solution, but with extra complexity the user needs to na
vigate in order to set the options correctly for their situation.
That is why the following is a better fix for ZOOKEEPER-1670:
```bash
export SERVER_JVMFLAGS=${SERVER_JVMFLAGS:--Xmx1000m}
```
If you want to keep this simple, minimally complex, but maximally
configurable, solution, but still want to alert users to the change in
behavior, because you're concerned it will break people who override
`SERVER_JVMFLAGS` for reasons unrelated to memory, then you can do something
like this to add the extra notification:
```bash
if [[ -n $ZK_SERVER_HEAP ]]; then
echo "INFO: SERVER_JVMFLAGS set by user ($SERVER_JVMFLAGS) will override
the default value (-Xmx1000m)"
fi
if [[ -n $ZK_SERVER_HEAP ]]; then
echo 'WARNING: ZK_SERVER_HEAP will not be recognized in a future
version. Set -Xmx directly using SERVER_JVMFLAGS instead.'
SERVER_JVMFLAGS="-Xmx${ZK_SERVER_HEAP}m $SERVER_JVMFLAGS"
fi
export SERVER_JVMFLAGS=${SERVER_JVMFLAGS:--Xmx1000m}
```
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]