Pārlūkot izejas kodu

HUE-9207 [frontend] Fix context issues for local optimizer strategy

Johan Ahlen 5 gadi atpakaļ
vecāks
revīzija
dcc96a0159

+ 7 - 6
desktop/core/src/desktop/js/catalog/dataCatalog.js

@@ -272,7 +272,6 @@ class DataCatalog {
    * @return {CancellablePromise}
    */
   loadOptimizerPopularityForTables(options) {
-    const self = this;
     const deferred = $.Deferred();
     const cancellablePromises = [];
     let popularEntries = [];
@@ -283,8 +282,7 @@ class DataCatalog {
     const existingPromises = [];
     options.paths.forEach(path => {
       const existingDeferred = $.Deferred();
-      self
-        .getEntry({ namespace: options.namespace, compute: options.compute, path: path })
+      this.getEntry({ namespace: options.namespace, compute: options.compute, path: path })
         .done(tableEntry => {
           if (tableEntry.optimizerPopularityForChildrenPromise) {
             tableEntry.optimizerPopularityForChildrenPromise
@@ -320,7 +318,7 @@ class DataCatalog {
       const loadDeferred = $.Deferred();
       if (pathsToLoad.length) {
         cancellablePromises.push(
-          getOptimizer(options.connector)
+          getOptimizer(this.connector)
             .fetchPopularity({
               silenceErrors: options.silenceErrors,
               paths: pathsToLoad
@@ -356,8 +354,11 @@ class DataCatalog {
 
               Object.keys(perTable).forEach(path => {
                 const tableDeferred = $.Deferred();
-                self
-                  .getEntry({ namespace: options.namespace, compute: options.compute, path: path })
+                this.getEntry({
+                  namespace: options.namespace,
+                  compute: options.compute,
+                  path: path
+                })
                   .done(entry => {
                     cancellablePromises.push(
                       entry.trackedPromise(

+ 2 - 1
desktop/core/src/desktop/js/catalog/dataCatalogEntry.js

@@ -153,10 +153,11 @@ const reloadSample = function(dataCatalogEntry, apiOptions) {
  */
 const reloadOptimizerMeta = function(dataCatalogEntry, apiOptions) {
   if (dataCatalogEntry.dataCatalog.canHaveOptimizerMeta()) {
+    const optimizer = getOptimizer(dataCatalogEntry.dataCatalog.connector);
     return dataCatalogEntry.trackedPromise(
       'optimizerMetaPromise',
       catalogUtils.fetchAndSave(
-        getOptimizer(dataCatalogEntry.dataCatalog.connector).fetchOptimizerMeta,
+        optimizer.fetchOptimizerMeta.bind(optimizer),
         'optimizerMeta',
         dataCatalogEntry,
         apiOptions

+ 8 - 4
desktop/core/src/desktop/js/catalog/multiTableEntry.js

@@ -180,12 +180,13 @@ class MultiTableEntry {
    * @return {CancellablePromise}
    */
   getTopAggs(options) {
+    const optimizer = getOptimizer(this.dataCatalog.connector);
     return genericOptimizerGet(
       this,
       options,
       'topAggsPromise',
       'topAggs',
-      getOptimizer(this.dataCatalog.connector).fetchTopAggs
+      optimizer.fetchTopAggs.bind(optimizer)
     );
   }
 
@@ -201,12 +202,13 @@ class MultiTableEntry {
    * @return {CancellablePromise}
    */
   getTopColumns(options) {
+    const optimizer = getOptimizer(this.dataCatalog.connector);
     return genericOptimizerGet(
       this,
       options,
       'topColumnsPromise',
       'topColumns',
-      getOptimizer(this.dataCatalog.connector).fetchTopColumns
+      optimizer.fetchTopColumns.bind(optimizer)
     );
   }
 
@@ -222,12 +224,13 @@ class MultiTableEntry {
    * @return {CancellablePromise}
    */
   getTopFilters(options) {
+    const optimizer = getOptimizer(this.dataCatalog.connector);
     return genericOptimizerGet(
       this,
       options,
       'topFiltersPromise',
       'topFilters',
-      getOptimizer(this.dataCatalog.connector).fetchTopFilters
+      optimizer.fetchTopFilters.bind(optimizer)
     );
   }
 
@@ -243,12 +246,13 @@ class MultiTableEntry {
    * @return {CancellablePromise}
    */
   getTopJoins(options) {
+    const optimizer = getOptimizer(this.dataCatalog.connector);
     return genericOptimizerGet(
       this,
       options,
       'topJoinsPromise',
       'topJoins',
-      getOptimizer(this.dataCatalog.connector).fetchTopJoins
+      optimizer.fetchTopJoins.bind(optimizer)
     );
   }
 }