This is an automated email from the ASF dual-hosted git repository.

chengpan pushed a commit to branch branch-1.7
in repository https://gitbox.apache.org/repos/asf/kyuubi.git


The following commit(s) were added to refs/heads/branch-1.7 by this push:
     new def4f4ae9 [KYUUBI #5158] Allow embedded Zookeeper binding IP address
def4f4ae9 is described below

commit def4f4ae9f0066f87879559eb806362e42f80ea3
Author: Cheng Pan <[email protected]>
AuthorDate: Wed Aug 16 01:53:51 2023 +0800

    [KYUUBI #5158] Allow embedded Zookeeper binding IP address
    
    ### _Why are the changes needed?_
    
    This PR provides a new configuration 
`kyuubi.zookeeper.embedded.client.use.hostname` to control whether use hostname 
or IP address on binding, to improve the out-of-box experience of K8s case, 
similar to `kyuubi.frontend.connection.url.use.hostname`.
    
    ### _How was this patch tested?_
    - [ ] Add some test cases that check the changes thoroughly including 
negative and positive cases if possible
    
    - [ ] Add screenshots for manual tests if appropriate
    
    - [x] [Run 
test](https://kyuubi.readthedocs.io/en/master/contributing/code/testing.html#running-tests)
 locally before make a pull request
    
    Closes #5158 from pan3793/zk-ip.
    
    Closes #5158
    
    260dae987 [Cheng Pan] nit
    3ac0c430e [Cheng Pan] doc
    de50f65e8 [Cheng Pan] false
    890b13bd9 [Cheng Pan] Allow embedded Zookeeper binding IP address
    
    Authored-by: Cheng Pan <[email protected]>
    Signed-off-by: Cheng Pan <[email protected]>
    (cherry picked from commit 4e4a4e11538dfe6a490368a214bf019af6b4dd2c)
    Signed-off-by: Cheng Pan <[email protected]>
---
 docs/deployment/settings.md                        | 25 +++++++++++-----------
 .../kyuubi/zookeeper/EmbeddedZookeeper.scala       |  8 ++++++-
 .../apache/kyuubi/zookeeper/ZookeeperConf.scala    |  7 ++++++
 3 files changed, 27 insertions(+), 13 deletions(-)

diff --git a/docs/deployment/settings.md b/docs/deployment/settings.md
index f079b5b44..a8ad219fa 100644
--- a/docs/deployment/settings.md
+++ b/docs/deployment/settings.md
@@ -421,18 +421,19 @@ You can configure the Kyuubi properties in 
`$KYUUBI_HOME/conf/kyuubi-defaults.co
 
 ### Zookeeper
 
-|                       Key                        |      Default       |      
                                                                           
Meaning                                                                         
         |  Type  | Since |
-|--------------------------------------------------|--------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------|-------|
-| kyuubi.zookeeper.embedded.client.port            | 2181               | 
clientPort for the embedded ZooKeeper server to listen for client connections, 
a client here could be Kyuubi server, engine, and JDBC client                   
          | int    | 1.2.0 |
-| kyuubi.zookeeper.embedded.client.port.address    | &lt;undefined&gt;  | 
clientPortAddress for the embedded ZooKeeper server to                          
                                                                                
         | string | 1.2.0 |
-| kyuubi.zookeeper.embedded.data.dir               | embedded_zookeeper | 
dataDir for the embedded zookeeper server where stores the in-memory database 
snapshots and, unless specified otherwise, the transaction log of updates to 
the database. | string | 1.2.0 |
-| kyuubi.zookeeper.embedded.data.log.dir           | embedded_zookeeper | 
dataLogDir for the embedded ZooKeeper server where writes the transaction log . 
                                                                                
         | string | 1.2.0 |
-| kyuubi.zookeeper.embedded.directory              | embedded_zookeeper | The 
temporary directory for the embedded ZooKeeper server                           
                                                                                
     | string | 1.0.0 |
-| kyuubi.zookeeper.embedded.max.client.connections | 120                | 
maxClientCnxns for the embedded ZooKeeper server to limit the number of 
concurrent connections of a single client identified by IP address              
                 | int    | 1.2.0 |
-| kyuubi.zookeeper.embedded.max.session.timeout    | 60000              | 
maxSessionTimeout in milliseconds for the embedded ZooKeeper server will allow 
the client to negotiate. Defaults to 20 times the tickTime                      
          | int    | 1.2.0 |
-| kyuubi.zookeeper.embedded.min.session.timeout    | 6000               | 
minSessionTimeout in milliseconds for the embedded ZooKeeper server will allow 
the client to negotiate. Defaults to 2 times the tickTime                       
          | int    | 1.2.0 |
-| kyuubi.zookeeper.embedded.port                   | 2181               | The 
port of the embedded ZooKeeper server                                           
                                                                                
     | int    | 1.0.0 |
-| kyuubi.zookeeper.embedded.tick.time              | 3000               | 
tickTime in milliseconds for the embedded ZooKeeper server                      
                                                                                
         | int    | 1.2.0 |
+|                       Key                        |      Default       |      
                                                                           
Meaning                                                                         
         |  Type   | Since |
+|--------------------------------------------------|--------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------|-------|
+| kyuubi.zookeeper.embedded.client.port            | 2181               | 
clientPort for the embedded ZooKeeper server to listen for client connections, 
a client here could be Kyuubi server, engine, and JDBC client                   
          | int     | 1.2.0 |
+| kyuubi.zookeeper.embedded.client.port.address    | &lt;undefined&gt;  | 
clientPortAddress for the embedded ZooKeeper server to                          
                                                                                
         | string  | 1.2.0 |
+| kyuubi.zookeeper.embedded.client.use.hostname    | false              | When 
true, embedded Zookeeper prefer to bind hostname, otherwise, ip address.        
                                                                                
    | boolean | 1.7.2 |
+| kyuubi.zookeeper.embedded.data.dir               | embedded_zookeeper | 
dataDir for the embedded zookeeper server where stores the in-memory database 
snapshots and, unless specified otherwise, the transaction log of updates to 
the database. | string  | 1.2.0 |
+| kyuubi.zookeeper.embedded.data.log.dir           | embedded_zookeeper | 
dataLogDir for the embedded ZooKeeper server where writes the transaction log . 
                                                                                
         | string  | 1.2.0 |
+| kyuubi.zookeeper.embedded.directory              | embedded_zookeeper | The 
temporary directory for the embedded ZooKeeper server                           
                                                                                
     | string  | 1.0.0 |
+| kyuubi.zookeeper.embedded.max.client.connections | 120                | 
maxClientCnxns for the embedded ZooKeeper server to limit the number of 
concurrent connections of a single client identified by IP address              
                 | int     | 1.2.0 |
+| kyuubi.zookeeper.embedded.max.session.timeout    | 60000              | 
maxSessionTimeout in milliseconds for the embedded ZooKeeper server will allow 
the client to negotiate. Defaults to 20 times the tickTime                      
          | int     | 1.2.0 |
+| kyuubi.zookeeper.embedded.min.session.timeout    | 6000               | 
minSessionTimeout in milliseconds for the embedded ZooKeeper server will allow 
the client to negotiate. Defaults to 2 times the tickTime                       
          | int     | 1.2.0 |
+| kyuubi.zookeeper.embedded.port                   | 2181               | The 
port of the embedded ZooKeeper server                                           
                                                                                
     | int     | 1.0.0 |
+| kyuubi.zookeeper.embedded.tick.time              | 3000               | 
tickTime in milliseconds for the embedded ZooKeeper server                      
                                                                                
         | int     | 1.2.0 |
 
 ## Spark Configurations
 
diff --git 
a/kyuubi-zookeeper/src/main/scala/org/apache/kyuubi/zookeeper/EmbeddedZookeeper.scala
 
b/kyuubi-zookeeper/src/main/scala/org/apache/kyuubi/zookeeper/EmbeddedZookeeper.scala
index 0e980132a..1ce3f49e3 100644
--- 
a/kyuubi-zookeeper/src/main/scala/org/apache/kyuubi/zookeeper/EmbeddedZookeeper.scala
+++ 
b/kyuubi-zookeeper/src/main/scala/org/apache/kyuubi/zookeeper/EmbeddedZookeeper.scala
@@ -43,7 +43,13 @@ class EmbeddedZookeeper extends 
AbstractService("EmbeddedZookeeper") {
     val maxClientCnxns = conf.get(ZK_MAX_CLIENT_CONNECTIONS)
     val minSessionTimeout = conf.get(ZK_MIN_SESSION_TIMEOUT)
     val maxSessionTimeout = conf.get(ZK_MAX_SESSION_TIMEOUT)
-    host = 
conf.get(ZK_CLIENT_PORT_ADDRESS).getOrElse(findLocalInetAddress.getCanonicalHostName)
+    host = conf.get(ZK_CLIENT_PORT_ADDRESS).getOrElse {
+      if (conf.get(ZK_CLIENT_USE_HOSTNAME)) {
+        findLocalInetAddress.getCanonicalHostName
+      } else {
+        findLocalInetAddress.getHostAddress
+      }
+    }
 
     zks = new ZooKeeperServer(dataDirectory, dataDirectory, tickTime)
     zks.setMinSessionTimeout(minSessionTimeout)
diff --git 
a/kyuubi-zookeeper/src/main/scala/org/apache/kyuubi/zookeeper/ZookeeperConf.scala
 
b/kyuubi-zookeeper/src/main/scala/org/apache/kyuubi/zookeeper/ZookeeperConf.scala
index c6256a5e3..6ef494896 100644
--- 
a/kyuubi-zookeeper/src/main/scala/org/apache/kyuubi/zookeeper/ZookeeperConf.scala
+++ 
b/kyuubi-zookeeper/src/main/scala/org/apache/kyuubi/zookeeper/ZookeeperConf.scala
@@ -49,6 +49,13 @@ object ZookeeperConf {
       .stringConf
       .createOptional
 
+  val ZK_CLIENT_USE_HOSTNAME: ConfigEntry[Boolean] =
+    buildConf("kyuubi.zookeeper.embedded.client.use.hostname")
+      .doc("When true, embedded Zookeeper prefer to bind hostname, otherwise, 
ip address.")
+      .version("1.7.2")
+      .booleanConf
+      .createWithDefault(false)
+
   val ZK_DATA_DIR: ConfigEntry[String] = 
buildConf("kyuubi.zookeeper.embedded.data.dir")
     .doc("dataDir for the embedded zookeeper server where stores the in-memory 
database" +
       " snapshots and, unless specified otherwise, the transaction log of 
updates to the database.")

Reply via email to