فهرست منبع

HUE-2995 [libsolr] Fix uploading large bodies to Solr with Kerberos

This is the same issue as HUE-2880, where WebHDFS was rejecting
POSTs with a large body if the session hadn't already been
authenticated.
Erick Tryzelaar 10 سال پیش
والد
کامیت
3dd6276a60
1فایلهای تغییر یافته به همراه9 افزوده شده و 0 حذف شده
  1. 9 0
      desktop/libs/libsolr/src/libsolr/api.py

+ 9 - 0
desktop/libs/libsolr/src/libsolr/api.py

@@ -52,10 +52,19 @@ class SolrApi(object):
     self._user = user
     self._client = HttpClient(self._url, logger=LOG)
     self.security_enabled = security_enabled
+
     if self.security_enabled:
       self._client.set_kerberos_auth()
+
     self._root = resource.Resource(self._client)
 
+    # The Kerberos handshake requires two requests in order to authenticate,
+    # but if our first request is a PUT/POST, it might flat-out reject the
+    # first request if the body is too large. So, connect here in order to get
+    # a cookie so future PUT/POSTs will be pre-authenticated.
+    if self.security_enabled:
+      self._root.invoke('HEAD', '/')
+
   def _get_params(self):
     if self.security_enabled:
       return (('doAs', self._user ),)