You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by yu...@apache.org on 2015/10/29 18:47:36 UTC

ambari git commit: AMBARI-13575. Hive View query error, should use GetOperationStatus thrift api to verify if hive query is completed successfully. (Nitiraj Singh Rathore via yusaku)

Repository: ambari
Updated Branches:
  refs/heads/trunk 026816d41 -> 0e2d22167


AMBARI-13575. Hive View query error, should use GetOperationStatus thrift api to verify if hive query is completed successfully. (Nitiraj Singh Rathore via yusaku)


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

Branch: refs/heads/trunk
Commit: 0e2d221675ff6a7a0670eda4051bd3a660bfb9dc
Parents: 026816d
Author: Yusaku Sako <yu...@hortonworks.com>
Authored: Thu Oct 29 10:47:03 2015 -0700
Committer: Yusaku Sako <yu...@hortonworks.com>
Committed: Thu Oct 29 10:47:03 2015 -0700

----------------------------------------------------------------------
 .../view/hive/resources/jobs/JobService.java    |  8 +++++
 .../resources/jobs/viewJobs/JobController.java  |  6 ++++
 .../jobs/viewJobs/JobControllerImpl.java        |  6 ++++
 .../controllers/index/history-query/results.js  | 31 +++++++++++++++++++-
 4 files changed, 50 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/0e2d2216/contrib/views/hive/src/main/java/org/apache/ambari/view/hive/resources/jobs/JobService.java
