···
atLeast3 = versionAtLeast cfg.package.version "3";
atLeast3_11 = versionAtLeast cfg.package.version "3.11";
24
+
atLeast4 = versionAtLeast cfg.package.version "4";
defaultUser = "cassandra";
···
cassandraLogbackConfig = pkgs.writeText "logback.xml" cfg.logbackConfig;
passAsFile = [ "extraEnvSh" ];
68
-
inherit (cfg) extraEnvSh;
69
+
inherit (cfg) extraEnvSh package;
···
# Delete default password file
sed -i '/-Dcom.sun.management.jmxremote.password.file=\/etc\/cassandra\/jmxremote.password/d' "$out/cassandra-env.sh"
88
+
${lib.optionalString atLeast4 ''
89
+
cp $package/conf/jvm*.options $out/
···
"-Dcom.sun.management.jmxremote.password.file=${cfg.jmxRolesFile}"
] ++ optionals cfg.remoteJmx [
"-Djava.rmi.server.hostname=${cfg.rpcAddress}"
106
+
] ++ optionals atLeast4 [
107
+
# Historically, we don't use a log dir, whereas the upstream scripts do
108
+
# expect this. We override those by providing our own -Xlog:gc flag.
109
+
"-Xlog:gc=warning,heap*=warning,age*=warning,safepoint=warning,promotion*=warning"
113
+
# Sufficient for cassandra 2.x, 3.x
114
+
CASSANDRA_CONF = "${cassandraEtc}";
116
+
# Required since cassandra 4
117
+
CASSANDRA_LOGBACK_CONF = "${cassandraEtc}/logback.xml";
···
systemd.services.cassandra = {
description = "Apache Cassandra service";
after = [ "network.target" ];
493
-
CASSANDRA_CONF = "${cassandraEtc}";
509
+
environment = commonEnv // {
JVM_OPTS = builtins.concatStringsSep " " fullJvmOptions;
MAX_HEAP_SIZE = toString cfg.maxHeapSize;
HEAP_NEWSIZE = toString cfg.heapNewSize;
···
description = "Perform a full repair on this Cassandra node";
after = [ "cassandra.service" ];
requires = [ "cassandra.service" ];
530
+
environment = commonEnv;
···
description = "Perform an incremental repair on this cassandra node.";
after = [ "cassandra.service" ];
requires = [ "cassandra.service" ];
559
+
environment = commonEnv;