Bladeren bron

HUE-1120 [oozie] Prevent errors on dashboard rendering

Configured Datatables to throw errors instead of displaying them
Introduced check for null items
Enrico Berti 12 jaren geleden
bovenliggende
commit
34a9756abe

+ 21 - 8
apps/oozie/src/oozie/templates/dashboard/list_oozie_bundles.mako

@@ -248,6 +248,8 @@ ${layout.menubar(section='dashboard')}
       window.location.hash = hash;
     }
 
+    $.fn.dataTableExt.sErrMode = "throw";
+
     $.fn.dataTableExt.afnFiltering.push(
       function (oSettings, aData, iDataIndex) {
         var urlHashes = ""
@@ -341,15 +343,21 @@ ${layout.menubar(section='dashboard')}
                         '>${ _('Kill') }</a>';
               }
               if (['RUNNING', 'PREP', 'WAITING', 'SUSPENDED', 'PREPSUSPENDED', 'PREPPAUSED', 'PAUSED'].indexOf(bundle.status) > -1) {
-                runningTable.fnAddData([
-                    bundle.kickoffTime,
+                try {
+                  runningTable.fnAddData([
+                    emptyStringIfNull(bundle.kickoffTime),
                     '<span class="' + bundle.statusClass + '">' + bundle.status + '</span>',
                     bundle.appName,
                     '<div class="progress"><div class="' + bundle.progressClass + '" style="width:' + bundle.progress + '%">' + bundle.progress + '%</div></div>',
                     bundle.user,
-                    bundle.created,
+                    emptyStringIfNull(bundle.created),
                     '<a href="' + bundle.absoluteUrl + '" data-row-selector="true">' + bundle.id + '</a>',
-                    killCell]);
+                    killCell
+                  ]);
+                }
+                catch (error) {
+                  $.jHueNotify.error(error);
+                }
               }
 
             }
@@ -377,14 +385,19 @@ ${layout.menubar(section='dashboard')}
         completedTable.fnClearTable();
         $(data).each(function (iWf, item) {
           var bundle = new Bundle(item);
-          completedTable.fnAddData([
-              bundle.kickoffTime,
+          try {
+            completedTable.fnAddData([
+              emptyStringIfNull(bundle.kickoffTime),
               '<span class="' + bundle.statusClass + '">' + bundle.status + '</span>',
               bundle.appName,
               bundle.user,
-              bundle.created,
+              emptyStringIfNull(bundle.created),
               '<a href="' + bundle.absoluteUrl + '" data-row-selector="true">' + bundle.id + '</a>'
-          ], false);
+            ], false);
+          }
+          catch (error) {
+            $.jHueNotify.error(error);
+          }
         });
         completedTable.fnDraw();
       });

+ 35 - 21
apps/oozie/src/oozie/templates/dashboard/list_oozie_coordinators.mako

@@ -259,6 +259,8 @@ ${layout.menubar(section='dashboard')}
       window.location.hash = hash;
     }
 
+    $.fn.dataTableExt.sErrMode = "throw";
+
     $.fn.dataTableExt.afnFiltering.push(
       function (oSettings, aData, iDataIndex) {
         var urlHashes = ""
@@ -352,19 +354,24 @@ ${layout.menubar(section='dashboard')}
                         '>${ _('Kill') }</a>';
               }
               if (['RUNNING', 'PREP', 'WAITING', 'SUSPENDED', 'PREPSUSPENDED', 'PREPPAUSED', 'PAUSED'].indexOf(coord.status) > -1) {
-                runningTable.fnAddData([
-                  coord.endTime, '<span class="' + coord.statusClass + '">' + coord.status + '</span>',
-                  coord.appName,
-                  '<div class="progress"><div class="' + coord.progressClass + '" style="width:' + coord.progress + '%">' + coord.progress + '%</div></div>',
-                  coord.user,
-				  coord.frequency,
-				  coord.timeUnit,
-				  coord.startTime,
-				  '<a href="' + coord.absoluteUrl + '" data-row-selector="true">' + coord.id + '</a>',
-                  killCell
-                ]);
+                try {
+                  runningTable.fnAddData([
+                    emptyStringIfNull(coord.endTime),
+                    '<span class="' + coord.statusClass + '">' + coord.status + '</span>',
+                    coord.appName,
+                    '<div class="progress"><div class="' + coord.progressClass + '" style="width:' + coord.progress + '%">' + coord.progress + '%</div></div>',
+                    coord.user,
+                    emptyStringIfNull(coord.frequency),
+                    emptyStringIfNull(coord.timeUnit),
+                    emptyStringIfNull(coord.startTime),
+                    '<a href="' + coord.absoluteUrl + '" data-row-selector="true">' + coord.id + '</a>',
+                    killCell
+                  ]);
+                }
+                catch (error) {
+                  $.jHueNotify.error(error);
+                }
               }
-
             }
             else {
               runningTable.fnUpdate('<span class="' + coord.statusClass + '">' + coord.status + '</span>', foundRow, 1, false);
@@ -390,15 +397,22 @@ ${layout.menubar(section='dashboard')}
         completedTable.fnClearTable();
         $(data).each(function (iWf, item) {
           var coord = new Coordinator(item);
-          completedTable.fnAddData([
-            coord.endTime, '<span class="' + coord.statusClass + '">' + coord.status + '</span>',
-            coord.appName,
-            coord.duration,
-            coord.user,
-            coord.frequency,
-            coord.timeUnit,
-            coord.startTime,
-            '<a href="' + coord.absoluteUrl + '" data-row-selector="true">' + coord.id + '</a>'], false);
+          try {
+            completedTable.fnAddData([
+              emptyStringIfNull(coord.endTime),
+              '<span class="' + coord.statusClass + '">' + coord.status + '</span>',
+              coord.appName,
+              emptyStringIfNull(coord.duration),
+              coord.user,
+              emptyStringIfNull(coord.frequency),
+              emptyStringIfNull(coord.timeUnit),
+              emptyStringIfNull(coord.startTime),
+              '<a href="' + coord.absoluteUrl + '" data-row-selector="true">' + coord.id + '</a>'
+            ], false);
+          }
+          catch (error) {
+            $.jHueNotify.error(error);
+          }
         });
         completedTable.fnDraw();
       });

