def __init__(self, service, jvm_opts=None, merge_with_default=True): """ :param service: Service :param jvm_opts: If passed will be added with higher priority to or overwrite completely the default options depending on the merge_with_default. Either string or list of strings is allowed. :param merge_with_default: If False jvm_opts will overide the default options completely. None of the default options will be applied. """ self.service = service self.jvm_opts = merge_jvm_settings(self.__get_default_jvm_opts() if merge_with_default else [], jvm_opts if jvm_opts else [])
def check_merge_jvm_settings(self, settings, additionals, expected): """ Tests different variants of merge jvm settings. """ res = {} for param in merge_jvm_settings(settings, additionals=additionals): if param in res: res[param] += 1 else: res[param] = 1 assert res == expected
def __get_default_jvm_opts(self): """ Return a set of default JVM options. """ default_jvm_opts = create_jvm_settings( gc_dump_path=os.path.join(self.service.log_dir, "gc.log"), oom_path=os.path.join(self.service.log_dir, "out_of_mem.hprof")) default_jvm_opts = merge_jvm_settings(default_jvm_opts, [ "-DIGNITE_SUCCESS_FILE=" + os.path.join(self.service.persistent_root, "success_file"), "-Dlog4j.configDebug=true" ]) if self.service.config and self.service.config.service_type == IgniteServiceType.THIN_CLIENT: default_jvm_opts = merge_jvm_settings(default_jvm_opts, [ "-Dlog4j.configurationFile=file:" + self.service.log_config_file ]) if self.service.context.globals.get(JFR_ENABLED, False): default_jvm_opts = merge_jvm_settings(default_jvm_opts, [ "-XX:+UnlockCommercialFeatures", "-XX:+FlightRecorder", "-XX:StartFlightRecording=dumponexit=true," + f"filename={self.service.jfr_dir}/recording.jfr" ]) jmx_remote_params = get_jmx_remote_params(self.service.context.globals) if jmx_remote_params.enabled: default_jvm_opts = merge_jvm_settings(default_jvm_opts, [ "-Dcom.sun.management.jmxremote", "-Dcom.sun.management.jmxremote.port=%d" % jmx_remote_params.port, "-Dcom.sun.management.jmxremote.local.only=false", "-Dcom.sun.management.jmxremote.authenticate=false", "-Dcom.sun.management.jmxremote.ssl=false" ]) return default_jvm_opts
def check_list(self): """ Checks list representation of JVM settings. """ jvm_settings = create_jvm_settings() assert "-Xms" + DEFAULT_HEAP in jvm_settings assert "-Xmx" + DEFAULT_HEAP in jvm_settings jvm_settings = merge_jvm_settings(jvm_settings, additionals="-Xms981M -Xmx981M") assert "-Xms981M" in jvm_settings assert "-Xmx981M" in jvm_settings assert "-Xms" + DEFAULT_HEAP not in jvm_settings assert "-Xmx" + DEFAULT_HEAP not in jvm_settings jvm_settings = merge_jvm_settings( jvm_settings, additionals="-XX:ParallelGCThreads=1024") jvm_settings = merge_jvm_settings( jvm_settings, additionals="-xx:ParallelGCThreads=512") assert "-XX:ParallelGCThreads=1024" in jvm_settings assert "-XX:ParallelGCThreads=512" not in jvm_settings
def _add_jvm_opts(self, opts): """Properly adds JVM options to current""" self.jvm_opts = merge_jvm_settings(self.jvm_opts, opts)
def __init__(self, service, jvm_opts=None, merge_with_default=True): super().__init__( service, merge_jvm_settings(self.__get_default_jvm_opts() if merge_with_default else [], jvm_opts if jvm_opts else []), merge_with_default)