Skip to content

Commit 42193b9

Browse files
authored
Add default jvm opts to tony jobtype and tony core (#629)
* Add default jvm opts to tony jobtype and tony core Signed-off-by: Frank Gu <[email protected]> * Release TonY 0.4.13 Signed-off-by: Frank Gu <[email protected]>
1 parent d198bed commit 42193b9

File tree

7 files changed

+45
-7
lines changed

7 files changed

+45
-7
lines changed

build.gradle

+1-1
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ ext.deps = [
9292

9393
allprojects {
9494
group = "com.linkedin.tony"
95-
project.version = "0.4.12"
95+
project.version = "0.4.13"
9696
}
9797

9898
task sourcesJar(type: Jar) {

tony-azkaban/src/main/java/com/linkedin/tony/azkaban/TonyJob.java

+31
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,9 @@ public class TonyJob extends HadoopJavaJob {
3838
private static final String TONY_CONF_PREFIX = "tony.";
3939
public static final String TONY_APPLICATION_TAGS =
4040
TONY_CONF_PREFIX + "application.tags";
41+
public static final String TONY_DEFAULT_JVM_OPTS = TONY_CONF_PREFIX + "default.jvm.opts";
42+
public static final String TONY_TASK_AM_JVM_OPTS = TONY_CONF_PREFIX + "task.am.jvm.opts";
43+
public static final String TONY_TASK_EXECUTOR_JVM_OPTS = TONY_CONF_PREFIX + "task.executor.jvm.opts";
4144
private String tonyXml;
4245
private File tonyConfFile;
4346
private final Configuration tonyConf;
@@ -64,9 +67,37 @@ private Configuration getJobConfiguration() {
6467
String applicationTags =
6568
HadoopJobUtils.constructHadoopTags(getJobProps(), tagKeys);
6669
tonyConf.set(TONY_APPLICATION_TAGS, applicationTags);
70+
71+
// inject default jvm options
72+
updateDefaultTonyJvmOpts(tonyConf);
6773
return tonyConf;
6874
}
6975

76+
private void updateDefaultTonyJvmOpts(Configuration conf) {
77+
String defaultTonyJvmOpts = getJobProps().get(TONY_DEFAULT_JVM_OPTS);
78+
if (defaultTonyJvmOpts == null) {
79+
return;
80+
}
81+
82+
// tony am jvm opts
83+
String tonyTaskAmJvmOpts = conf.get(TONY_TASK_AM_JVM_OPTS, "");
84+
if (!tonyTaskAmJvmOpts.isEmpty()) {
85+
tonyTaskAmJvmOpts += " " + defaultTonyJvmOpts;
86+
} else {
87+
tonyTaskAmJvmOpts += defaultTonyJvmOpts;
88+
}
89+
conf.set(TONY_TASK_AM_JVM_OPTS, tonyTaskAmJvmOpts);
90+
91+
// tony executor jvm opts
92+
String tonyTaskExecutorJvmOpts = conf.get(TONY_TASK_EXECUTOR_JVM_OPTS, "");
93+
if (!tonyTaskExecutorJvmOpts.isEmpty()) {
94+
tonyTaskExecutorJvmOpts += " " + defaultTonyJvmOpts;
95+
} else {
96+
tonyTaskExecutorJvmOpts += defaultTonyJvmOpts;
97+
}
98+
conf.set(TONY_TASK_EXECUTOR_JVM_OPTS, tonyTaskExecutorJvmOpts);
99+
}
100+
70101
public Configuration getTonyJobConf() {
71102
return tonyConf;
72103
}

tony-azkaban/src/test/java/com/linkedin/tony/azkaban/TestTonyJob.java

+4
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,8 @@ public void testFlowInfoPropagation() {
9595
jobProps.put(CommonJobProperties.FLOW_ID, "1");
9696
jobProps.put(CommonJobProperties.EXEC_ID, "0");
9797
jobProps.put(TonyJob.AZKABAN_WEB_HOST, "localhost");
98+
jobProps.put(TonyJob.TONY_TASK_EXECUTOR_JVM_OPTS, "-Duser.jvm.opts=opts");
99+
jobProps.put(TonyJob.TONY_DEFAULT_JVM_OPTS, "-Dlog4j2.formatMsgNoLookups=true");
98100

99101
final TonyJob tonyJob = new TonyJob("test_tony_job", new Props(), jobProps, log) {
100102
@Override
@@ -119,6 +121,8 @@ public String getWorkingDirectory() {
119121
Assert.assertEquals(parsedTags.get(CommonJobProperties.FLOW_ID), "1");
120122
Assert.assertEquals(parsedTags.get(CommonJobProperties.PROJECT_NAME), "unit_test");
121123
Assert.assertEquals(parsedTags.get(TonyJob.AZKABAN_WEB_HOST), "localhost");
124+
Assert.assertEquals(conf.get(TonyJob.TONY_TASK_AM_JVM_OPTS), "-Dlog4j2.formatMsgNoLookups=true");
125+
Assert.assertEquals(conf.get(TonyJob.TONY_TASK_EXECUTOR_JVM_OPTS), "-Duser.jvm.opts=opts -Dlog4j2.formatMsgNoLookups=true");
122126
}
123127

124128
@Test

tony-core/src/main/java/com/linkedin/tony/TonyClient.java

+4
Original file line numberDiff line numberDiff line change
@@ -933,6 +933,10 @@ String buildCommand(long amMemory) {
933933
if (org.apache.commons.lang3.StringUtils.isNotBlank(amJvm)) {
934934
arguments.add(amJvm);
935935
}
936+
String defaultJvm = tonyConf.get(TonyConfigurationKeys.TASK_DEFAULT_JVM_OPTS, "");
937+
if (!defaultJvm.isEmpty()) {
938+
arguments.add(defaultJvm);
939+
}
936940
// Set class name
937941
arguments.add("com.linkedin.tony.ApplicationMaster");
938942

tony-core/src/main/java/com/linkedin/tony/TonyConfigurationKeys.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -155,7 +155,7 @@ private TonyConfigurationKeys() {
155155
public static final String TASK_EXECUTOR_JVM_OPTS = TONY_TASK_PREFIX + "executor.jvm.opts";
156156
public static final String DEFAULT_TASK_EXECUTOR_JVM_OPTS = "-Xmx1536m";
157157

158-
public static final String TASK_EXECUTOR_JAVA_AGENT = TONY_TASK_PREFIX + "executor.java.agent";
158+
public static final String TASK_DEFAULT_JVM_OPTS = TONY_TASK_PREFIX + "default.jvm.opts";
159159

160160
public static final String TASK_HEARTBEAT_INTERVAL_MS = TONY_TASK_PREFIX + "heartbeat-interval-ms";
161161
public static final int DEFAULT_TASK_HEARTBEAT_INTERVAL_MS = 1000;

tony-core/src/main/java/com/linkedin/tony/TonySession.java

+3-4
Original file line numberDiff line numberDiff line change
@@ -440,10 +440,9 @@ public Builder setTonyConf(Configuration tonyConf) {
440440

441441
// Appends default jvm arguments to task executor job
442442
private String appendDefaultJVMArgs(String jvmArgs) {
443-
jvmArgs += " -Dlog4j2.formatMsgNoLookups=true";
444-
String tonyTaskExecutorJavaAgent = tonyConf.get(TonyConfigurationKeys.TASK_EXECUTOR_JAVA_AGENT, "");
445-
if (!tonyTaskExecutorJavaAgent.isEmpty()) {
446-
jvmArgs += " -javaagent:" + tonyTaskExecutorJavaAgent;
443+
String tonyTaskDefaultJVMOpts = tonyConf.get(TonyConfigurationKeys.TASK_DEFAULT_JVM_OPTS, "");
444+
if (!tonyTaskDefaultJVMOpts.isEmpty()) {
445+
jvmArgs += " " + tonyTaskDefaultJVMOpts;
447446
}
448447
return jvmArgs;
449448
}

tony-core/src/test/java/com/linkedin/tony/TestTonyConfigurationFields.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ public void initializeMemberVariables() {
4949
configurationPropsToSkipCompare.add(TonyConfigurationKeys.APPLICATION_TRAINING_STAGE);
5050
configurationPropsToSkipCompare.add(TonyConfigurationKeys.APPLICATION_HADOOP_LOCATION);
5151
configurationPropsToSkipCompare.add(TonyConfigurationKeys.APPLICATION_HADOOP_CLASSPATH);
52-
configurationPropsToSkipCompare.add(TonyConfigurationKeys.TASK_EXECUTOR_JAVA_AGENT);
52+
configurationPropsToSkipCompare.add(TonyConfigurationKeys.TASK_DEFAULT_JVM_OPTS);
5353
configurationPropsToSkipCompare.add(TonyConfigurationKeys.TENSORBOARD_LOG_DIR);
5454
configurationPropsToSkipCompare.add(TonyConfigurationKeys.PYTHON_EXEC_PATH);
5555
configurationPropsToSkipCompare.add(TonyConfigurationKeys.TB_VCORE);

0 commit comments

Comments
 (0)