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 2015/02/24 04:48:42 UTC

[1/3] tajo git commit: TAJO-1356: Race conditions in QueryInProgress. (jinho)

Repository: tajo
Updated Branches:
  refs/heads/branch-0.10.0-rc1 [created] a19912461


TAJO-1356: Race conditions in QueryInProgress. (jinho)

Closes #386


Project: http://git-wip-us.apache.org/repos/asf/tajo/repo
Commit: http://git-wip-us.apache.org/repos/asf/tajo/commit/1c6665ac
Tree: http://git-wip-us.apache.org/repos/asf/tajo/tree/1c6665ac
Diff: http://git-wip-us.apache.org/repos/asf/tajo/diff/1c6665ac

Branch: refs/heads/branch-0.10.0-rc1
Commit: 1c6665ac65aaabcd78e5842e5129cddd9b8b0f11
Parents: 1c2de65
Author: jhkim <jh...@apache.org>
Authored: Mon Feb 23 20:15:48 2015 +0900
Committer: Hyunsik Choi <hy...@apache.org>
Committed: Mon Feb 23 17:50:37 2015 -0800

----------------------------------------------------------------------
 CHANGES                                         |  2 +
 .../org/apache/tajo/master/QueryInProgress.java | 70 +++++++++++++-------
 .../org/apache/tajo/master/QueryManager.java    |  8 +--
 .../apache/tajo/querymaster/QueryJobEvent.java  |  1 -
 4 files changed, 48 insertions(+), 33 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tajo/blob/1c6665ac/CHANGES
----------------------------------------------------------------------
diff --git a/CHANGES b/CHANGES
index 0166397..ec03000 100644
--- a/CHANGES
+++ b/CHANGES
@@ -185,6 +185,8 @@ Release 0.10.0 - unreleased
 
   BUG FIXES
 
+    TAJO-1356: Race conditions in QueryInProgress. (jinho)
+
     TAJO-1277: GreedyHeuristicJoinOrderAlgorithm sometimes wrongly assumes 
     associativity of joins. (Keuntae Park via jihoon)
 

http://git-wip-us.apache.org/repos/asf/tajo/blob/1c6665ac/tajo-core/src/main/java/org/apache/tajo/master/QueryInProgress.java
----------------------------------------------------------------------
diff --git a/tajo-core/src/main/java/org/apache/tajo/master/QueryInProgress.java b/tajo-core/src/main/java/org/apache/tajo/master/QueryInProgress.java
index 45bdc5a..9e50797 100644
--- a/tajo-core/src/main/java/org/apache/tajo/master/QueryInProgress.java
+++ b/tajo-core/src/main/java/org/apache/tajo/master/QueryInProgress.java
@@ -31,7 +31,6 @@ import org.apache.tajo.ipc.TajoWorkerProtocol;
 import org.apache.tajo.ipc.TajoWorkerProtocol.QueryExecutionRequestProto;
 import org.apache.tajo.master.rm.WorkerResourceManager;
 import org.apache.tajo.plan.logical.LogicalRootNode;
-import org.apache.tajo.querymaster.QueryJobEvent;
 import org.apache.tajo.rpc.NettyClientBase;
 import org.apache.tajo.rpc.NullCallback;
 import org.apache.tajo.rpc.RpcConnectionPool;
@@ -41,6 +40,9 @@ import org.apache.tajo.util.NetUtils;
 
 import java.net.InetSocketAddress;
 import java.util.concurrent.atomic.AtomicBoolean;
