You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tajo.apache.org by ji...@apache.org on 2015/07/29 09:43:22 UTC
tajo git commit: TAJO-1715: Precompute the hash value of various
kinds of ids.
Repository: tajo
Updated Branches:
refs/heads/master 2950d8ec6 -> 33f4b7a06
TAJO-1715: Precompute the hash value of various kinds of ids.
Closes #658
Project: http://git-wip-us.apache.org/repos/asf/tajo/repo
Commit: http://git-wip-us.apache.org/repos/asf/tajo/commit/33f4b7a0
Tree: http://git-wip-us.apache.org/repos/asf/tajo/tree/33f4b7a0
Diff: http://git-wip-us.apache.org/repos/asf/tajo/diff/33f4b7a0
Branch: refs/heads/master
Commit: 33f4b7a061d0b4f7867f89b32b880f686fe1dc51
Parents: 2950d8e
Author: Jihoon Son <ji...@apache.org>
Authored: Wed Jul 29 16:42:49 2015 +0900
Committer: Jihoon Son <ji...@apache.org>
Committed: Wed Jul 29 16:42:49 2015 +0900
----------------------------------------------------------------------
CHANGES | 2 ++
tajo-common/src/main/java/org/apache/tajo/TaskAttemptId.java | 4 +++-
tajo-common/src/main/java/org/apache/tajo/TaskId.java | 4 +++-
tajo-common/src/main/java/org/apache/tajo/storage/VTuple.java | 4 ++--
.../org/apache/tajo/engine/planner/physical/KeyTuple.java | 7 ++++++-
.../org/apache/tajo/engine/planner/physical/TupleMap.java | 6 +++++-
6 files changed, 21 insertions(+), 6 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tajo/blob/33f4b7a0/CHANGES
----------------------------------------------------------------------
diff --git a/CHANGES b/CHANGES
index 01116d3..721f8ff 100644
--- a/CHANGES
+++ b/CHANGES
@@ -32,6 +32,8 @@ Release 0.11.0 - unreleased
IMPROVEMENT
+ TAJO-1715: Precompute the hash value of various kinds of ids. (jihoon)
+
TAJO-1703: Remove hardcoded value in NodeStatusUpdater. (jinho)
TAJO-1701: Remove forward or non-forward query concept in TajoClient.
http://git-wip-us.apache.org/repos/asf/tajo/blob/33f4b7a0/tajo-common/src/main/java/org/apache/tajo/TaskAttemptId.java
----------------------------------------------------------------------
diff --git a/tajo-common/src/main/java/org/apache/tajo/TaskAttemptId.java b/tajo-common/src/main/java/org/apache/tajo/TaskAttemptId.java
index 78c6325..3ce8b7e 100644
--- a/tajo-common/src/main/java/org/apache/tajo/TaskAttemptId.java
+++ b/tajo-common/src/main/java/org/apache/tajo/TaskAttemptId.java
@@ -25,6 +25,7 @@ public class TaskAttemptId implements Comparable<TaskAttemptId> {
private TaskId taskId;
private int id;
+ private final int hashValue;
public TaskId getTaskId() {
return taskId;
@@ -41,6 +42,7 @@ public class TaskAttemptId implements Comparable<TaskAttemptId> {
public TaskAttemptId(TaskId taskId, int id) {
this.taskId = taskId;
this.id = id;
+ this.hashValue = Objects.hashCode(taskId, id);
}
public TaskAttemptId(TajoIdProtos.TaskAttemptIdProto proto) {
@@ -80,7 +82,7 @@ public class TaskAttemptId implements Comparable<TaskAttemptId> {
@Override
public int hashCode() {
- return Objects.hashCode(taskId, id);
+ return hashValue;
}
@Override
http://git-wip-us.apache.org/repos/asf/tajo/blob/33f4b7a0/tajo-common/src/main/java/org/apache/tajo/TaskId.java
----------------------------------------------------------------------
diff --git a/tajo-common/src/main/java/org/apache/tajo/TaskId.java b/tajo-common/src/main/java/org/apache/tajo/TaskId.java
index e1db67d..54504d9 100644
--- a/tajo-common/src/main/java/org/apache/tajo/TaskId.java
+++ b/tajo-common/src/main/java/org/apache/tajo/TaskId.java
@@ -25,10 +25,12 @@ public class TaskId implements Comparable<TaskId> {
private ExecutionBlockId executionBlockId;
private int id;
+ private final int hashValue;
public TaskId(ExecutionBlockId executionBlockId, int id) {
this.executionBlockId = executionBlockId;
this.id = id;
+ this.hashValue = Objects.hashCode(executionBlockId, id);
}
public TaskId(TajoIdProtos.TaskIdProto proto) {
@@ -76,7 +78,7 @@ public class TaskId implements Comparable<TaskId> {
@Override
public int hashCode() {
- return Objects.hashCode(executionBlockId, id);
+ return hashValue;
}
@Override
http://git-wip-us.apache.org/repos/asf/tajo/blob/33f4b7a0/tajo-common/src/main/java/org/apache/tajo/storage/VTuple.java
----------------------------------------------------------------------
diff --git a/tajo-common/src/main/java/org/apache/tajo/storage/VTuple.java b/tajo-common/src/main/java/org/apache/tajo/storage/VTuple.java
index d7b648d..12570d7 100644
--- a/tajo-common/src/main/java/org/apache/tajo/storage/VTuple.java
+++ b/tajo-common/src/main/java/org/apache/tajo/storage/VTuple.java
@@ -221,8 +221,8 @@ public class VTuple implements Tuple, Cloneable {
public VTuple clone() throws CloneNotSupportedException {
VTuple tuple = (VTuple) super.clone();
- tuple.values = new Datum[size()];
- System.arraycopy(values, 0, tuple.values, 0, size()); //shallow copy
+ tuple.values = new Datum[values.length];
+ System.arraycopy(values, 0, tuple.values, 0, values.length); //shallow copy
return tuple;
}
http://git-wip-us.apache.org/repos/asf/tajo/blob/33f4b7a0/tajo-core/src/main/java/org/apache/tajo/engine/planner/physical/KeyTuple.java
----------------------------------------------------------------------
diff --git a/tajo-core/src/main/java/org/apache/tajo/engine/planner/physical/KeyTuple.java b/tajo-core/src/main/java/org/apache/tajo/engine/planner/physical/KeyTuple.java
index 39b13f8..0c4267e 100644
--- a/tajo-core/src/main/java/org/apache/tajo/engine/planner/physical/KeyTuple.java
+++ b/tajo-core/src/main/java/org/apache/tajo/engine/planner/physical/KeyTuple.java
@@ -27,7 +27,7 @@ import org.apache.tajo.storage.VTuple;
* Datum.hashCode() uses MurmurHash, so its cost is not so cheap.
*
*/
-public class KeyTuple extends VTuple {
+public class KeyTuple extends VTuple implements Cloneable {
private int hashCode;
public KeyTuple(int size) {
@@ -74,6 +74,11 @@ public class KeyTuple extends VTuple {
}
@Override
+ public KeyTuple clone() throws CloneNotSupportedException {
+ return (KeyTuple) super.clone();
+ }
+
+ @Override
public int hashCode() {
return hashCode;
}
http://git-wip-us.apache.org/repos/asf/tajo/blob/33f4b7a0/tajo-core/src/main/java/org/apache/tajo/engine/planner/physical/TupleMap.java
----------------------------------------------------------------------
diff --git a/tajo-core/src/main/java/org/apache/tajo/engine/planner/physical/TupleMap.java b/tajo-core/src/main/java/org/apache/tajo/engine/planner/physical/TupleMap.java
index 6f72522..8c845b5 100644
--- a/tajo-core/src/main/java/org/apache/tajo/engine/planner/physical/TupleMap.java
+++ b/tajo-core/src/main/java/org/apache/tajo/engine/planner/physical/TupleMap.java
@@ -54,7 +54,11 @@ public class TupleMap<E> extends HashMap<KeyTuple, E> {
@Override
public E put(@Nullable KeyTuple key, E value) {
if (key != null) {
- return super.put(new KeyTuple(key.getValues()), value);
+ try {
+ return super.put(key.clone(), value);
+ } catch (CloneNotSupportedException e) {
+ throw new RuntimeException(e);
+ }
} else {
return super.put(null, value);
}