diff --git a/nixos/doc/manual/release-notes/rl-2105.xml b/nixos/doc/manual/release-notes/rl-2105.xml
index 9a1e6b6618d..e052632ecaf 100644
--- a/nixos/doc/manual/release-notes/rl-2105.xml
+++ b/nixos/doc/manual/release-notes/rl-2105.xml
@@ -562,6 +562,21 @@ self: super:
no longer uses the deprecated cirrus and vesa device dependent X drivers by default. It also enables both amdgpu and nouveau drivers by default now.
+
+
+ The apacheKafka packages are now built with
+ version-matched JREs. Versions 2.6 and above, the ones that recommend it,
+ use jdk11, while versions below remain on jdk8. The NixOS service has
+ been adjusted to start the service using the same version as the package,
+ adjustable with the new
+ services.apache-kafka.jre
+ option. Furthermore, the default list of
+ services.apache-kafka.jvmOptions
+ have been removed. You should set your own according to the
+ upstream documentation
+ for your Kafka version.
+
+
diff --git a/nixos/modules/services/misc/apache-kafka.nix b/nixos/modules/services/misc/apache-kafka.nix
index f3a650a260f..69dfadfe54e 100644
--- a/nixos/modules/services/misc/apache-kafka.nix
+++ b/nixos/modules/services/misc/apache-kafka.nix
@@ -90,19 +90,7 @@ in {
jvmOptions = mkOption {
description = "Extra command line options for the JVM running Kafka.";
- default = [
- "-server"
- "-Xmx1G"
- "-Xms1G"
- "-XX:+UseCompressedOops"
- "-XX:+UseParNewGC"
- "-XX:+UseConcMarkSweepGC"
- "-XX:+CMSClassUnloadingEnabled"
- "-XX:+CMSScavengeBeforeRemark"
- "-XX:+DisableExplicitGC"
- "-Djava.awt.headless=true"
- "-Djava.net.preferIPv4Stack=true"
- ];
+ default = [];
type = types.listOf types.str;
example = [
"-Djava.net.preferIPv4Stack=true"
@@ -118,6 +106,13 @@ in {
type = types.package;
};
+ jre = mkOption {
+ description = "The JRE with which to run Kafka";
+ default = cfg.package.passthru.jre;
+ defaultText = "pkgs.apacheKafka.passthru.jre";
+ type = types.package;
+ };
+
};
config = mkIf cfg.enable {
@@ -138,7 +133,7 @@ in {
after = [ "network.target" ];
serviceConfig = {
ExecStart = ''
- ${pkgs.jre}/bin/java \
+ ${cfg.jre}/bin/java \
-cp "${cfg.package}/libs/*" \
-Dlog4j.configuration=file:${logConfig} \
${toString cfg.jvmOptions} \
diff --git a/nixos/tests/kafka.nix b/nixos/tests/kafka.nix
index d5c54f7d991..034601c815b 100644
--- a/nixos/tests/kafka.nix
+++ b/nixos/tests/kafka.nix
@@ -30,11 +30,6 @@ let
'';
package = kafkaPackage;
zookeeper = "zookeeper1:2181";
- # These are the default options, but UseCompressedOops doesn't work with 32bit JVM
- jvmOptions = [
- "-server" "-Xmx1G" "-Xms1G" "-XX:+UseParNewGC" "-XX:+UseConcMarkSweepGC" "-XX:+CMSClassUnloadingEnabled"
- "-XX:+CMSScavengeBeforeRemark" "-XX:+DisableExplicitGC" "-Djava.awt.headless=true" "-Djava.net.preferIPv4Stack=true"
- ] ++ optionals (! pkgs.stdenv.isi686 ) [ "-XX:+UseCompressedOops" ];
};
networking.firewall.allowedTCPPorts = [ 9092 ];
@@ -82,4 +77,5 @@ let
in with pkgs; {
kafka_2_4 = makeKafkaTest "kafka_2_4" apacheKafka_2_4;
kafka_2_5 = makeKafkaTest "kafka_2_5" apacheKafka_2_5;
+ kafka_2_6 = makeKafkaTest "kafka_2_6" apacheKafka_2_6;
}
diff --git a/pkgs/servers/apache-kafka/default.nix b/pkgs/servers/apache-kafka/default.nix
index 4bd50653d52..935db27044f 100644
--- a/pkgs/servers/apache-kafka/default.nix
+++ b/pkgs/servers/apache-kafka/default.nix
@@ -1,21 +1,29 @@
-{ lib, stdenv, fetchurl, jre8, makeWrapper, bash, coreutils, gnugrep, gnused, ps,
+{ lib, stdenv, fetchurl, jdk8_headless, jdk11_headless, makeWrapper, bash, coreutils, gnugrep, gnused, ps,
majorVersion ? "1.0" }:
let
+ jre8 = jdk8_headless;
+ jre11 = jdk11_headless;
versionMap = {
"2.4" = {
kafkaVersion = "2.4.1";
scalaVersion = "2.12";
sha256 = "0ahsprmpjz026mhbr79187wfdrxcg352iipyfqfrx68q878wnxr1";
+ jre = jre8;
};
"2.5" = {
- kafkaVersion = "2.5.0";
+ kafkaVersion = "2.5.1";
+ scalaVersion = "2.12";
+ sha256 = "1wn4iszrm2rvsfyyr515zx79k5m86davjkcwcwpxcgc4k3q0z7lv";
+ jre = jre8;
+ };
+ "2.6" = {
+ kafkaVersion = "2.6.1";
scalaVersion = "2.13";
- sha256 = "0w3g7ii8x63m2blv2a8c491d0diczpliaqm9f7w5yn98hikh0aqi";
+ sha256 = "1a2kd4r6f8z7qf886nnq9f350sblzzdi230j2hll7x156888573y";
+ jre = jre11;
};
};
-
- jre = jre8; # TODO: remove override https://github.com/NixOS/nixpkgs/pull/89731
in
with versionMap.${majorVersion};
@@ -63,5 +71,5 @@ stdenv.mkDerivation rec {
maintainers = [ maintainers.ragge ];
platforms = platforms.unix;
};
-
+ passthru = { inherit jre; };
}
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index 7810518d356..adf6b7162d3 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -11861,9 +11861,10 @@ in
apacheAnt_1_9 = callPackage ../development/tools/build-managers/apache-ant/1.9.nix { };
ant = apacheAnt;
- apacheKafka = apacheKafka_2_5;
+ apacheKafka = apacheKafka_2_6;
apacheKafka_2_4 = callPackage ../servers/apache-kafka { majorVersion = "2.4"; };
apacheKafka_2_5 = callPackage ../servers/apache-kafka { majorVersion = "2.5"; };
+ apacheKafka_2_6 = callPackage ../servers/apache-kafka { majorVersion = "2.6"; };
kt = callPackage ../tools/misc/kt {};