Browse Source

[hplsql] hplsql_session reuse solution

ayush.goyal 4 years ago
parent
commit
d135a726e5

+ 3 - 0
apps/beeswax/src/beeswax/models.py

@@ -31,6 +31,7 @@ from django.urls import reverse
 from enum import Enum
 from TCLIService.ttypes import TSessionHandle, THandleIdentifier, TOperationState, TOperationHandle, TOperationType
 
+from beeswax.conf import HPLSQL
 from desktop.lib.exceptions_renderable import PopupException
 from desktop.models import Document, Document2
 from desktop.redaction import global_redaction_engine
@@ -399,6 +400,8 @@ class SavedQuery(models.Model):
 class SessionManager(models.Manager):
 
   def get_session(self, user, application='beeswax', filter_open=True):
+    if HPLSQL.get() and application == 'beeswax':
+      application = 'hplsql'
     try:
       q = self.filter(owner=user, application=application).exclude(guid='').exclude(secret='')
       if filter_open:

+ 2 - 1
apps/beeswax/src/beeswax/server/hive_server2_lib.py

@@ -707,10 +707,11 @@ class HiveServerClient(object):
 
     encoded_status, encoded_guid = HiveServerQueryHandle(secret=sessionId.secret, guid=sessionId.guid).get()
     properties = json.dumps(res.configuration)
+    application = 'hplsql' if HPLSQL.get() and self.query_server['server_name'] == 'beeswax' else self.query_server['server_name']
 
     session = Session.objects.create(
         owner=user,
-        application=self.query_server['server_name'],
+        application=application,
         status_code=res.status.statusCode,
         secret=encoded_status,
         guid=encoded_guid,

+ 5 - 1
desktop/libs/notebook/src/notebook/connectors/hiveserver2.py

@@ -57,7 +57,7 @@ try:
   from beeswax import conf as beeswax_conf, data_export
   from beeswax.api import _autocomplete, _get_sample_data
   from beeswax.conf import CONFIG_WHITELIST as hive_settings, DOWNLOAD_ROW_LIMIT, DOWNLOAD_BYTES_LIMIT, MAX_NUMBER_OF_SESSIONS, \
-      has_session_pool, has_multiple_sessions, CLOSE_SESSIONS
+      has_session_pool, has_multiple_sessions, CLOSE_SESSIONS, HPLSQL
   from beeswax.data_export import upload
   from beeswax.design import hql_query
   from beeswax.models import QUERY_TYPES, HiveServerQueryHandle, HiveServerQueryHistory, QueryHistory, Session
@@ -180,6 +180,8 @@ class HS2Api(Api):
   @query_error_handler
   def create_session(self, lang='hive', properties=None):
     application = 'beeswax' if lang == 'hive' or lang == 'llap' else lang
+    if application == 'beeswax' and HPLSQL.get():
+      application = 'hplsql'
 
     if has_session_pool():
       session = Session.objects.get_tez_session(self.user, application, MAX_NUMBER_OF_SESSIONS.get())
@@ -692,6 +694,8 @@ DROP TABLE IF EXISTS `%(table)s`;
       session_id = session.get('id')
       if session_id:
         filters = {'id': session_id, 'application': 'beeswax' if type == 'hive' or type == 'llap' else type}
+        if HPLSQL.get() and filters['application'] == 'beeswax':
+          filters['application'] = 'hplsql'
         if not is_admin(self.user):
           filters['owner'] = self.user
         return Session.objects.get(**filters)