jfsii commented on code in PR #3674:
URL: https://github.com/apache/hive/pull/3674#discussion_r998898238


##########
common/src/java/org/apache/hadoop/hive/common/auth/HiveAuthUtils.java:
##########
@@ -50,45 +49,108 @@
 public class HiveAuthUtils {
   private static final Logger LOG = 
LoggerFactory.getLogger(HiveAuthUtils.class);
 
+  /**
+   * Configure the provided T transport's max message size.
+   * @param transport Transport to configure maxMessage for
+   * @param maxMessageSize Maximum allowed message size in bytes, less than or 
equal to 0 means use the Thrift library
+   *                       default.
+   * @return The passed in T transport configured with desired max message 
size. The same object passed in is returned.
+   */
+  public static <T extends TTransport> T configureThriftMaxMessageSize(T 
transport, int maxMessageSize) {
+    if (maxMessageSize > 0) {
+      if (transport.getConfiguration() == null) {
+        LOG.warn("TTransport {} is returning a null Configuration, Thrift max 
message size is not getting configured",
+            transport.getClass().getName());
+        return transport;
+      }
+      transport.getConfiguration().setMaxMessageSize(maxMessageSize);
+    }
+    return transport;
+  }
+
+  /**
+   * Create a TSocket for the provided host and port with specified 
loginTimeout. Thrift maxMessageSize
+   * will default to Thrift library default.
+   * @param host Host to connect to.
+   * @param port Port to connect to.
+   * @param loginTimeout Socket timeout (0 means no timeout).
+   * @return TTransport TSocket for host/port.
+   */
   public static TTransport getSocketTransport(String host, int port, int 
loginTimeout) throws TTransportException {
-    return new TSocket(new TConfiguration(),host, port, loginTimeout);
+    return getSocketTransport(host, port, loginTimeout, -1);
+  }
+
+  /**
+   * Create a TSocket for the provided host and port with specified 
loginTimeout and maxMessageSize.
+   * will default to Thrift library default.
+   * @param host Host to connect to.
+   * @param port Port to connect to.
+   * @param loginTimeout Socket timeout (0 means no timeout).
+   * @param maxMessageSize Size in bytes for max allowable Thrift message 
size, less than or equal to 0
+   *                       results in using the Thrift library default.
+   * @return TTransport TSocket for host/port
+   */
+  public static TTransport getSocketTransport(String host, int port, int 
loginTimeout, int maxMessageSize)
+      throws TTransportException {
+    TSocket tSocket = new TSocket(host, port, loginTimeout);
+    return configureThriftMaxMessageSize(tSocket, maxMessageSize);
+  }
+
+  public static TTransport getSSLSocket(String host, int port, int 
loginTimeout, TSSLTransportParameters params,
+      int maxMessageSize) throws TTransportException {
+    // The underlying SSLSocket object is bound to host:port with the given 
SO_TIMEOUT and
+    // SSLContext created with the given params
+    TSocket tSSLSocket = null;
+    if (params != null) {
+      tSSLSocket = TSSLTransportFactory.getClientSocket(host, port, 
loginTimeout, params);
+    } else {
+      tSSLSocket = TSSLTransportFactory.getClientSocket(host, port, 
loginTimeout);
+    }
+    configureThriftMaxMessageSize(tSSLSocket, maxMessageSize);

Review Comment:
   I was being overly paranoid. Looking closer at getSSLSocketWithHttps, I see 
it doesn't even end up using the TSocket. It grabs the SSLSocket and re-wraps 
it with TSocket. When I originally read the code I thought it was a TSocket 
wrapped by a TSocket which I didn't know which conf would take (but I was 
wrong).



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to