Forráskód Böngészése

HUE-9187 [editor] Fix issue with multiple Hive executions in notebook 2

Johan Ahlen 5 éve
szülő
commit
340955328f

+ 18 - 14
desktop/core/src/desktop/js/apps/notebook2/components/ko.snippetResults.js

@@ -195,24 +195,23 @@ class SnippetResults extends DisposableComponent {
     });
 
     let lastRenderedResult = undefined;
+    const handleResultChange = () => {
+      if (this.activeExecutable() && this.activeExecutable().result) {
+        const refresh = lastRenderedResult !== this.activeExecutable().result;
+        this.updateFromExecutionResult(this.activeExecutable().result, refresh);
+        lastRenderedResult = this.activeExecutable().result;
+      } else {
+        this.resetResultData();
+      }
+    };
+
     this.subscribe(RESULT_UPDATED_EVENT, executionResult => {
       if (this.activeExecutable() === executionResult.executable) {
-        const refresh = lastRenderedResult !== executionResult;
-        this.updateFromExecutionResult(executionResult, refresh);
-        lastRenderedResult = executionResult;
+        handleResultChange();
       }
     });
 
-    this.subscribe(this.activeExecutable, executable => {
-      if (executable && executable.result) {
-        if (executable !== lastRenderedResult) {
-          this.updateFromExecutionResult(executable.result, true);
-          lastRenderedResult = executable;
-        }
-      } else {
-        this.resetResultData();
-      }
-    });
+    this.subscribe(this.activeExecutable, handleResultChange);
   }
 
   resetResultData() {
@@ -246,7 +245,12 @@ class SnippetResults extends DisposableComponent {
         this.cleanedNumericMeta(executionResult.cleanedNumericMeta);
       }
 
-      if (executionResult.lastRows.length) {
+      if (refresh) {
+        this.data(executionResult.rows);
+      } else if (
+        executionResult.lastRows.length &&
+        this.data().length !== executionResult.rows.length
+      ) {
         this.data.push(...executionResult.lastRows);
       }
       this.lastFetchedRows(executionResult.lastRows);