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)

Reply via email to