+ 34 - 20
apps/oozie/src/oozie/templates/dashboard/list_oozie_workflows.mako

@@ -255,6 +255,8 @@ ${ layout.menubar(section='dashboard') }
       window.location.hash = hash;
     }
 
+    $.fn.dataTableExt.sErrMode = "throw";
+
     $.fn.dataTableExt.afnFiltering.push(
       function (oSettings, aData, iDataIndex) {
         var urlHashes = ""
@@ -348,17 +350,23 @@ ${ layout.menubar(section='dashboard') }
                         '>${ _('Kill') }</a>';
               }
               if (['RUNNING', 'PREP', 'WAITING', 'SUSPENDED', 'PREPSUSPENDED', 'PREPPAUSED', 'PAUSED'].indexOf(wf.status) > -1) {
-                runningTable.fnAddData([
-                  wf.lastModTime,
-                  '<span class="' + wf.statusClass + '">' + wf.status + '</span>',
-                  wf.appName,
-                  '<div class="progress"><div class="' + wf.progressClass + '" style="width:' + wf.progress + '%">' + wf.progress + '%</div></div>',
-                  wf.user,
-                  wf.created,
-                  wf.lastModTime,
-                  wf.run,
-                  '<a href="' + wf.absoluteUrl + '" data-row-selector="true">' + wf.id + '</a>',
-                  killCell]);
+                try {
+                  runningTable.fnAddData([
+                    emptyStringIfNull(wf.lastModTime),
+                    '<span class="' + wf.statusClass + '">' + wf.status + '</span>',
+                    wf.appName,
+                    '<div class="progress"><div class="' + wf.progressClass + '" style="width:' + wf.progress + '%">' + wf.progress + '%</div></div>',
+                    wf.user,
+                    emptyStringIfNull(wf.created),
+                    emptyStringIfNull(wf.lastModTime),
+                    wf.run,
+                    '<a href="' + wf.absoluteUrl + '" data-row-selector="true">' + wf.id + '</a>',
+                    killCell
+                  ]);
+                }
+                catch (error) {
+                  $.jHueNotify.error(error);
+                }
               }
             }
             else {
@@ -385,15 +393,21 @@ ${ layout.menubar(section='dashboard') }
         completedTable.fnClearTable();
         $(data).each(function (iWf, item) {
           var wf = new Workflow(item);
-          completedTable.fnAddData([
-            wf.endTime,
-            '<span class="' + wf.statusClass + '">' + wf.status + '</span>', decodeURIComponent(wf.appName),
-            wf.duration,
-            wf.user,
-            wf.created,
-            wf.lastModTime,
-            wf.run,
-            '<a href="' + wf.absoluteUrl + '" data-row-selector="true">' + wf.id + '</a>'], false);
+          try {
+            completedTable.fnAddData([
+              emptyStringIfNull(wf.endTime),
+              '<span class="' + wf.statusClass + '">' + wf.status + '</span>', decodeURIComponent(wf.appName),
+              emptyStringIfNull(wf.duration),
+              wf.user,
+              emptyStringIfNull(wf.created),
+              emptyStringIfNull(wf.lastModTime),
+              wf.run,
+              '<a href="' + wf.absoluteUrl + '" data-row-selector="true">' + wf.id + '</a>'
+            ], false);
+          }
+          catch (error) {
+            $.jHueNotify.error(error);
+          }
         });
         completedTable.fnDraw();
       });

+ 7 - 0
apps/oozie/static/js/bundles.utils.js

@@ -46,3 +46,10 @@ function getStatusClass(status, prefix){
   }
   return klass;
 }
+
+function emptyStringIfNull(obj){
+  if (obj != null && obj != undefined){
+    return obj;
+  }
+  return "";
+}