----------------------------------------------------------------------
diff --git a/contrib/views/hive/src/main/java/org/apache/ambari/view/hive/resources/jobs/JobService.java b/contrib/views/hive/src/main/java/org/apache/ambari/view/hive/resources/jobs/JobService.java
index a2c5f5e..fd69893 100644
--- a/contrib/views/hive/src/main/java/org/apache/ambari/view/hive/resources/jobs/JobService.java
+++ b/contrib/views/hive/src/main/java/org/apache/ambari/view/hive/resources/jobs/JobService.java
@@ -273,6 +273,14 @@ public class JobService extends BaseService {
                              @QueryParam("columns") final String requestedColumns) {
     try {
       final JobController jobController = getResourceManager().readController(jobId);
+      LOG.info("jobController.getStatus().status : " + jobController.getStatus().status + " for job : " + jobController.getJob().getId());
+      if(jobController.getStatus().status.equals(Job.JOB_STATE_INITIALIZED)
+         || jobController.getStatus().status.equals(Job.JOB_STATE_PENDING)
+         || jobController.getStatus().status.equals(Job.JOB_STATE_RUNNING)
+         || jobController.getStatus().status.equals(Job.JOB_STATE_UNKNOWN)){
+
+         return Response.status(Response.Status.SERVICE_UNAVAILABLE).header("Retry-After","1").build();
+      }
       if (!jobController.hasResults()) {
         return ResultsPaginationController.emptyResponse().build();
       }

http://git-wip-us.apache.org/repos/asf/ambari/blob/0e2d2216/contrib/views/hive/src/main/java/org/apache/ambari/view/hive/resources/jobs/viewJobs/JobController.java
----------------------------------------------------------------------
diff --git a/contrib/views/hive/src/main/java/org/apache/ambari/view/hive/resources/jobs/viewJobs/JobController.java b/contrib/views/hive/src/main/java/org/apache/ambari/view/hive/resources/jobs/viewJobs/JobController.java
index a25f7d4..3922839 100644
--- a/contrib/views/hive/src/main/java/org/apache/ambari/view/hive/resources/jobs/viewJobs/JobController.java
+++ b/contrib/views/hive/src/main/java/org/apache/ambari/view/hive/resources/jobs/viewJobs/JobController.java
@@ -19,9 +19,15 @@
 package org.apache.ambari.view.hive.resources.jobs.viewJobs;
 
 import org.apache.ambari.view.hive.client.Cursor;
+import org.apache.ambari.view.hive.client.HiveClientException;
 import org.apache.ambari.view.hive.persistence.utils.ItemNotFound;
+import org.apache.ambari.view.hive.resources.jobs.NoOperationStatusSetException;
+import org.apache.ambari.view.hive.resources.jobs.OperationHandleController;
 
 public interface JobController {
+
+  OperationHandleController.OperationStatus getStatus() throws ItemNotFound, HiveClientException, NoOperationStatusSetException;
+
   void submit();
 
   void cancel() throws ItemNotFound;

http://git-wip-us.apache.org/repos/asf/ambari/blob/0e2d2216/contrib/views/hive/src/main/java/org/apache/ambari/view/hive/resources/jobs/viewJobs/JobControllerImpl.java
----------------------------------------------------------------------
diff --git a/contrib/views/hive/src/main/java/org/apache/ambari/view/hive/resources/jobs/viewJobs/JobControllerImpl.java b/contrib/views/hive/src/main/java/org/apache/ambari/view/hive/resources/jobs/viewJobs/JobControllerImpl.java
index 3739523..f6d6ed6 100644
--- a/contrib/views/hive/src/main/java/org/apache/ambari/view/hive/resources/jobs/viewJobs/JobControllerImpl.java
+++ b/contrib/views/hive/src/main/java/org/apache/ambari/view/hive/resources/jobs/viewJobs/JobControllerImpl.java
@@ -96,6 +96,12 @@ public class JobControllerImpl implements JobController, ModifyNotificationDeleg
   }
 
   @Override
+  public OperationHandleController.OperationStatus getStatus() throws ItemNotFound, HiveClientException, NoOperationStatusSetException {
+    OperationHandleController handle = opHandleControllerFactory.getHandleForJob(job);
+    return handle.getOperationStatus();
+  }
+
+  @Override
   public void submit() {
     setupHiveBeforeQueryExecute();
 

http://git-wip-us.apache.org/repos/asf/ambari/blob/0e2d2216/contrib/views/hive/src/main/resources/ui/hive-web/app/controllers/index/history-query/results.js
----------------------------------------------------------------------
diff --git a/contrib/views/hive/src/main/resources/ui/hive-web/app/controllers/index/history-query/results.js b/contrib/views/hive/src/main/resources/ui/hive-web/app/controllers/index/history-query/results.js
index 5c7ded2..9e94b17 100644
--- a/contrib/views/hive/src/main/resources/ui/hive-web/app/controllers/index/history-query/results.js
+++ b/contrib/views/hive/src/main/resources/ui/hive-web/app/controllers/index/history-query/results.js
@@ -142,6 +142,33 @@ export default Ember.ObjectController.extend({
     return defer.promise;
   },
 
+  getResult : function(url){
+    var promise = new Ember.RSVP.Promise(function(resolve,reject){
+      var getData =  function(){
+        //console.log("getData called.");
+        Ember.$.getJSON(url).done(function(data){
+          console.log('results.js : getResult : got success data');
+          resolve(data);
+        }).fail(function(err){
+          if(err.status == 503 && err.getResponseHeader('Retry-After')){
+            var time = Number(err.getResponseHeader('Retry-After'));
+            console.log("results.js : getResult : got error : " + err.status + " with retry.");
+            Ember.run.later(this,
+            function(){
+              getData();
+            },time*1000);
+          }else{
+            console.log("results.js : getResult : rejected. ");
+            reject(err);
+          }
+        });
+      };
+      getData();
+    });
+
+    return promise;
+  },
+
   actions: {
     getNextPage: function (firstPage, job) {
       var self = this;
@@ -164,7 +191,9 @@ export default Ember.ObjectController.extend({
         }
       }
 
-      Ember.$.getJSON(url).then(function (results) {
+      this.getResult(url)
+      .then(function (results) {
+        //console.log("inside then : ", results);
         if (existingJob) {
           existingJob.results.pushObject(results);
           existingJob.set('offset', results.offset);