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

starocean999 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/doris.git


The following commit(s) were added to refs/heads/master by this push:
     new 7b94ac70090 [fix](doris compose) fix network sometimes failed (#48898)
7b94ac70090 is described below

commit 7b94ac70090f49bdc4ccccaa8f865d7a7e418b71
Author: yujun <yu...@selectdb.com>
AuthorDate: Wed Mar 12 09:49:13 2025 +0800

    [fix](doris compose) fix network sometimes failed (#48898)
---
 docker/runtime/doris-compose/cluster.py  |  1 -
 docker/runtime/doris-compose/command.py  | 21 +++++++++++++--------
 docker/runtime/doris-compose/database.py |  8 +++++---
 docker/runtime/doris-compose/utils.py    | 15 ++++++++++-----
 4 files changed, 28 insertions(+), 17 deletions(-)

diff --git a/docker/runtime/doris-compose/cluster.py 
b/docker/runtime/doris-compose/cluster.py
index a25abbf9c3c..513916c2867 100644
--- a/docker/runtime/doris-compose/cluster.py
+++ b/docker/runtime/doris-compose/cluster.py
@@ -464,7 +464,6 @@ class Node(object):
 
         if self.cluster.is_host_network():
             content["network_mode"] = "host"
-            content["ports"] = self.docker_ports()
         else:
             content["hostname"] = self.get_name()
             content["networks"] = {
diff --git a/docker/runtime/doris-compose/command.py 
b/docker/runtime/doris-compose/command.py
index 479077f4182..5f69448fca6 100644
--- a/docker/runtime/doris-compose/command.py
+++ b/docker/runtime/doris-compose/command.py
@@ -635,20 +635,25 @@ class UpCommand(Command):
 
             if cluster.remote_master_fe:
                 if is_new_cluster:
-                    if not cluster.is_cloud:
-                        with open(
-                                CLUSTER.get_master_fe_addr_path(cluster.name),
-                                "w") as f:
-                            f.write(cluster.remote_master_fe)
-                    else:
+                    with open(CLUSTER.get_master_fe_addr_path(cluster.name),
+                              "w") as f:
+                        f.write(cluster.remote_master_fe)
+                    if cluster.is_cloud:
                         cloud_config = "\n".join([
                             f"meta_service_endpoint = 
{cluster.get_meta_server_addr()}",
                             "deploy_mode = cloud",
                             f"cluster_id = {CLUSTER.CLUSTER_ID}",
                         ])
+                        # write add conf to remote_master_fe_add.conf, remote 
fe can send ssh to get this content.
+                        with open(
+                                os.path.join(
+                                    CLUSTER.get_status_path(cluster.name),
+                                    "remote_master_fe_add.conf"), "w") as f:
+                            f.write(cloud_config)
                         ans = input(
-                            f"\nAdd remote fe {cluster.remote_master_fe} 
fe.conf with follow config: \n\n" \
-                            f"{cloud_config}\n\nConfirm ?  y/n: ")
+                            utils.render_red(
+                                f"\nAdd remote fe {cluster.remote_master_fe} 
fe.conf with follow config: "
+                            ) + "\n\n" + f"{cloud_config}\n\nConfirm ?  y/n: ")
                         if ans != 'y':
                             LOG.info(
                                 "Up cluster failed due to not confirm write 
the above config."
diff --git a/docker/runtime/doris-compose/database.py 
b/docker/runtime/doris-compose/database.py
index 50c052dc740..1a5b2d57642 100644
--- a/docker/runtime/doris-compose/database.py
+++ b/docker/runtime/doris-compose/database.py
@@ -186,6 +186,8 @@ class DBManager(object):
                 "provider" = "{cloud_store_config['DORIS_CLOUD_PROVIDER']}"
             );
             """
+            # create hk storage vault from beijing cost 14s
+            self._reset_conn(read_timeout=20)
             self._exec_query(create_vault_sql)
             LOG.info("Created storage vault 'default_vault'")
 
@@ -294,11 +296,11 @@ class DBManager(object):
             return
         self._reset_conn()
 
-    def _reset_conn(self):
+    def _reset_conn(self, read_timeout=10, connect_timeout=3):
         self.conn = pymysql.connect(user="root",
                                     host=self.fe_ip,
-                                    read_timeout=10,
-                                    connect_timeout=3,
+                                    read_timeout=read_timeout,
+                                    connect_timeout=connect_timeout,
                                     port=self.fe_port)
 
 
diff --git a/docker/runtime/doris-compose/utils.py 
b/docker/runtime/doris-compose/utils.py
index 47c3fe45f4b..4ff87ef2229 100644
--- a/docker/runtime/doris-compose/utils.py
+++ b/docker/runtime/doris-compose/utils.py
@@ -303,11 +303,16 @@ def get_local_ip():
     with contextlib.closing(socket.socket(socket.AF_INET,
                                           socket.SOCK_DGRAM)) as sock:
         sock.settimeout(0)
-        try:
-            sock.connect(('10.255.255.255', 1))
-            return sock.getsockname()[0]
-        except Exception:
-            return '127.0.0.1'
+        # the ip no need reachable.
+        # sometime connect to the external network '10.255.255.255' throw 
exception 'Permissions denied',
+        # then change to connect to the local network '192.168.0.255'
+        for ip in (('10.255.255.255'), ('192.168.0.255')):
+            try:
+                sock.connect((ip, 1))
+                return sock.getsockname()[0]
+            except Exception as e:
+                LOG.info(f"get local ip connect {ip} failed: {e}")
+        return '127.0.0.1'
 
 
 def enable_dir_with_rw_perm(dir):


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org
For additional commands, e-mail: commits-h...@doris.apache.org

Reply via email to