You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tajo.apache.org by hy...@apache.org on 2014/08/27 13:21:13 UTC
git commit: TAJO-1020: TajoContainerProxy::assignExecutionBlock
causes NPE by race condition.
Repository: tajo
Updated Branches:
refs/heads/master 1ab39706e -> d3727c735
TAJO-1020: TajoContainerProxy::assignExecutionBlock causes NPE by race condition.
Closes #127
Project: http://git-wip-us.apache.org/repos/asf/tajo/repo
Commit: http://git-wip-us.apache.org/repos/asf/tajo/commit/d3727c73
Tree: http://git-wip-us.apache.org/repos/asf/tajo/tree/d3727c73
Diff: http://git-wip-us.apache.org/repos/asf/tajo/diff/d3727c73
Branch: refs/heads/master
Commit: d3727c73560f4d4c0fd3d2ead84b577e6f3a51b1
Parents: 1ab3970
Author: Hyunsik Choi <hy...@apache.org>
Authored: Wed Aug 27 20:19:10 2014 +0900
Committer: Hyunsik Choi <hy...@apache.org>
Committed: Wed Aug 27 20:19:10 2014 +0900
----------------------------------------------------------------------
CHANGES | 3 +++
.../java/org/apache/tajo/util/KeyValueSet.java | 17 +++++------------
2 files changed, 8 insertions(+), 12 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tajo/blob/d3727c73/CHANGES
----------------------------------------------------------------------
diff --git a/CHANGES b/CHANGES
index 77c53d5..269c307 100644
--- a/CHANGES
+++ b/CHANGES
@@ -127,6 +127,9 @@ Release 0.9.0 - unreleased
BUG FIXES
+ TAJO-1020: TajoContainerProxy::assignExecutionBlock causes NPE by race.
+ (hyunsik)
+
TAJO-986: Task scheduler gets incorrect task size. (Mai Hai Thanh via jihoon)
TAJO-873: Query status is still RUNNING after session expired.
http://git-wip-us.apache.org/repos/asf/tajo/blob/d3727c73/tajo-common/src/main/java/org/apache/tajo/util/KeyValueSet.java
----------------------------------------------------------------------
diff --git a/tajo-common/src/main/java/org/apache/tajo/util/KeyValueSet.java b/tajo-common/src/main/java/org/apache/tajo/util/KeyValueSet.java
index 6edb547..c1e7092 100644
--- a/tajo-common/src/main/java/org/apache/tajo/util/KeyValueSet.java
+++ b/tajo-common/src/main/java/org/apache/tajo/util/KeyValueSet.java
@@ -37,9 +37,7 @@ public class KeyValueSet implements ProtoObject<KeyValueSetProto>, Cloneable, Gs
public static final String TRUE_STR = "true";
public static final String FALSE_STR = "false";
- private KeyValueSetProto.Builder builder = KeyValueSetProto.newBuilder();
-
- @Expose private Map<String,String> keyVals;
+ @Expose private Map<String,String> keyVals;
public KeyValueSet() {
keyVals = TUtil.newHashMap();
@@ -221,27 +219,22 @@ public class KeyValueSet implements ProtoObject<KeyValueSetProto>, Cloneable, Gs
@Override
public Object clone() throws CloneNotSupportedException {
KeyValueSet keyValueSet = (KeyValueSet) super.clone();
- keyValueSet.builder = KeyValueSetProto.newBuilder();
keyValueSet.keyVals = keyVals != null ? new HashMap<String, String>(keyVals) : null;
return keyValueSet;
}
@Override
public KeyValueSetProto getProto() {
- if (builder == null) {
- builder = KeyValueSetProto.newBuilder();
- } else {
- builder.clear();
- }
+ KeyValueSetProto.Builder builder = KeyValueSetProto.newBuilder();
- KeyValueProto.Builder kvBuilder;
+ KeyValueProto.Builder kvBuilder = KeyValueProto.newBuilder();
if(this.keyVals != null) {
for(Entry<String,String> kv : keyVals.entrySet()) {
- kvBuilder = KeyValueProto.newBuilder();
kvBuilder.setKey(kv.getKey());
-
kvBuilder.setValue(kv.getValue());
builder.addKeyval(kvBuilder.build());
+
+ kvBuilder.clear();
}
}
return builder.build();