+import java.util.concurrent.locks.Lock;
+import java.util.concurrent.locks.ReadWriteLock;
+import java.util.concurrent.locks.ReentrantReadWriteLock;
 
 public class QueryInProgress {
   private static final Log LOG = LogFactory.getLog(QueryInProgress.class.getName());
@@ -63,6 +65,9 @@ public class QueryInProgress {
 
   private QueryMasterProtocolService queryMasterRpcClient;
 
+  private final Lock readLock;
+  private final Lock writeLock;
+
   public QueryInProgress(
       TajoMaster.MasterContext masterContext,
       Session session,
@@ -76,16 +81,23 @@ public class QueryInProgress {
 
     queryInfo = new QueryInfo(queryId, queryContext, sql, jsonExpr);
     queryInfo.setStartTime(System.currentTimeMillis());
+
+    ReadWriteLock readWriteLock = new ReentrantReadWriteLock();
+    this.readLock = readWriteLock.readLock();
+    this.writeLock = readWriteLock.writeLock();
   }
 
-  public synchronized void kill() {
-    getQueryInfo().setQueryState(TajoProtos.QueryState.QUERY_KILLED);
-    if (queryMasterRpcClient != null) {
-      try {
+  public void kill() {
+    writeLock.lock();
+    try {
+      getQueryInfo().setQueryState(TajoProtos.QueryState.QUERY_KILLED);
+      if (queryMasterRpcClient != null) {
         queryMasterRpcClient.killQuery(null, queryId.getProto(), NullCallback.get());
-      } catch (Throwable e) {
-        catchException(e);
       }
+    } catch (Throwable e) {
+      catchException(e);
+    } finally {
+      writeLock.unlock();
     }
   }
 
@@ -112,14 +124,14 @@ public class QueryInProgress {
 
   public boolean startQueryMaster() {
     try {
+      writeLock.lockInterruptibly();
       LOG.info("Initializing QueryInProgress for QueryID=" + queryId);
       WorkerResourceManager resourceManager = masterContext.getResourceManager();
       WorkerAllocatedResource resource = resourceManager.allocateQueryMaster(this);
 
       // if no resource to allocate a query master
       if(resource == null) {
-        LOG.info("No Available Resources for QueryMaster");
-        return false;
+        throw new RuntimeException("No Available Resources for QueryMaster");
       }
 
       queryInfo.setQueryMaster(resource.getConnectionInfo().getHost());
@@ -131,6 +143,8 @@ public class QueryInProgress {
     } catch (Exception e) {
       catchException(e);
       return false;
+    } finally {
+      writeLock.unlock();
     }
   }
 
@@ -142,12 +156,14 @@ public class QueryInProgress {
     queryMasterRpcClient = queryMasterRpc.getStub();
   }
 
-  public synchronized void submmitQueryToMaster() {
+  public void submmitQueryToMaster() {
     if(querySubmitted.get()) {
       return;
     }
 
     try {
+      writeLock.lockInterruptibly();
+
       if(queryMasterRpcClient == null) {
         connectQueryMaster();
       }
@@ -171,6 +187,8 @@ public class QueryInProgress {
       getQueryInfo().setQueryState(TajoProtos.QueryState.QUERY_MASTER_LAUNCHED);
     } catch (Exception e) {
       LOG.error(e.getMessage(), e);
+    } finally {
+      writeLock.unlock();
     }
   }
 
@@ -185,7 +203,12 @@ public class QueryInProgress {
   }
 
   public QueryInfo getQueryInfo() {
-    return this.queryInfo;
+    readLock.lock();
+    try {
+      return this.queryInfo;
+    } finally {
+      readLock.unlock();
+    }
   }
 
   public boolean isStarted() {
@@ -195,17 +218,8 @@ public class QueryInProgress {
   public void heartbeat(QueryInfo queryInfo) {
     LOG.info("Received QueryMaster heartbeat:" + queryInfo);
 
-    // to avoid partial update by different heartbeats
-    synchronized (this.queryInfo) {
-
-      // terminal state will let client to retrieve a query result
-      // So, we must set the query result before changing query state
-      if (isFinishState(queryInfo.getQueryState())) {
-        if (queryInfo.hasResultdesc()) {
-          this.queryInfo.setResultDesc(queryInfo.getResultDesc());
-        }
-      }
-
+    writeLock.lock();
+    try {
       this.queryInfo.setQueryState(queryInfo.getQueryState());
       this.queryInfo.setProgress(queryInfo.getProgress());
 
@@ -220,12 +234,18 @@ public class QueryInProgress {
         LOG.warn(queryId + " failed, " + queryInfo.getLastMessage());
       }
 
-
+      // terminal state will let client to retrieve a query result
+      // So, we must set the query result before changing query state
       if (isFinishState(this.queryInfo.getQueryState())) {
+        if (queryInfo.hasResultdesc()) {
+          this.queryInfo.setResultDesc(queryInfo.getResultDesc());
+        }
+
         this.queryInfo.setFinishTime(System.currentTimeMillis());
-        masterContext.getQueryJobManager().getEventHandler().handle(
-            new QueryJobEvent(QueryJobEvent.Type.QUERY_JOB_STOP, this.queryInfo));
+        masterContext.getQueryJobManager().stopQuery(queryInfo.getQueryId());
       }
+    } finally {
+      writeLock.unlock();
     }
   }
 

http://git-wip-us.apache.org/repos/asf/tajo/blob/1c6665ac/tajo-core/src/main/java/org/apache/tajo/master/QueryManager.java
----------------------------------------------------------------------
diff --git a/tajo-core/src/main/java/org/apache/tajo/master/QueryManager.java b/tajo-core/src/main/java/org/apache/tajo/master/QueryManager.java
index 8070a7c..a502e4b 100644
--- a/tajo-core/src/main/java/org/apache/tajo/master/QueryManager.java
+++ b/tajo-core/src/main/java/org/apache/tajo/master/QueryManager.java
@@ -203,8 +203,7 @@ public class QueryManager extends CompositeService {
       dispatcher.getEventHandler().handle(new QueryJobEvent(QueryJobEvent.Type.QUERY_MASTER_START,
           queryInProgress.getQueryInfo()));
     } else {
-      dispatcher.getEventHandler().handle(new QueryJobEvent(QueryJobEvent.Type.QUERY_JOB_STOP,
-          queryInProgress.getQueryInfo()));
+      masterContext.getQueryJobManager().stopQuery(queryInProgress.getQueryId());
     }
 
     return queryInProgress.getQueryInfo();
@@ -216,19 +215,14 @@ public class QueryManager extends CompositeService {
     public void handle(QueryJobEvent event) {
       QueryInProgress queryInProgress = getQueryInProgress(event.getQueryInfo().getQueryId());
 
-
       if (queryInProgress == null) {
         LOG.warn("No query info in running queries.[" + event.getQueryInfo().getQueryId() + "]");
         return;
       }
 
-
       if (event.getType() == QueryJobEvent.Type.QUERY_MASTER_START) {
         queryInProgress.submmitQueryToMaster();
 
-      } else if (event.getType() == QueryJobEvent.Type.QUERY_JOB_STOP) {
-        stopQuery(event.getQueryInfo().getQueryId());
-
       } else if (event.getType() == QueryJobEvent.Type.QUERY_JOB_KILL) {
         scheduler.removeQuery(queryInProgress.getQueryId());
         queryInProgress.kill();

http://git-wip-us.apache.org/repos/asf/tajo/blob/1c6665ac/tajo-core/src/main/java/org/apache/tajo/querymaster/QueryJobEvent.java
----------------------------------------------------------------------
diff --git a/tajo-core/src/main/java/org/apache/tajo/querymaster/QueryJobEvent.java b/tajo-core/src/main/java/org/apache/tajo/querymaster/QueryJobEvent.java
index 27eb2b6..91a82f6 100644
--- a/tajo-core/src/main/java/org/apache/tajo/querymaster/QueryJobEvent.java
+++ b/tajo-core/src/main/java/org/apache/tajo/querymaster/QueryJobEvent.java
@@ -37,7 +37,6 @@ public class QueryJobEvent extends AbstractEvent<QueryJobEvent.Type> {
   public enum Type {
     QUERY_MASTER_START,
     QUERY_JOB_HEARTBEAT,
-    QUERY_JOB_STOP,
     QUERY_JOB_KILL
   }
 }


[2/3] tajo git commit: Changed missed versions in pom.xml and documentation.

Posted by hy...@apache.org.
Changed missed versions in pom.xml and documentation.


Project: http://git-wip-us.apache.org/repos/asf/tajo/repo
Commit: http://git-wip-us.apache.org/repos/asf/tajo/commit/29f05214
Tree: http://git-wip-us.apache.org/repos/asf/tajo/tree/29f05214
Diff: http://git-wip-us.apache.org/repos/asf/tajo/diff/29f05214

Branch: refs/heads/branch-0.10.0-rc1
Commit: 29f05214e46bc19ab0f1af9a17a2ab41932a0a1f
Parents: 1c6665a
Author: Hyunsik Choi <hy...@apache.org>
Authored: Mon Feb 23 17:19:41 2015 -0800
Committer: Hyunsik Choi <hy...@apache.org>
Committed: Mon Feb 23 17:50:45 2015 -0800

----------------------------------------------------------------------
 pom.xml                                                 | 2 +-
 tajo-catalog/tajo-catalog-drivers/tajo-hcatalog/pom.xml | 2 +-
 tajo-docs/src/main/sphinx/index.rst                     | 2 +-
 3 files changed, 3 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tajo/blob/29f05214/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 7793550..c525f47 100644
--- a/pom.xml
+++ b/pom.xml
@@ -73,7 +73,7 @@
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
     <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
-    <tajo.version>0.9.0-SNAPSHOT</tajo.version>
+    <tajo.version>0.10.0</tajo.version>
     <tajo.root>${basedir}</tajo.root>
   </properties>
 

http://git-wip-us.apache.org/repos/asf/tajo/blob/29f05214/tajo-catalog/tajo-catalog-drivers/tajo-hcatalog/pom.xml
----------------------------------------------------------------------
diff --git a/tajo-catalog/tajo-catalog-drivers/tajo-hcatalog/pom.xml b/tajo-catalog/tajo-catalog-drivers/tajo-hcatalog/pom.xml
index 28622e3..d441ade 100644
--- a/tajo-catalog/tajo-catalog-drivers/tajo-hcatalog/pom.xml
+++ b/tajo-catalog/tajo-catalog-drivers/tajo-hcatalog/pom.xml
@@ -23,7 +23,7 @@
   <parent>
     <artifactId>tajo-project</artifactId>
     <groupId>org.apache.tajo</groupId>
-    <version>0.10.0-SNAPSHOT</version>
+    <version>0.10.0</version>
     <relativePath>../../../tajo-project</relativePath>
   </parent>
   <modelVersion>4.0.0</modelVersion>

http://git-wip-us.apache.org/repos/asf/tajo/blob/29f05214/tajo-docs/src/main/sphinx/index.rst
----------------------------------------------------------------------
diff --git a/tajo-docs/src/main/sphinx/index.rst b/tajo-docs/src/main/sphinx/index.rst
index 1222f54..be530c0 100644
--- a/tajo-docs/src/main/sphinx/index.rst
+++ b/tajo-docs/src/main/sphinx/index.rst
@@ -15,7 +15,7 @@
    You can adapt this file completely to your liking, but it should at least
    contain the root `toctree` directive.
 
-Apache Tajo™ (dev) - User documentation
+Apache Tajo™ 0.10.0 - User documentation
 ===========================================================================
 
 .. warning::


[3/3] tajo git commit: [maven-release-plugin] prepare release release-0.10.0-rc1

Posted by hy...@apache.org.
[maven-release-plugin] prepare release release-0.10.0-rc1


Project: http://git-wip-us.apache.org/repos/asf/tajo/repo
Commit: http://git-wip-us.apache.org/repos/asf/tajo/commit/a1991246
Tree: http://git-wip-us.apache.org/repos/asf/tajo/tree/a1991246
Diff: http://git-wip-us.apache.org/repos/asf/tajo/diff/a1991246

Branch: refs/heads/branch-0.10.0-rc1
Commit: a19912461313ed3a1ea0366b482b5c91d015fd71
Parents: 29f0521
Author: Hyunsik Choi <hy...@apache.org>
Authored: Mon Feb 23 19:48:39 2015 -0800
Committer: Hyunsik Choi <hy...@apache.org>
Committed: Mon Feb 23 19:48:39 2015 -0800

----------------------------------------------------------------------
 pom.xml                                   | 4 ++--
 tajo-algebra/pom.xml                      | 2 +-
 tajo-catalog/pom.xml                      | 2 +-
 tajo-catalog/tajo-catalog-client/pom.xml  | 2 +-
 tajo-catalog/tajo-catalog-common/pom.xml  | 2 +-
 tajo-catalog/tajo-catalog-drivers/pom.xml | 2 +-
 tajo-catalog/tajo-catalog-server/pom.xml  | 2 +-
 tajo-cli/pom.xml                          | 5 ++---
 tajo-client/pom.xml                       | 2 +-
 tajo-common/pom.xml                       | 2 +-
 tajo-core/pom.xml                         | 2 +-
 tajo-dist/pom.xml                         | 2 +-
 tajo-jdbc/pom.xml                         | 2 +-
 tajo-maven-plugins/pom.xml                | 2 +-
 tajo-plan/pom.xml                         | 2 +-
 tajo-project/pom.xml                      | 8 ++++----
 tajo-pullserver/pom.xml                   | 2 +-
 tajo-rpc/pom.xml                          | 2 +-
 tajo-storage/pom.xml                      | 2 +-
 tajo-storage/tajo-storage-common/pom.xml  | 4 ++--
 tajo-storage/tajo-storage-hbase/pom.xml   | 6 ++----
 tajo-storage/tajo-storage-hdfs/pom.xml    | 6 ++----
 tajo-thirdparty/asm/pom.xml               | 2 +-
 23 files changed, 31 insertions(+), 36 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tajo/blob/a1991246/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index c525f47..72a697a 100644
--- a/pom.xml
+++ b/pom.xml
@@ -26,7 +26,7 @@
   </parent>
   <groupId>org.apache.tajo</groupId>
   <artifactId>tajo-main</artifactId>
-  <version>0.10.0-SNAPSHOT</version>
+  <version>0.10.0</version>
   <description>Tajo Main</description>
   <name>Tajo Main</name>
   <packaging>pom</packaging>
@@ -57,7 +57,7 @@
     <url>https://git-wip-us.apache.org/repos/asf/tajo.git</url>
     <connection>scm:git:https://git-wip-us.apache.org/repos/asf/tajo.git</connection>
     <developerConnection>scm:git:https://git-wip-us.apache.org/repos/asf/tajo.git</developerConnection>
-    <tag>HEAD</tag>
+    <tag>release-0.10.0-rc1</tag>
   </scm>
 
   <repositories>

http://git-wip-us.apache.org/repos/asf/tajo/blob/a1991246/tajo-algebra/pom.xml
----------------------------------------------------------------------
diff --git a/tajo-algebra/pom.xml b/tajo-algebra/pom.xml
index 785c06e..864df09 100644
--- a/tajo-algebra/pom.xml
+++ b/tajo-algebra/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <artifactId>tajo-project</artifactId>
     <groupId>org.apache.tajo</groupId>
-    <version>0.10.0-SNAPSHOT</version>
+    <version>0.10.0</version>
     <relativePath>../tajo-project</relativePath>
   </parent>
   <artifactId>tajo-algebra</artifactId>

http://git-wip-us.apache.org/repos/asf/tajo/blob/a1991246/tajo-catalog/pom.xml
----------------------------------------------------------------------
diff --git a/tajo-catalog/pom.xml b/tajo-catalog/pom.xml
index ec0f2a2..d5dc1ef 100644
--- a/tajo-catalog/pom.xml
+++ b/tajo-catalog/pom.xml
@@ -21,7 +21,7 @@
   <parent>
     <artifactId>tajo-project</artifactId>
     <groupId>org.apache.tajo</groupId>
-    <version>0.10.0-SNAPSHOT</version>
+    <version>0.10.0</version>
 	  <relativePath>../tajo-project</relativePath>
   </parent>
   <modelVersion>4.0.0</modelVersion>

http://git-wip-us.apache.org/repos/asf/tajo/blob/a1991246/tajo-catalog/tajo-catalog-client/pom.xml
----------------------------------------------------------------------
diff --git a/tajo-catalog/tajo-catalog-client/pom.xml b/tajo-catalog/tajo-catalog-client/pom.xml
index 1205820..758a808 100644
--- a/tajo-catalog/tajo-catalog-client/pom.xml
+++ b/tajo-catalog/tajo-catalog-client/pom.xml
@@ -21,7 +21,7 @@
   <parent>
     <artifactId>tajo-project</artifactId>
     <groupId>org.apache.tajo</groupId>
-    <version>0.10.0-SNAPSHOT</version>
+    <version>0.10.0</version>
 	  <relativePath>../../tajo-project</relativePath>
   </parent>
   <modelVersion>4.0.0</modelVersion>

http://git-wip-us.apache.org/repos/asf/tajo/blob/a1991246/tajo-catalog/tajo-catalog-common/pom.xml
----------------------------------------------------------------------
diff --git a/tajo-catalog/tajo-catalog-common/pom.xml b/tajo-catalog/tajo-catalog-common/pom.xml
index d6ecd22..c5cfed3 100644
--- a/tajo-catalog/tajo-catalog-common/pom.xml
+++ b/tajo-catalog/tajo-catalog-common/pom.xml
@@ -21,7 +21,7 @@
   <parent>
     <artifactId>tajo-project</artifactId>
     <groupId>org.apache.tajo</groupId>
-    <version>0.10.0-SNAPSHOT</version>
+    <version>0.10.0</version>
 	  <relativePath>../../tajo-project</relativePath>
   </parent>
   <modelVersion>4.0.0</modelVersion>

http://git-wip-us.apache.org/repos/asf/tajo/blob/a1991246/tajo-catalog/tajo-catalog-drivers/pom.xml
----------------------------------------------------------------------
diff --git a/tajo-catalog/tajo-catalog-drivers/pom.xml b/tajo-catalog/tajo-catalog-drivers/pom.xml
index 3641b4b..f3f5ad2 100644
--- a/tajo-catalog/tajo-catalog-drivers/pom.xml
+++ b/tajo-catalog/tajo-catalog-drivers/pom.xml
@@ -21,7 +21,7 @@
   <parent>
     <artifactId>tajo-project</artifactId>
     <groupId>org.apache.tajo</groupId>
-    <version>0.10.0-SNAPSHOT</version>
+    <version>0.10.0</version>
 	  <relativePath>../../tajo-project</relativePath>
   </parent>
   <modelVersion>4.0.0</modelVersion>

http://git-wip-us.apache.org/repos/asf/tajo/blob/a1991246/tajo-catalog/tajo-catalog-server/pom.xml
----------------------------------------------------------------------
diff --git a/tajo-catalog/tajo-catalog-server/pom.xml b/tajo-catalog/tajo-catalog-server/pom.xml
index 2ad460e..f413792 100644
--- a/tajo-catalog/tajo-catalog-server/pom.xml
+++ b/tajo-catalog/tajo-catalog-server/pom.xml
@@ -21,7 +21,7 @@
   <parent>
     <artifactId>tajo-project</artifactId>
     <groupId>org.apache.tajo</groupId>
-    <version>0.10.0-SNAPSHOT</version>
+    <version>0.10.0</version>
     <relativePath>../../tajo-project</relativePath>
   </parent>
   <modelVersion>4.0.0</modelVersion>

http://git-wip-us.apache.org/repos/asf/tajo/blob/a1991246/tajo-cli/pom.xml
----------------------------------------------------------------------
diff --git a/tajo-cli/pom.xml b/tajo-cli/pom.xml
index 36e6118..35df204 100644
--- a/tajo-cli/pom.xml
+++ b/tajo-cli/pom.xml
@@ -17,13 +17,12 @@
   ~ limitations under the License.
   -->
 
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <parent>
     <artifactId>tajo-project</artifactId>
     <groupId>org.apache.tajo</groupId>
-    <version>0.10.0-SNAPSHOT</version>
+    <version>0.10.0</version>
     <relativePath>../tajo-project</relativePath>
   </parent>
   <artifactId>tajo-cli</artifactId>

http://git-wip-us.apache.org/repos/asf/tajo/blob/a1991246/tajo-client/pom.xml
----------------------------------------------------------------------
diff --git a/tajo-client/pom.xml b/tajo-client/pom.xml
index 0014609..33f3c78 100644
--- a/tajo-client/pom.xml
+++ b/tajo-client/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <artifactId>tajo-project</artifactId>
     <groupId>org.apache.tajo</groupId>
-    <version>0.10.0-SNAPSHOT</version>
+    <version>0.10.0</version>
     <relativePath>../tajo-project</relativePath>
   </parent>
   <artifactId>tajo-client</artifactId>

http://git-wip-us.apache.org/repos/asf/tajo/blob/a1991246/tajo-common/pom.xml
----------------------------------------------------------------------
diff --git a/tajo-common/pom.xml b/tajo-common/pom.xml
index cd6f0be..fd5d73c 100644
--- a/tajo-common/pom.xml
+++ b/tajo-common/pom.xml
@@ -17,7 +17,7 @@
   <parent>
     <artifactId>tajo-project</artifactId>
     <groupId>org.apache.tajo</groupId>
-    <version>0.10.0-SNAPSHOT</version>
+    <version>0.10.0</version>
     <relativePath>../tajo-project</relativePath>
   </parent>
 

http://git-wip-us.apache.org/repos/asf/tajo/blob/a1991246/tajo-core/pom.xml
----------------------------------------------------------------------
diff --git a/tajo-core/pom.xml b/tajo-core/pom.xml
index ce9db73..7a4dce0 100644
--- a/tajo-core/pom.xml
+++ b/tajo-core/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <artifactId>tajo-project</artifactId>
     <groupId>org.apache.tajo</groupId>
-    <version>0.10.0-SNAPSHOT</version>
+    <version>0.10.0</version>
     <relativePath>../tajo-project</relativePath>
   </parent>
   <artifactId>tajo-core</artifactId>

http://git-wip-us.apache.org/repos/asf/tajo/blob/a1991246/tajo-dist/pom.xml
----------------------------------------------------------------------
diff --git a/tajo-dist/pom.xml b/tajo-dist/pom.xml
index 7d2473e..aef7713 100644
--- a/tajo-dist/pom.xml
+++ b/tajo-dist/pom.xml
@@ -21,7 +21,7 @@
   <parent>
     <artifactId>tajo-project</artifactId>
     <groupId>org.apache.tajo</groupId>
-    <version>0.10.0-SNAPSHOT</version>
+    <version>0.10.0</version>
     <relativePath>../tajo-project</relativePath>
   </parent>
   <modelVersion>4.0.0</modelVersion>

http://git-wip-us.apache.org/repos/asf/tajo/blob/a1991246/tajo-jdbc/pom.xml
----------------------------------------------------------------------
diff --git a/tajo-jdbc/pom.xml b/tajo-jdbc/pom.xml
index ab5e09e..aed5615 100644
--- a/tajo-jdbc/pom.xml
+++ b/tajo-jdbc/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <artifactId>tajo-project</artifactId>
     <groupId>org.apache.tajo</groupId>
-    <version>0.10.0-SNAPSHOT</version>
+    <version>0.10.0</version>
     <relativePath>../tajo-project</relativePath>
   </parent>
   <artifactId>tajo-jdbc</artifactId>

http://git-wip-us.apache.org/repos/asf/tajo/blob/a1991246/tajo-maven-plugins/pom.xml
----------------------------------------------------------------------
diff --git a/tajo-maven-plugins/pom.xml b/tajo-maven-plugins/pom.xml
index b3cfd17..de2e05d 100644
--- a/tajo-maven-plugins/pom.xml
+++ b/tajo-maven-plugins/pom.xml
@@ -17,7 +17,7 @@
   <parent>
     <groupId>org.apache.tajo</groupId>
     <artifactId>tajo-project</artifactId>
-    <version>0.10.0-SNAPSHOT</version>
+    <version>0.10.0</version>
     <relativePath>../tajo-project</relativePath>
   </parent>
   <groupId>org.apache.tajo</groupId>

http://git-wip-us.apache.org/repos/asf/tajo/blob/a1991246/tajo-plan/pom.xml
----------------------------------------------------------------------
diff --git a/tajo-plan/pom.xml b/tajo-plan/pom.xml
index 5199034..d795a4c 100644
--- a/tajo-plan/pom.xml
+++ b/tajo-plan/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <artifactId>tajo-project</artifactId>
     <groupId>org.apache.tajo</groupId>
-    <version>0.10.0-SNAPSHOT</version>
+    <version>0.10.0</version>
     <relativePath>../tajo-project</relativePath>
   </parent>
   <artifactId>tajo-plan</artifactId>

http://git-wip-us.apache.org/repos/asf/tajo/blob/a1991246/tajo-project/pom.xml
----------------------------------------------------------------------
diff --git a/tajo-project/pom.xml b/tajo-project/pom.xml
index 30f864c..e62b571 100644
--- a/tajo-project/pom.xml
+++ b/tajo-project/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.tajo</groupId>
     <artifactId>tajo-main</artifactId>
-    <version>0.10.0-SNAPSHOT</version>
+    <version>0.10.0</version>
   </parent>
   <groupId>org.apache.tajo</groupId>
   <artifactId>tajo-project</artifactId>
@@ -35,7 +35,7 @@
     <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
     <hadoop.version>2.5.1</hadoop.version>
     <protobuf.version>2.5.0</protobuf.version>
-    <tajo.version>0.10.0-SNAPSHOT</tajo.version>
+    <tajo.version>0.10.0</tajo.version>
     <hbase.version>0.98.7-hadoop2</hbase.version>
     <tajo.root>${project.parent.relativePath}/..</tajo.root>
     <extra.source.path>src/main/hadoop-${hadoop.version}</extra.source.path>
@@ -167,7 +167,7 @@
       <id>jihun</id>
       <name>Jihun Kang</name>
       <email>jihun@apache.org</email>
-      <organization></organization>
+      <organization />
       <roles>
         <role>Committer</role>
       </roles>
@@ -325,7 +325,7 @@
     <url>https://git-wip-us.apache.org/repos/asf/tajo.git</url>
     <connection>scm:git:https://git-wip-us.apache.org/repos/asf/tajo.git</connection>
     <developerConnection>scm:git:https://git-wip-us.apache.org/repos/asf/tajo.git</developerConnection>
-    <tag>HEAD</tag>
+    <tag>release-0.10.0-rc1</tag>
   </scm>
 
   <mailingLists>

http://git-wip-us.apache.org/repos/asf/tajo/blob/a1991246/tajo-pullserver/pom.xml
----------------------------------------------------------------------
diff --git a/tajo-pullserver/pom.xml b/tajo-pullserver/pom.xml
index 6d13a3c..bc41309 100644
--- a/tajo-pullserver/pom.xml
+++ b/tajo-pullserver/pom.xml
@@ -21,7 +21,7 @@
   <parent>
     <artifactId>tajo-project</artifactId>
     <groupId>org.apache.tajo</groupId>
-    <version>0.10.0-SNAPSHOT</version>
+    <version>0.10.0</version>
     <relativePath>../tajo-project</relativePath>
   </parent>
   <modelVersion>4.0.0</modelVersion>

http://git-wip-us.apache.org/repos/asf/tajo/blob/a1991246/tajo-rpc/pom.xml
----------------------------------------------------------------------
diff --git a/tajo-rpc/pom.xml b/tajo-rpc/pom.xml
index d0037ca..6cec836 100644
--- a/tajo-rpc/pom.xml
+++ b/tajo-rpc/pom.xml
@@ -20,7 +20,7 @@
   <modelVersion>4.0.0</modelVersion>
   <parent>
     <artifactId>tajo-project</artifactId>
-    <version>0.10.0-SNAPSHOT</version>
+    <version>0.10.0</version>
     <groupId>org.apache.tajo</groupId>
     <relativePath>../tajo-project</relativePath>
   </parent>

http://git-wip-us.apache.org/repos/asf/tajo/blob/a1991246/tajo-storage/pom.xml
----------------------------------------------------------------------
diff --git a/tajo-storage/pom.xml b/tajo-storage/pom.xml
index 1302b0a..7c28df1 100644
--- a/tajo-storage/pom.xml
+++ b/tajo-storage/pom.xml
@@ -19,7 +19,7 @@
   <parent>
     <artifactId>tajo-project</artifactId>
     <groupId>org.apache.tajo</groupId>
-    <version>0.10.0-SNAPSHOT</version>
+    <version>0.10.0</version>
     <relativePath>../tajo-project</relativePath>
   </parent>
   <modelVersion>4.0.0</modelVersion>

http://git-wip-us.apache.org/repos/asf/tajo/blob/a1991246/tajo-storage/tajo-storage-common/pom.xml
----------------------------------------------------------------------
diff --git a/tajo-storage/tajo-storage-common/pom.xml b/tajo-storage/tajo-storage-common/pom.xml
index 3b07cc7..1055a82 100644
--- a/tajo-storage/tajo-storage-common/pom.xml
+++ b/tajo-storage/tajo-storage-common/pom.xml
@@ -17,11 +17,11 @@ See the License for the specific language governing permissions and
 limitations under the License.
 -->
 
-<project xmlns="http://maven.apache.org/POM/4.0.0"  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <parent>
     <artifactId>tajo-project</artifactId>
     <groupId>org.apache.tajo</groupId>
-    <version>0.10.0-SNAPSHOT</version>
+    <version>0.10.0</version>
     <relativePath>../../tajo-project</relativePath>
   </parent>
   <modelVersion>4.0.0</modelVersion>

http://git-wip-us.apache.org/repos/asf/tajo/blob/a1991246/tajo-storage/tajo-storage-hbase/pom.xml
----------------------------------------------------------------------
diff --git a/tajo-storage/tajo-storage-hbase/pom.xml b/tajo-storage/tajo-storage-hbase/pom.xml
index efa4d86..30d92a6 100644
--- a/tajo-storage/tajo-storage-hbase/pom.xml
+++ b/tajo-storage/tajo-storage-hbase/pom.xml
@@ -15,13 +15,11 @@ See the License for the specific language governing permissions and
 limitations under the License.
 -->
 
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <parent>
     <artifactId>tajo-project</artifactId>
     <groupId>org.apache.tajo</groupId>
-    <version>0.10.0-SNAPSHOT</version>
+    <version>0.10.0</version>
     <relativePath>../../tajo-project</relativePath>
   </parent>
   <modelVersion>4.0.0</modelVersion>

http://git-wip-us.apache.org/repos/asf/tajo/blob/a1991246/tajo-storage/tajo-storage-hdfs/pom.xml
----------------------------------------------------------------------
diff --git a/tajo-storage/tajo-storage-hdfs/pom.xml b/tajo-storage/tajo-storage-hdfs/pom.xml
index 5513aa6..a8ebd83 100644
--- a/tajo-storage/tajo-storage-hdfs/pom.xml
+++ b/tajo-storage/tajo-storage-hdfs/pom.xml
@@ -15,13 +15,11 @@ See the License for the specific language governing permissions and
 limitations under the License.
 -->
 
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <parent>
     <artifactId>tajo-project</artifactId>
     <groupId>org.apache.tajo</groupId>
-    <version>0.10.0-SNAPSHOT</version>
+    <version>0.10.0</version>
     <relativePath>../../tajo-project</relativePath>
   </parent>
   <modelVersion>4.0.0</modelVersion>

http://git-wip-us.apache.org/repos/asf/tajo/blob/a1991246/tajo-thirdparty/asm/pom.xml
----------------------------------------------------------------------
diff --git a/tajo-thirdparty/asm/pom.xml b/tajo-thirdparty/asm/pom.xml
index 58e7478..65b9cdd 100644
--- a/tajo-thirdparty/asm/pom.xml
+++ b/tajo-thirdparty/asm/pom.xml
@@ -17,7 +17,7 @@
   <parent>
     <artifactId>tajo-project</artifactId>
     <groupId>org.apache.tajo</groupId>
-    <version>0.10.0-SNAPSHOT</version>
+    <version>0.10.0</version>
     <relativePath>../../tajo-project</relativePath>
   </parent>