소스 검색

HUE-6734 [jb] Protect from jobs with no available tasks to get some default logs

Romain Rigaux 8 년 전
부모
커밋
ceeb16c
1개의 변경된 파일14개의 추가작업 그리고 10개의 파일을 삭제
  1. 14 10
      apps/jobbrowser/src/jobbrowser/apis/job_api.py

+ 14 - 10
apps/jobbrowser/src/jobbrowser/apis/job_api.py

@@ -194,17 +194,21 @@ class YarnApi(Api):
 
 
   def logs(self, appid, app_type, log_name):
-    if app_type == 'MAPREDUCE':
-      if log_name == 'default':
-        response = job_single_logs(MockDjangoRequest(self.user), job=appid)
-        logs = json.loads(response.content).get('logs')
-        if logs and len(logs) == 4:
-          logs = logs[3]
+    logs = ''
+    try:
+      if app_type == 'MAPREDUCE':
+        if log_name == 'default':
+          response = job_single_logs(MockDjangoRequest(self.user), job=appid)
+          logs = json.loads(response.content).get('logs')
+          if logs and len(logs) == 4:
+            logs = logs[3]
+        else:
+          response = job_attempt_logs_json(MockDjangoRequest(self.user), job=appid, name=log_name)
+          logs = json.loads(response.content).get('log')
       else:
-        response = job_attempt_logs_json(MockDjangoRequest(self.user), job=appid, name=log_name)
-        logs = json.loads(response.content).get('log')
-    else:
-      logs = None
+        logs = None
+    except PopupException, e:
+      LOG.warn('No task attempt found for logs: %s' % e)
     return {'logs': logs}