Преглед изворни кода

HUE-2106 [beeswax] Table list and query caches should be per user

Introduced user prefix on totalStorage
Enrico Berti пре 11 година
родитељ
комит
c0c1befaed

+ 12 - 11
apps/beeswax/src/beeswax/templates/execute.mako

@@ -944,6 +944,7 @@ var codeMirror, renderNavigator, resetNavigator, resizeNavigator, dataTable, ren
 
 var HIVE_AUTOCOMPLETE_BASE_URL = "${ autocomplete_base_url | n,unicode }";
 var HIVE_AUTOCOMPLETE_FAILS_QUIETLY_ON = [500]; // error codes from beeswax/views.py - autocomplete
+var HIVE_AUTOCOMPLETE_USER = "${ user }";
 
 var HIVE_AUTOCOMPLETE_GLOBAL_CALLBACK = function (data) {
   if (data != null && data.error) {
@@ -1085,8 +1086,8 @@ $(document).ready(function () {
   resetNavigator = function () {
     var _db = viewModel.database();
     if (_db != null) {
-      $.totalStorage('tables_' + _db, null);
-      $.totalStorage('timestamp_tables_' + _db, null);
+      $.totalStorage(hac_getTotalStorageUserPrefix() + 'tables_' + _db, null);
+      $.totalStorage(hac_getTotalStorageUserPrefix() + 'timestamp_tables_' + _db, null);
       renderNavigator();
     }
   }
@@ -1191,8 +1192,8 @@ $(document).ready(function () {
   resizeNavigator();
 
   viewModel.databases.subscribe(function () {
-    if ($.totalStorage("${app_name}_last_database") != null && $.inArray($.totalStorage("${app_name}_last_database"), viewModel.databases())) {
-      viewModel.database($.totalStorage("${app_name}_last_database"));
+    if ($.totalStorage(hac_getTotalStorageUserPrefix() + "${app_name}_last_database") != null && $.inArray($.totalStorage(hac_getTotalStorageUserPrefix() + "${app_name}_last_database"), viewModel.databases())) {
+      viewModel.database($.totalStorage(hac_getTotalStorageUserPrefix() + "${app_name}_last_database"));
     }
   });
 
@@ -1400,7 +1401,7 @@ $(document).ready(function () {
     }
     $(".CodeMirror-spinner").css("top", pos.top + "px").css("left", (pos.left - 4) + "px").show();
 
-    if ($.totalStorage('tables_' + viewModel.database()) == null) {
+    if ($.totalStorage(hac_getTotalStorageUserPrefix() + 'tables_' + viewModel.database()) == null) {
       CodeMirror.showHint(cm, AUTOCOMPLETE_SET);
       hac_getTables(viewModel.database(), function () {
       }); // if preload didn't work, tries again
@@ -1552,9 +1553,9 @@ $(document).ready(function () {
   });
 
   % if not (design and design.id) and not ( query_history and query_history.id ):
-    if ($.totalStorage("${app_name}_temp_query") != null && $.totalStorage("${app_name}_temp_query") != "") {
+    if ($.totalStorage(hac_getTotalStorageUserPrefix() + "${app_name}_temp_query") != null && $.totalStorage(hac_getTotalStorageUserPrefix() + "${app_name}_temp_query") != "") {
       viewModel.queryEditorBlank(true);
-      codeMirror.setValue($.totalStorage("${app_name}_temp_query"));
+      codeMirror.setValue($.totalStorage(hac_getTotalStorageUserPrefix() + "${app_name}_temp_query"));
     }
   % endif
 
@@ -1872,7 +1873,7 @@ function addRowNumberToResults(data, startIndex) {
 function addResults(viewModel, dataTable, index, pageSize) {
   if (viewModel.hasMoreResults() && index + pageSize > viewModel.design.results.rows().length) {
     $(document).one('fetched.results', function () {
-      $.totalStorage("${app_name}_temp_query", null);
+      $.totalStorage(hac_getTotalStorageUserPrefix() + "${app_name}_temp_query", null);
       dataTable.fnAddData(addRowNumberToResults(viewModel.design.results.rows.slice(index, index + pageSize), index));
     });
     viewModel.fetchResults();
@@ -2119,7 +2120,7 @@ function tryCancelQuery() {
 }
 
 function createNewQuery() {
-  $.totalStorage("${app_name}_temp_query", null);
+  $.totalStorage(hac_getTotalStorageUserPrefix() + "${app_name}_temp_query", null);
   location.href="${ url(app_name + ':execute_query') }";
 }
 
@@ -2495,13 +2496,13 @@ function watchEvents() {
 function cacheQueryTextEvents() {
   codeMirror.on("change", function () {
     $(".query").val(codeMirror.getValue());
-    $.totalStorage("${app_name}_temp_query", codeMirror.getValue());
+    $.totalStorage(hac_getTotalStorageUserPrefix() + "${app_name}_temp_query", codeMirror.getValue());
   });
 }
 
 function databaseCacheWriter() {
   $(".chosen-select").chosen().change(function () {
-    $.totalStorage("${app_name}_last_database", viewModel.database());
+    $.totalStorage(hac_getTotalStorageUserPrefix() + "${app_name}_last_database", viewModel.database());
   });
 }
 

+ 25 - 18
apps/beeswax/static/js/autocomplete.utils.js

@@ -63,6 +63,13 @@ function hac_getTableAliases(textScanned) {
   return _aliases;
 }
 
+function hac_getTotalStorageUserPrefix(){
+  if (typeof HIVE_AUTOCOMPLETE_USER != "undefined") {
+    return HIVE_AUTOCOMPLETE_USER + "_";
+  }
+  return "";
+}
+
 function hac_getTableColumns(databaseName, tableName, textScanned, callback) {
   if (tableName.indexOf("(") > -1) {
     tableName = tableName.substr(tableName.indexOf("(") + 1);
@@ -73,9 +80,9 @@ function hac_getTableColumns(databaseName, tableName, textScanned, callback) {
     tableName = _aliases[tableName];
   }
 
-  if ($.totalStorage('columns_' + databaseName + '_' + tableName) != null && $.totalStorage('extended_columns_' + databaseName + '_' + tableName) != null) {
-    callback($.totalStorage('columns_' + databaseName + '_' + tableName), $.totalStorage('extended_columns_' + databaseName + '_' + tableName));
-    if ($.totalStorage('timestamp_columns_' + databaseName + '_' + tableName) == null || hac_hasExpired($.totalStorage('timestamp_columns_' + databaseName + '_' + tableName))){
+  if ($.totalStorage(hac_getTotalStorageUserPrefix() + 'columns_' + databaseName + '_' + tableName) != null && $.totalStorage(hac_getTotalStorageUserPrefix() + 'extended_columns_' + databaseName + '_' + tableName) != null) {
+    callback($.totalStorage(hac_getTotalStorageUserPrefix() + 'columns_' + databaseName + '_' + tableName), $.totalStorage(hac_getTotalStorageUserPrefix() + 'extended_columns_' + databaseName + '_' + tableName));
+    if ($.totalStorage(hac_getTotalStorageUserPrefix() + 'timestamp_columns_' + databaseName + '_' + tableName) == null || hac_hasExpired($.totalStorage(hac_getTotalStorageUserPrefix() + 'timestamp_columns_' + databaseName + '_' + tableName))){
       hac_jsoncalls({
         database: databaseName,
         table: tableName,
@@ -87,9 +94,9 @@ function hac_getTableColumns(databaseName, tableName, textScanned, callback) {
             hac_errorHandler(data);
           }
           else {
-            $.totalStorage('columns_' + databaseName + '_' + tableName, (data.columns ? "* " + data.columns.join(" ") : "*"));
-            $.totalStorage('extended_columns_' + databaseName + '_' + tableName, (data.extended_columns ? data.extended_columns : []));
-            $.totalStorage('timestamp_columns_' + databaseName + '_' + tableName, (new Date()).getTime());
+            $.totalStorage(hac_getTotalStorageUserPrefix() + 'columns_' + databaseName + '_' + tableName, (data.columns ? "* " + data.columns.join(" ") : "*"));
+            $.totalStorage(hac_getTotalStorageUserPrefix() + 'extended_columns_' + databaseName + '_' + tableName, (data.extended_columns ? data.extended_columns : []));
+            $.totalStorage(hac_getTotalStorageUserPrefix() + 'timestamp_columns_' + databaseName + '_' + tableName, (new Date()).getTime());
           }
         }
       });
@@ -107,10 +114,10 @@ function hac_getTableColumns(databaseName, tableName, textScanned, callback) {
           hac_errorHandler(data);
         }
         else {
-          $.totalStorage('columns_' + databaseName + '_' + tableName, (data.columns ? "* " + data.columns.join(" ") : "*"));
-          $.totalStorage('extended_columns_' + databaseName + '_' + tableName, (data.extended_columns ? data.extended_columns : []));
-          $.totalStorage('timestamp_columns_' + databaseName + '_' + tableName, (new Date()).getTime());
-          callback($.totalStorage('columns_' + databaseName + '_' + tableName), $.totalStorage('extended_columns_' + databaseName + '_' + tableName));
+          $.totalStorage(hac_getTotalStorageUserPrefix() + 'columns_' + databaseName + '_' + tableName, (data.columns ? "* " + data.columns.join(" ") : "*"));
+          $.totalStorage(hac_getTotalStorageUserPrefix() + 'extended_columns_' + databaseName + '_' + tableName, (data.extended_columns ? data.extended_columns : []));
+          $.totalStorage(hac_getTotalStorageUserPrefix() + 'timestamp_columns_' + databaseName + '_' + tableName, (new Date()).getTime());
+          callback($.totalStorage(hac_getTotalStorageUserPrefix() + 'columns_' + databaseName + '_' + tableName), $.totalStorage(hac_getTotalStorageUserPrefix() + 'extended_columns_' + databaseName + '_' + tableName));
         }
       }
     });
@@ -128,9 +135,9 @@ function hac_tableHasAlias(tableName, textScanned) {
 }
 
 function hac_getTables(databaseName, callback) {
-  if ($.totalStorage('tables_' + databaseName) != null) {
-    callback($.totalStorage('tables_' + databaseName));
-    if ($.totalStorage('timestamp_tables_' + databaseName) == null || hac_hasExpired($.totalStorage('timestamp_tables_' + databaseName))){
+  if ($.totalStorage(hac_getTotalStorageUserPrefix() + 'tables_' + databaseName) != null) {
+    callback($.totalStorage(hac_getTotalStorageUserPrefix() + 'tables_' + databaseName));
+    if ($.totalStorage(hac_getTotalStorageUserPrefix() + 'timestamp_tables_' + databaseName) == null || hac_hasExpired($.totalStorage(hac_getTotalStorageUserPrefix() + 'timestamp_tables_' + databaseName))){
       hac_jsoncalls({
         database: databaseName,
         onDataReceived: function (data) {
@@ -141,8 +148,8 @@ function hac_getTables(databaseName, callback) {
             hac_errorHandler(data);
           }
           else {
-            $.totalStorage('tables_' + databaseName, data.tables.join(" "));
-            $.totalStorage('timestamp_tables_' + databaseName, (new Date()).getTime());
+            $.totalStorage(hac_getTotalStorageUserPrefix() + 'tables_' + databaseName, data.tables.join(" "));
+            $.totalStorage(hac_getTotalStorageUserPrefix() + 'timestamp_tables_' + databaseName, (new Date()).getTime());
           }
         }
       });
@@ -160,9 +167,9 @@ function hac_getTables(databaseName, callback) {
         }
         else {
           if (data.tables) {
-            $.totalStorage('tables_' + databaseName, data.tables.join(" "));
-            $.totalStorage('timestamp_tables_' + databaseName, (new Date()).getTime());
-            callback($.totalStorage('tables_' + databaseName));
+            $.totalStorage(hac_getTotalStorageUserPrefix() + 'tables_' + databaseName, data.tables.join(" "));
+            $.totalStorage(hac_getTotalStorageUserPrefix() + 'timestamp_tables_' + databaseName, (new Date()).getTime());
+            callback($.totalStorage(hac_getTotalStorageUserPrefix() + 'tables_' + databaseName));
           }
         }
       }

+ 1 - 0
apps/pig/src/pig/templates/app.mako

@@ -769,6 +769,7 @@ ${ commonheader(None, "pig", user) | n,unicode }
 
   var HIVE_AUTOCOMPLETE_BASE_URL = "${ autocomplete_base_url | n,unicode }";
   var HIVE_AUTOCOMPLETE_FAILS_SILENTLY_ON = [503]; // error codes from beeswax/views.py - autocomplete
+  var HIVE_AUTOCOMPLETE_USER = "${ user }";
 
   var codeMirror;