You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@oozie.apache.org by an...@apache.org on 2018/05/08 15:19:39 UTC
oozie git commit: OOZIE-3232 Reduce heap waste by reducing duplicate
string count (Misha Dmitriev via andras.piros)
Repository: oozie
Updated Branches:
refs/heads/master 553d5d4db -> 7804e7447
OOZIE-3232 Reduce heap waste by reducing duplicate string count (Misha Dmitriev via andras.piros)
Project: http://git-wip-us.apache.org/repos/asf/oozie/repo
Commit: http://git-wip-us.apache.org/repos/asf/oozie/commit/7804e744
Tree: http://git-wip-us.apache.org/repos/asf/oozie/tree/7804e744
Diff: http://git-wip-us.apache.org/repos/asf/oozie/diff/7804e744
Branch: refs/heads/master
Commit: 7804e74474130c2905c3404740ab467055fe16cb
Parents: 553d5d4
Author: Andras Piros <an...@cloudera.com>
Authored: Tue May 8 17:15:17 2018 +0200
Committer: Andras Piros <an...@cloudera.com>
Committed: Tue May 8 17:15:17 2018 +0200
----------------------------------------------------------------------
.../main/java/org/apache/oozie/StringBlob.java | 10 +++---
.../org/apache/oozie/WorkflowActionBean.java | 21 ++++++------
.../java/org/apache/oozie/WorkflowJobBean.java | 35 ++++++--------------
.../oozie/command/wf/ActionEndXCommand.java | 3 +-
.../oozie/service/CallableQueueService.java | 3 +-
.../java/org/apache/oozie/util/StringUtils.java | 13 ++++++++
release-log.txt | 1 +
7 files changed, 45 insertions(+), 41 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/oozie/blob/7804e744/core/src/main/java/org/apache/oozie/StringBlob.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/oozie/StringBlob.java b/core/src/main/java/org/apache/oozie/StringBlob.java
index cb5aff4..b453f09 100644
--- a/core/src/main/java/org/apache/oozie/StringBlob.java
+++ b/core/src/main/java/org/apache/oozie/StringBlob.java
@@ -21,10 +21,10 @@ package org.apache.oozie;
import java.io.ByteArrayInputStream;
import java.io.DataInputStream;
import java.io.IOException;
-import java.io.UnsupportedEncodingException;
import org.apache.oozie.compression.CodecFactory;
import org.apache.oozie.compression.CompressionCodec;
+import org.apache.oozie.util.StringUtils;
/**
* StringBlob to maintain compress and uncompressed data
@@ -49,7 +49,7 @@ public class StringBlob {
* @param inputString the string
*/
public StringBlob(String inputString) {
- this.string = inputString;
+ this.string = StringUtils.intern(inputString);
this.rawBlob = null;
}
@@ -59,7 +59,7 @@ public class StringBlob {
* @param str the string
*/
public void setString(String str) {
- this.string = str;
+ this.string = StringUtils.intern(str);
this.rawBlob = null;
}
@@ -79,10 +79,10 @@ public class StringBlob {
DataInputStream dais = new DataInputStream(new ByteArrayInputStream(rawBlob));
CompressionCodec codec = CodecFactory.getDeCompressionCodec(dais);
if (codec != null) {
- string = codec.decompressToString(dais);
+ string = StringUtils.intern(codec.decompressToString(dais));
}
else {
- string = new String(rawBlob, CodecFactory.UTF_8_ENCODING);
+ string = StringUtils.intern((new String(rawBlob, CodecFactory.UTF_8_ENCODING)));
}
dais.close();
http://git-wip-us.apache.org/repos/asf/oozie/blob/7804e744/core/src/main/java/org/apache/oozie/WorkflowActionBean.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/oozie/WorkflowActionBean.java b/core/src/main/java/org/apache/oozie/WorkflowActionBean.java
index 32bebae..2d75e16 100644
--- a/core/src/main/java/org/apache/oozie/WorkflowActionBean.java
+++ b/core/src/main/java/org/apache/oozie/WorkflowActionBean.java
@@ -44,6 +44,7 @@ import org.apache.oozie.client.rest.JsonUtils;
import org.apache.oozie.util.DateUtils;
import org.apache.oozie.util.ParamChecker;
import org.apache.oozie.util.PropertiesUtils;
+import org.apache.oozie.util.StringUtils;
import org.apache.oozie.util.WritableUtils;
import org.apache.openjpa.persistence.jdbc.Index;
import org.apache.openjpa.persistence.jdbc.Strategy;
@@ -372,7 +373,7 @@ public class WorkflowActionBean implements Writable, WorkflowAction, JsonBean {
setTrackerUri(WritableUtils.readStr(dataInput));
setConsoleUrl(WritableUtils.readStr(dataInput));
setErrorInfo(WritableUtils.readStr(dataInput), WritableUtils.readStr(dataInput));
- wfId = WritableUtils.readStr(dataInput);
+ setJobId(WritableUtils.readStr(dataInput));
executionPath = WritableUtils.readStr(dataInput);
pending = dataInput.readInt();
d = dataInput.readLong();
@@ -677,7 +678,7 @@ public class WorkflowActionBean implements Writable, WorkflowAction, JsonBean {
* @param id jobId;
*/
public void setJobId(String id) {
- this.wfId = id;
+ this.wfId = StringUtils.intern(id);
}
public void setSlaXml(String slaXmlStr) {
@@ -707,7 +708,7 @@ public class WorkflowActionBean implements Writable, WorkflowAction, JsonBean {
* @param val the status
*/
public void setStatus(Status val) {
- this.statusStr = val.toString();
+ this.statusStr = StringUtils.intern(val.toString());
}
@Override
@@ -721,7 +722,7 @@ public class WorkflowActionBean implements Writable, WorkflowAction, JsonBean {
* @param statusStr the status
*/
public void setStatusStr(String statusStr) {
- this.statusStr = statusStr;
+ this.statusStr = StringUtils.intern(statusStr);
}
/**
@@ -920,7 +921,7 @@ public class WorkflowActionBean implements Writable, WorkflowAction, JsonBean {
}
public void setId(String id) {
- this.id = id;
+ this.id = StringUtils.intern(id);
}
public Timestamp getCreatedTimestamp() {
@@ -941,7 +942,7 @@ public class WorkflowActionBean implements Writable, WorkflowAction, JsonBean {
}
public void setName(String name) {
- this.name = name;
+ this.name = StringUtils.intern(name);
}
@Override
@@ -959,7 +960,7 @@ public class WorkflowActionBean implements Writable, WorkflowAction, JsonBean {
}
public void setType(String type) {
- this.type = type;
+ this.type = StringUtils.intern(type);
}
@Override
@@ -1108,7 +1109,7 @@ public class WorkflowActionBean implements Writable, WorkflowAction, JsonBean {
* @param externalId the id
*/
public void setExternalId(String externalId) {
- this.externalId = externalId;
+ this.externalId = StringUtils.intern(externalId);
}
@Override
@@ -1122,7 +1123,7 @@ public class WorkflowActionBean implements Writable, WorkflowAction, JsonBean {
* @param externalStatus the external status
*/
public void setExternalStatus(String externalStatus) {
- this.externalStatus = externalStatus;
+ this.externalStatus = StringUtils.intern(externalStatus);
}
@Override
@@ -1136,7 +1137,7 @@ public class WorkflowActionBean implements Writable, WorkflowAction, JsonBean {
* @param trackerUri the URI
*/
public void setTrackerUri(String trackerUri) {
- this.trackerUri = trackerUri;
+ this.trackerUri = StringUtils.intern(trackerUri);
}
@Override
http://git-wip-us.apache.org/repos/asf/oozie/blob/7804e744/core/src/main/java/org/apache/oozie/WorkflowJobBean.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/oozie/WorkflowJobBean.java b/core/src/main/java/org/apache/oozie/WorkflowJobBean.java
index 22a01d3..1e55884 100644
--- a/core/src/main/java/org/apache/oozie/WorkflowJobBean.java
+++ b/core/src/main/java/org/apache/oozie/WorkflowJobBean.java
@@ -25,6 +25,7 @@ import org.apache.oozie.client.rest.JsonBean;
import org.apache.oozie.client.rest.JsonTags;
import org.apache.oozie.client.rest.JsonUtils;
import org.apache.oozie.util.DateUtils;
+import org.apache.oozie.util.StringUtils;
import org.apache.oozie.util.WritableUtils;
import org.apache.oozie.workflow.WorkflowInstance;
import org.apache.oozie.workflow.lite.LiteWorkflowInstance;
@@ -437,13 +438,9 @@ public class WorkflowJobBean implements Writable, WorkflowJob, JsonBean {
return endTimestamp;
}
- public void setStatusStr (String statusStr) {
- this.statusStr = statusStr;
- }
+ public void setStatusStr (String statusStr) { this.statusStr = StringUtils.intern(statusStr); }
- public void setStatus(Status val) {
- this.statusStr = val.toString();
- }
+ public void setStatus(Status val) { this.statusStr = StringUtils.intern(val.toString()); }
@Override
public Status getStatus() {
@@ -455,7 +452,7 @@ public class WorkflowJobBean implements Writable, WorkflowJob, JsonBean {
}
public void setExternalId(String externalId) {
- this.externalId = externalId;
+ this.externalId = StringUtils.intern(externalId);
}
@Override
@@ -533,25 +530,19 @@ public class WorkflowJobBean implements Writable, WorkflowJob, JsonBean {
return appPath;
}
- public void setAppPath(String appPath) {
- this.appPath = appPath;
- }
+ public void setAppPath(String appPath) { this.appPath = StringUtils.intern(appPath); }
public String getAppName() {
return appName;
}
- public void setAppName(String appName) {
- this.appName = appName;
- }
+ public void setAppName(String appName) { this.appName = StringUtils.intern(appName); }
public String getId() {
return id;
}
- public void setId(String id) {
- this.id = id;
- }
+ public void setId(String id) { this.id = StringUtils.intern(id); }
public String getConf() {
return conf == null ? null : conf.getString();
@@ -578,9 +569,7 @@ public class WorkflowJobBean implements Writable, WorkflowJob, JsonBean {
return user;
}
- public void setUser(String user) {
- this.user = user;
- }
+ public void setUser(String user) { this.user = StringUtils.intern(user); }
public String getGroup() {
return group;
@@ -592,7 +581,7 @@ public class WorkflowJobBean implements Writable, WorkflowJob, JsonBean {
}
public void setGroup(String group) {
- this.group = group;
+ this.group = StringUtils.intern(group);
}
public int getRun() {
@@ -628,9 +617,7 @@ public class WorkflowJobBean implements Writable, WorkflowJob, JsonBean {
*
* @param parentId the Parent Action id
*/
- public void setParentId(String parentId) {
- this.parentId = parentId;
- }
+ public void setParentId(String parentId) { this.parentId = StringUtils.intern(parentId); }
/**
* Set the workflow job console URL.
@@ -638,7 +625,7 @@ public class WorkflowJobBean implements Writable, WorkflowJob, JsonBean {
* @param consoleUrl the workflow job console URL.
*/
public void setConsoleUrl(String consoleUrl) {
- this.consoleUrl = consoleUrl;
+ this.consoleUrl = StringUtils.intern(consoleUrl);
}
@SuppressWarnings("unchecked")
http://git-wip-us.apache.org/repos/asf/oozie/blob/7804e744/core/src/main/java/org/apache/oozie/command/wf/ActionEndXCommand.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/oozie/command/wf/ActionEndXCommand.java b/core/src/main/java/org/apache/oozie/command/wf/ActionEndXCommand.java
index ef0ed66..8bf4fc7 100644
--- a/core/src/main/java/org/apache/oozie/command/wf/ActionEndXCommand.java
+++ b/core/src/main/java/org/apache/oozie/command/wf/ActionEndXCommand.java
@@ -54,6 +54,7 @@ import org.apache.oozie.service.Services;
import org.apache.oozie.service.UUIDService;
import org.apache.oozie.util.Instrumentation;
import org.apache.oozie.util.LogUtils;
+import org.apache.oozie.util.StringUtils;
import org.apache.oozie.util.XLog;
import org.apache.oozie.util.db.SLADbXOperations;
import org.apache.oozie.workflow.WorkflowInstance;
@@ -74,7 +75,7 @@ public class ActionEndXCommand extends ActionXCommand<Void> {
public ActionEndXCommand(String actionId, String type) {
super("action.end", type, 0);
- this.actionId = actionId;
+ this.actionId = StringUtils.intern(actionId);
this.jobId = Services.get().get(UUIDService.class).getId(actionId);
}
http://git-wip-us.apache.org/repos/asf/oozie/blob/7804e744/core/src/main/java/org/apache/oozie/service/CallableQueueService.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/oozie/service/CallableQueueService.java b/core/src/main/java/org/apache/oozie/service/CallableQueueService.java
index cfd208a..7b89964 100644
--- a/core/src/main/java/org/apache/oozie/service/CallableQueueService.java
+++ b/core/src/main/java/org/apache/oozie/service/CallableQueueService.java
@@ -45,6 +45,7 @@ import org.apache.oozie.util.NamedThreadFactory;
import org.apache.oozie.util.PollablePriorityDelayQueue;
import org.apache.oozie.util.PriorityDelayQueue;
import org.apache.oozie.util.PriorityDelayQueue.QueueElement;
+import org.apache.oozie.util.StringUtils;
import org.apache.oozie.util.XCallable;
import org.apache.oozie.util.XLog;
@@ -279,7 +280,7 @@ public class CallableQueueService implements Service, Instrumentable {
separator = ",";
}
sb.append("]");
- name = sb.toString();
+ name = StringUtils.intern(sb.toString());
}
@Override
http://git-wip-us.apache.org/repos/asf/oozie/blob/7804e744/core/src/main/java/org/apache/oozie/util/StringUtils.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/oozie/util/StringUtils.java b/core/src/main/java/org/apache/oozie/util/StringUtils.java
index 280c83a..26079be 100644
--- a/core/src/main/java/org/apache/oozie/util/StringUtils.java
+++ b/core/src/main/java/org/apache/oozie/util/StringUtils.java
@@ -37,4 +37,17 @@ public class StringUtils {
}
return str;
}
+
+ /**
+ * Return the internalized string, or null if the given string is null.
+ * @param str The string to intern
+ * @return The identical string cached in the JVM string pool.
+ */
+ public static String intern(String str) {
+ if (str == null) {
+ return null;
+ }
+ return str.intern();
+ }
}
+
http://git-wip-us.apache.org/repos/asf/oozie/blob/7804e744/release-log.txt
----------------------------------------------------------------------
diff --git a/release-log.txt b/release-log.txt
index 9f148b8..9c066a7 100644
--- a/release-log.txt
+++ b/release-log.txt
@@ -1,5 +1,6 @@
-- Oozie 5.1.0 release (trunk - unreleased)
+OOZIE-3232 Reduce heap waste by reducing duplicate string count (Misha Dmitriev via andras.piros)
OOZIE-2914 Consolidate trim calls (Jan Hentschel via andras.piros)
OOZIE-2934 [sharelib/spark] Fix Findbugs error (Jan Hentschel via andras.piros)
OOZIE-3225 [Kerberos] Webconsole disabled message shown instead of 401 error (kmarton via andras.piros)