in ccmlib/node.py [0:0]
def __update_envfile(self):
agentlib_setting = '-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address={}'.format(str(self.remote_debug_port))
remote_debug_options = agentlib_setting
# The cassandra-env.ps1 file has been introduced in 2.1
if common.is_modern_windows_install(self.get_base_cassandra_version()):
conf_file = os.path.join(self.get_conf_dir(), common.CASSANDRA_WIN_ENV)
jmx_port_pattern = '^\s+\$JMX_PORT='
jmx_port_setting = ' $JMX_PORT="' + self.jmx_port + '"'
if self.get_cassandra_version() < '3.2':
remote_debug_options = ' $env:JVM_OPTS="$env:JVM_OPTS {}"'.format(agentlib_setting)
else:
conf_file = os.path.join(self.get_conf_dir(), common.CASSANDRA_ENV)
jmx_port_pattern = 'JMX_PORT='
jmx_port_setting = 'JMX_PORT="' + self.jmx_port + '"'
if self.get_cassandra_version() < '3.2':
remote_debug_options = 'JVM_OPTS="$JVM_OPTS {}"'.format(agentlib_setting)
common.replace_in_file(conf_file, jmx_port_pattern, jmx_port_setting)
if common.is_modern_windows_install(self.get_version_from_build(node_path=self.get_path())):
dst = os.path.join(self.get_conf_dir(), common.CASSANDRA_WIN_ENV)
replacements = [
('env:CASSANDRA_HOME =', ' $env:CASSANDRA_HOME="%s"' % self.get_install_dir()),
('env:CASSANDRA_CONF =', ' $env:CCM_DIR="' + self.get_path() + '\\conf"\n $env:CASSANDRA_CONF="$env:CCM_DIR"'),
('cp = ".*?env:CASSANDRA_HOME.conf', ' $cp = """$env:CASSANDRA_CONF"""')
]
common.replaces_in_file(dst, replacements)
if self.remote_debug_port != '0':
remote_debug_port_pattern = '((-Xrunjdwp:)|(-agentlib:jdwp=))transport=dt_socket,server=y,suspend=n,address='
if self.get_cassandra_version() < '3.2':
common.replace_in_file(conf_file, remote_debug_port_pattern, remote_debug_options)
else:
for f in glob.glob(os.path.join(self.get_conf_dir(), common.JVM_OPTS_PATTERN)):
if os.path.isfile(f):
common.replace_in_file(f, remote_debug_port_pattern, remote_debug_options)
if self.byteman_port != '0':
byteman_jar = glob.glob(os.path.join(self.get_install_dir(), 'build', 'lib', 'jars', 'byteman-[0-9]*.jar'))[0]
agent_string = "-javaagent:{}=listener:true,boot:{},port:{}".format(byteman_jar, byteman_jar, str(self.byteman_port))
if self.byteman_startup_script is not None:
agent_string = agent_string + ",script:{}".format(self.byteman_startup_script)
if common.is_modern_windows_install(self.get_base_cassandra_version()):
with open(conf_file, "r+") as conf_rewrite:
conf_lines = conf_rewrite.readlines()
# Remove trailing brace, will be replaced
conf_lines = conf_lines[:-1]
conf_lines.append(" $env:JVM_OPTS=\"$env:JVM_OPTS {}\"\n}}\n".format(agent_string))
conf_rewrite.seek(0)
conf_rewrite.truncate()
conf_rewrite.writelines(conf_lines)
else:
common.replaces_or_add_into_file_tail(conf_file, [('.*byteman.*', "JVM_OPTS=\"$JVM_OPTS {}\"".format(agent_string))], add_config_close=False)
if self.get_cassandra_version() < '2.0.1':
common.replace_in_file(conf_file, "-Xss", ' JVM_OPTS="$JVM_OPTS -Xss228k"')
# gc.log was turned on by default in 2.2.5/3.0.3/3.3
if self.get_cassandra_version() >= '2.2.5':
gc_log_pattern = "-Xloggc"
gc_log_path = os.path.join(self.log_directory(), 'gc.log')
if common.is_win():
gc_log_setting = ' $env:JVM_OPTS="$env:JVM_OPTS -Xloggc:{}"'.format(gc_log_path)
else:
gc_log_setting = 'JVM_OPTS="$JVM_OPTS -Xloggc:{}"'.format(gc_log_path)
common.replace_in_file(conf_file, gc_log_pattern, gc_log_setting)
# Java 9
gc_log_pattern = "-Xlog[:]gc=info"
if common.is_win():
gc_log_setting = ' $env:JVM_OPTS="$env:JVM_OPTS -Xlog:gc=info,heap=trace,age=debug,safepoint=info,promotion=trace:file={}:time,uptime,pid,tid,level:filecount=10,filesize=10240"'.format(gc_log_path)
else:
gc_log_setting = 'JVM_OPTS="$JVM_OPTS -Xlog:gc=info,heap=trace,age=debug,safepoint=info,promotion=trace:file={}:time,uptime,pid,tid,level:filecount=10,filesize=10240"'.format(gc_log_path)
common.replace_in_file(conf_file, gc_log_pattern, gc_log_setting)
for itf in list(self.network_interfaces.values()):
if itf is not None and common.interface_is_ipv6(itf):
if self.get_cassandra_version() < '3.2':
if common.is_win():
common.replace_in_file(conf_file,
'-Djava.net.preferIPv4Stack=true',
'\t$env:JVM_OPTS="$env:JVM_OPTS -Djava.net.preferIPv4Stack=false -Djava.net.preferIPv6Addresses=true"')
else:
common.replace_in_file(conf_file,
'-Djava.net.preferIPv4Stack=true',
'JVM_OPTS="$JVM_OPTS -Djava.net.preferIPv4Stack=false -Djava.net.preferIPv6Addresses=true"')
break
else:
for f in glob.glob(os.path.join(self.get_conf_dir(), common.JVM_OPTS_PATTERN)):
if os.path.isfile(f):
common.replace_in_file(f, '-Djava.net.preferIPv4Stack=true', '')
break