Maksim Davydov created IGNITE-28932:
---------------------------------------
Summary: [ducktests] Make garbage collector selectable via globals
Key: IGNITE-28932
URL: https://issues.apache.org/jira/browse/IGNITE-28932
Project: Ignite
Issue Type: Task
Reporter: Maksim Davydov
Assignee: Maksim Davydov
The garbage collector used by ducktest nodes is hardcoded to G1 in
_jvm_utils.create_jvm_settings()_, whose _gc_settings _parameter no caller ever
passes - so comparing Ignite's behaviour under a different collector currently
means editing that constant.
Passing the collector through jvm_opts does not work either:
_merge_jvm_settings() _overwrites
per option, keyed on the substring before the first =, so -XX:+UseG1GC and
-XX:+UseZGC are different keys and both survive the merge, producing a JVM that
aborts at startup with "Multiple garbage collectors selected". GC selection is
really mutually-exclusive group replacement — the collector and its tuning
flags travel together — so it has
to be chosen before the default option list is assembled rather than patched
afterwards.
The proposal is a gc global backed by a named profile registry (G1, PARALLEL,
SERIAL, ZGC, SHENANDOAH), selectable independently for the server and client
roles, with G1 remaining the default and conflicting selectors raising in
Python instead of failing later in a remote JVM. This also fixes two latent
issues it exposes:
-XX:+UseStringDeduplication currently sits in the generic parameter block
although it is G1-only through JDK 17, and CDC copies a server cluster's fully
resolved option list into the client-role KafkaToIgniteService, which would put
two collectors on one command line.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)