Bläddra i källkod

HUE-4087 [jobbrowser] Unable to kill jobs with Resource Manager HA enabled

Jenny Kim 9 år sedan
förälder
incheckning
ce0c152250
2 ändrade filer med 14 tillägg och 9 borttagningar
  1. 2 0
      apps/jobbrowser/src/jobbrowser/api.py
  2. 12 9
      apps/jobbrowser/src/jobbrowser/views.py

+ 2 - 0
apps/jobbrowser/src/jobbrowser/api.py

@@ -244,6 +244,8 @@ class YarnApi(JobBrowserApi):
         # The MapReduce API only returns JSON when the application is in a RUNNING state
         elif app['state'] in ('NEW', 'SUBMITTED', 'RUNNING') and app['applicationType'] == 'MAPREDUCE':
           resp = self.mapreduce_api.job(self.user, job_id)
+          if not isinstance(resp, dict):
+            raise PopupException(_('Mapreduce Proxy API did not return JSON response, check if the job is running.'))
           job = YarnJob(self.mapreduce_api, resp['job'])
         else:
           job = Application(app, self.resource_manager_api)

+ 12 - 9
apps/jobbrowser/src/jobbrowser/views.py

@@ -258,15 +258,18 @@ def kill_job(request, job):
   api = get_api(request.user, request.jt)
 
   while time.time() - cur_time < 15:
-    job = api.get_job(jobid=job.jobId)
-
-    if job.status not in ["RUNNING", "QUEUED"]:
-      if request.REQUEST.get("next"):
-        return HttpResponseRedirect(request.REQUEST.get("next"))
-      elif request.REQUEST.get("format") == "json":
-        return JsonResponse({'status': 0}, encoder=JSONEncoderForHTML)
-      else:
-        raise MessageException("Job Killed")
+    try:
+      job = api.get_job(jobid=job.jobId)
+    except Exception, e:
+      LOG.warn('Failed to get job with ID %s: %s' % (job.jobId, e))
+    else:
+      if job.status not in ["RUNNING", "QUEUED"]:
+        if request.REQUEST.get("next"):
+          return HttpResponseRedirect(request.REQUEST.get("next"))
+        elif request.REQUEST.get("format") == "json":
+          return JsonResponse({'status': 0}, encoder=JSONEncoderForHTML)
+        else:
+          raise MessageException("Job Killed")
     time.sleep(1)
 
   raise Exception(_("Job did not appear as killed within 15 seconds."))