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

yiguolei pushed a commit to branch branch-4.0
in repository https://gitbox.apache.org/repos/asf/doris.git


The following commit(s) were added to refs/heads/branch-4.0 by this push:
     new 5bcc72ef335 branch-4.0: [opt](meta-service)add real request ip for FE 
RPC to MS #59107 (#59386)
5bcc72ef335 is described below

commit 5bcc72ef335d22b2cc634ea665689f8787a62af5
Author: github-actions[bot] 
<41898282+github-actions[bot]@users.noreply.github.com>
AuthorDate: Mon Dec 29 10:50:45 2025 +0800

    branch-4.0: [opt](meta-service)add real request ip for FE RPC to MS #59107 
(#59386)
    
    Cherry-picked from #59107
    
    Co-authored-by: koarz <[email protected]>
---
 .../org/apache/doris/alter/CloudRollupJobV2.java   |  3 +-
 .../apache/doris/alter/CloudSchemaChangeJobV2.java |  4 +-
 .../apache/doris/catalog/CloudTabletStatMgr.java   |  7 ++-
 .../java/org/apache/doris/catalog/OlapTable.java   |  3 ++
 .../org/apache/doris/catalog/StorageVaultMgr.java  | 17 ++++---
 .../cloud/alter/CloudSchemaChangeHandler.java      |  4 +-
 .../apache/doris/cloud/backup/CloudRestoreJob.java |  4 +-
 .../apache/doris/cloud/catalog/CloudPartition.java |  3 ++
 .../doris/cloud/catalog/CloudTabletRebalancer.java |  4 +-
 .../cloud/datasource/CloudInternalCatalog.java     | 58 ++++++++++++++++------
 .../doris/cloud/snapshot/CloudSnapshotHandler.java |  6 ++-
 .../doris/cloud/system/CloudSystemInfoService.java | 16 +++++-
 .../transaction/CloudGlobalTransactionMgr.java     | 54 +++++++++++++-------
 .../doris/common/plugin/CloudPluginDownloader.java |  5 +-
 .../insert/streaming/StreamingInsertJob.java       |  7 ++-
 .../load/routineload/KafkaRoutineLoadJob.java      |  7 ++-
 .../commands/AdminDropClusterSnapshotCommand.java  |  6 ++-
 .../AdminSetAutoClusterSnapshotCommand.java        |  2 +
 ...dminSetClusterSnapshotFeatureSwitchCommand.java |  2 +
 .../commands/ShowCreateStorageVaultCommand.java    |  5 +-
 .../plans/commands/ShowStorageVaultCommand.java    |  5 +-
 .../org/apache/doris/service/FrontendOptions.java  |  6 +++
 22 files changed, 171 insertions(+), 57 deletions(-)

diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/alter/CloudRollupJobV2.java 
b/fe/fe-core/src/main/java/org/apache/doris/alter/CloudRollupJobV2.java
index 31f60edfc54..535e515fef0 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/alter/CloudRollupJobV2.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/alter/CloudRollupJobV2.java
@@ -36,6 +36,7 @@ import org.apache.doris.common.MetaNotFoundException;
 import org.apache.doris.proto.OlapFile;
 import org.apache.doris.qe.ConnectContext;
 import org.apache.doris.qe.OriginStatement;
+import org.apache.doris.service.FrontendOptions;
 import org.apache.doris.task.AgentTask;
 import org.apache.doris.task.AgentTaskQueue;
 import org.apache.doris.thrift.TTabletType;
@@ -207,7 +208,7 @@ public class CloudRollupJobV2 extends RollupJobV2 {
             TTabletType tabletType = 
tbl.getPartitionInfo().getTabletType(partitionId);
             MaterializedIndex rollupIndex = entry.getValue();
             Cloud.CreateTabletsRequest.Builder requestBuilder =
-                    Cloud.CreateTabletsRequest.newBuilder();
+                    
Cloud.CreateTabletsRequest.newBuilder().setRequestIp(FrontendOptions.getLocalHostAddressCached());
             List<String> rowStoreColumns =
                                         
tbl.getTableProperty().getCopiedRowStoreColumns();
             for (Tablet rollupTablet : rollupIndex.getTablets()) {
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/alter/CloudSchemaChangeJobV2.java 
b/fe/fe-core/src/main/java/org/apache/doris/alter/CloudSchemaChangeJobV2.java
index fcf4d7db209..286394135e8 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/alter/CloudSchemaChangeJobV2.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/alter/CloudSchemaChangeJobV2.java
@@ -36,6 +36,7 @@ import org.apache.doris.common.Config;
 import org.apache.doris.common.MetaNotFoundException;
 import org.apache.doris.proto.OlapFile;
 import org.apache.doris.qe.ConnectContext;
+import org.apache.doris.service.FrontendOptions;
 import org.apache.doris.task.AgentTask;
 import org.apache.doris.task.AgentTaskQueue;
 import org.apache.doris.thrift.TTaskType;
@@ -230,7 +231,8 @@ public class CloudSchemaChangeJobV2 extends 
SchemaChangeJobV2 {
                 List<Index> tabletIndexes = originIndexId == 
tbl.getBaseIndexId() ? indexes : null;
 
                 Cloud.CreateTabletsRequest.Builder requestBuilder =
-                        Cloud.CreateTabletsRequest.newBuilder();
+                        Cloud.CreateTabletsRequest.newBuilder()
+                                
.setRequestIp(FrontendOptions.getLocalHostAddressCached());
                 for (Tablet shadowTablet : shadowIdx.getTablets()) {
                     OlapFile.TabletMetaCloudPB.Builder builder =
                             ((CloudInternalCatalog) 
Env.getCurrentInternalCatalog())
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/catalog/CloudTabletStatMgr.java 
b/fe/fe-core/src/main/java/org/apache/doris/catalog/CloudTabletStatMgr.java
index 01f7212cac9..8b519c59867 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/catalog/CloudTabletStatMgr.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/catalog/CloudTabletStatMgr.java
@@ -29,6 +29,7 @@ import org.apache.doris.common.Pair;
 import org.apache.doris.common.util.MasterDaemon;
 import org.apache.doris.metric.MetricRepo;
 import org.apache.doris.rpc.RpcException;
+import org.apache.doris.service.FrontendOptions;
 
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
@@ -65,7 +66,8 @@ public class CloudTabletStatMgr extends MasterDaemon {
         long start = System.currentTimeMillis();
 
         List<GetTabletStatsRequest> reqList = new 
ArrayList<GetTabletStatsRequest>();
-        GetTabletStatsRequest.Builder builder = 
GetTabletStatsRequest.newBuilder();
+        GetTabletStatsRequest.Builder builder =
+                
GetTabletStatsRequest.newBuilder().setRequestIp(FrontendOptions.getLocalHostAddressCached());
         List<Long> dbIds = Env.getCurrentInternalCatalog().getDbIds();
         for (Long dbId : dbIds) {
             Database db = Env.getCurrentInternalCatalog().getDbNullable(dbId);
@@ -96,7 +98,8 @@ public class CloudTabletStatMgr extends MasterDaemon {
 
                                 if (builder.getTabletIdxCount() >= 
Config.get_tablet_stat_batch_size) {
                                     reqList.add(builder.build());
-                                    builder = 
GetTabletStatsRequest.newBuilder();
+                                    builder = 
GetTabletStatsRequest.newBuilder()
+                                            
.setRequestIp(FrontendOptions.getLocalHostAddressCached());
                                 }
                             }
                         }
diff --git a/fe/fe-core/src/main/java/org/apache/doris/catalog/OlapTable.java 
b/fe/fe-core/src/main/java/org/apache/doris/catalog/OlapTable.java
index 2ff2a717594..7607d2c8be7 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/catalog/OlapTable.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/catalog/OlapTable.java
@@ -65,6 +65,7 @@ import org.apache.doris.qe.OriginStatement;
 import org.apache.doris.resource.Tag;
 import org.apache.doris.resource.computegroup.ComputeGroup;
 import org.apache.doris.rpc.RpcException;
+import org.apache.doris.service.FrontendOptions;
 import org.apache.doris.statistics.AnalysisInfo;
 import org.apache.doris.statistics.AnalysisInfo.AnalysisType;
 import org.apache.doris.statistics.BaseAnalysisTask;
@@ -3286,6 +3287,7 @@ public class OlapTable extends Table implements 
MTMVRelatedTableIf, GsonPostProc
 
         // get version rpc
         Cloud.GetVersionRequest request = Cloud.GetVersionRequest.newBuilder()
+                .setRequestIp(FrontendOptions.getLocalHostAddressCached())
                 .setDbId(this.getDatabase().getId())
                 .setTableId(this.id)
                 .setBatchMode(false)
@@ -3339,6 +3341,7 @@ public class OlapTable extends Table implements 
MTMVRelatedTableIf, GsonPostProc
     private static List<Long> getVisibleVersionFromMeta(List<Long> dbIds, 
List<Long> tableIds) {
         // get version rpc
         Cloud.GetVersionRequest request = Cloud.GetVersionRequest.newBuilder()
+                .setRequestIp(FrontendOptions.getLocalHostAddressCached())
                 .setDbId(-1)
                 .setTableId(-1)
                 .setPartitionId(-1)
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/catalog/StorageVaultMgr.java 
b/fe/fe-core/src/main/java/org/apache/doris/catalog/StorageVaultMgr.java
index bdb6ce205ed..1b3158b561a 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/catalog/StorageVaultMgr.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/catalog/StorageVaultMgr.java
@@ -31,6 +31,7 @@ import 
org.apache.doris.nereids.trees.plans.commands.CreateStorageVaultCommand;
 import org.apache.doris.proto.InternalService.PAlterVaultSyncRequest;
 import org.apache.doris.rpc.BackendServiceProxy;
 import org.apache.doris.rpc.RpcException;
+import org.apache.doris.service.FrontendOptions;
 import org.apache.doris.system.Backend;
 import org.apache.doris.system.SystemInfoService;
 import org.apache.doris.thrift.TNetworkAddress;
@@ -197,7 +198,8 @@ public class StorageVaultMgr {
             throw new DdlException("Unknown storage vault type");
         }
         try {
-            Cloud.AlterObjStoreInfoRequest.Builder request = 
Cloud.AlterObjStoreInfoRequest.newBuilder();
+            Cloud.AlterObjStoreInfoRequest.Builder request = 
Cloud.AlterObjStoreInfoRequest.newBuilder()
+                    .setRequestIp(FrontendOptions.getLocalHostAddressCached());
             if (type == StorageVaultType.S3) {
                 properties.keySet().stream()
                         .filter(key -> 
!S3StorageVault.ALLOW_ALTER_PROPERTIES.contains(key))
@@ -241,7 +243,8 @@ public class StorageVaultMgr {
     }
 
     public void setDefaultStorageVault(String vaultName) throws DdlException {
-        Cloud.AlterObjStoreInfoRequest.Builder builder = 
Cloud.AlterObjStoreInfoRequest.newBuilder();
+        Cloud.AlterObjStoreInfoRequest.Builder builder = 
Cloud.AlterObjStoreInfoRequest.newBuilder()
+                .setRequestIp(FrontendOptions.getLocalHostAddressCached());
         Cloud.StorageVaultPB.Builder vaultBuilder = 
Cloud.StorageVaultPB.newBuilder();
         vaultBuilder.setName(vaultName);
         builder.setVault(vaultBuilder.build());
@@ -267,7 +270,8 @@ public class StorageVaultMgr {
     }
 
     public void unsetDefaultStorageVault() throws DdlException {
-        Cloud.AlterObjStoreInfoRequest.Builder builder = 
Cloud.AlterObjStoreInfoRequest.newBuilder();
+        Cloud.AlterObjStoreInfoRequest.Builder builder = 
Cloud.AlterObjStoreInfoRequest.newBuilder()
+                .setRequestIp(FrontendOptions.getLocalHostAddressCached());
         builder.setOp(Operation.UNSET_DEFAULT_VAULT);
         try {
             Cloud.AlterObjStoreInfoResponse resp =
@@ -295,7 +299,8 @@ public class StorageVaultMgr {
     public StorageVaultType getStorageVaultTypeByName(String vaultName) throws 
DdlException {
         try {
             Cloud.GetObjStoreInfoResponse resp = MetaServiceProxy.getInstance()
-                    
.getObjStoreInfo(Cloud.GetObjStoreInfoRequest.newBuilder().build());
+                    .getObjStoreInfo(Cloud.GetObjStoreInfoRequest.newBuilder()
+                    
.setRequestIp(FrontendOptions.getLocalHostAddressCached()).build());
 
             for (Cloud.StorageVaultPB vault : resp.getStorageVaultList()) {
                 if (vault.getName().equals(vaultName)) {
@@ -317,7 +322,7 @@ public class StorageVaultMgr {
     public void createHdfsVault(StorageVault vault) throws Exception {
         Cloud.StorageVaultPB.Builder alterHdfsInfoBuilder = 
buildAlterStorageVaultRequest(vault);
         Cloud.AlterObjStoreInfoRequest.Builder requestBuilder
-                = Cloud.AlterObjStoreInfoRequest.newBuilder();
+                = 
Cloud.AlterObjStoreInfoRequest.newBuilder().setRequestIp(FrontendOptions.getLocalHostAddressCached());
         
requestBuilder.setOp(Cloud.AlterObjStoreInfoRequest.Operation.ADD_HDFS_INFO);
         requestBuilder.setVault(alterHdfsInfoBuilder.build());
         requestBuilder.setSetAsDefaultStorageVault(vault.setAsDefault());
@@ -367,7 +372,7 @@ public class StorageVaultMgr {
     public void createS3Vault(StorageVault vault) throws Exception {
         Cloud.StorageVaultPB.Builder s3StorageVaultBuilder = 
buildAlterStorageVaultRequest(vault);
         Cloud.AlterObjStoreInfoRequest.Builder requestBuilder
-                = Cloud.AlterObjStoreInfoRequest.newBuilder();
+                = 
Cloud.AlterObjStoreInfoRequest.newBuilder().setRequestIp(FrontendOptions.getLocalHostAddressCached());
         
requestBuilder.setOp(Cloud.AlterObjStoreInfoRequest.Operation.ADD_S3_VAULT);
         requestBuilder.setVault(s3StorageVaultBuilder);
         requestBuilder.setSetAsDefaultStorageVault(vault.setAsDefault());
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/cloud/alter/CloudSchemaChangeHandler.java
 
b/fe/fe-core/src/main/java/org/apache/doris/cloud/alter/CloudSchemaChangeHandler.java
index 86fa8edc096..1b4c1899845 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/cloud/alter/CloudSchemaChangeHandler.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/cloud/alter/CloudSchemaChangeHandler.java
@@ -36,6 +36,7 @@ import org.apache.doris.common.MetaNotFoundException;
 import org.apache.doris.common.UserException;
 import org.apache.doris.common.util.DynamicPartitionUtil;
 import org.apache.doris.common.util.PropertyAnalyzer;
+import org.apache.doris.service.FrontendOptions;
 
 import com.google.common.base.Preconditions;
 import com.google.common.collect.Lists;
@@ -425,7 +426,8 @@ public class CloudSchemaChangeHandler extends 
SchemaChangeHandler {
             int nextIndex = tabletIds.size() - index > 
Config.cloud_txn_tablet_batch_size
                     ? index + Config.cloud_txn_tablet_batch_size
                     : tabletIds.size();
-            Cloud.UpdateTabletRequest.Builder requestBuilder = 
Cloud.UpdateTabletRequest.newBuilder();
+            Cloud.UpdateTabletRequest.Builder requestBuilder = 
Cloud.UpdateTabletRequest.newBuilder()
+                    .setRequestIp(FrontendOptions.getLocalHostAddressCached());
             while (index < nextIndex) {
                 Cloud.TabletMetaInfoPB.Builder infoBuilder = 
Cloud.TabletMetaInfoPB.newBuilder();
                 infoBuilder.setTabletId(tabletIds.get(index));
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/cloud/backup/CloudRestoreJob.java 
b/fe/fe-core/src/main/java/org/apache/doris/cloud/backup/CloudRestoreJob.java
index f9b1840f574..57a2888f628 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/cloud/backup/CloudRestoreJob.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/cloud/backup/CloudRestoreJob.java
@@ -53,6 +53,7 @@ import org.apache.doris.common.UserException;
 import org.apache.doris.nereids.trees.plans.commands.RestoreCommand;
 import org.apache.doris.qe.AutoCloseConnectContext;
 import org.apache.doris.qe.ConnectContext;
+import org.apache.doris.service.FrontendOptions;
 import org.apache.doris.task.DownloadTask;
 import org.apache.doris.thrift.TStorageMedium;
 
@@ -376,7 +377,8 @@ public class CloudRestoreJob extends RestoreJob {
             for (int i = 0; i < restoreTablets.size(); i += 
maxCreateTabletBatchSize) {
                 int end = Math.min(i + maxCreateTabletBatchSize, 
restoreTablets.size());
                 List<Tablet> subRestoreTablets = restoreTablets.subList(i, 
end);
-                Cloud.CreateTabletsRequest.Builder requestBuilder = 
Cloud.CreateTabletsRequest.newBuilder();
+                Cloud.CreateTabletsRequest.Builder requestBuilder = 
Cloud.CreateTabletsRequest.newBuilder()
+                        
.setRequestIp(FrontendOptions.getLocalHostAddressCached());
                 for (Tablet restoreTablet : subRestoreTablets) {
                     try {
                         requestBuilder.addTabletMetas(((CloudInternalCatalog) 
Env.getCurrentInternalCatalog())
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/cloud/catalog/CloudPartition.java 
b/fe/fe-core/src/main/java/org/apache/doris/cloud/catalog/CloudPartition.java
index 9c957b70720..8343400f43b 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/cloud/catalog/CloudPartition.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/cloud/catalog/CloudPartition.java
@@ -32,6 +32,7 @@ import org.apache.doris.qe.ConnectContext;
 import org.apache.doris.qe.SessionVariable;
 import org.apache.doris.qe.StmtExecutor;
 import org.apache.doris.rpc.RpcException;
+import org.apache.doris.service.FrontendOptions;
 
 import com.google.gson.annotations.SerializedName;
 import org.apache.logging.log4j.LogManager;
@@ -137,6 +138,7 @@ public class CloudPartition extends Partition {
         }
 
         Cloud.GetVersionRequest request = Cloud.GetVersionRequest.newBuilder()
+                .setRequestIp(FrontendOptions.getLocalHostAddressCached())
                 .setDbId(this.dbId)
                 .setTableId(this.tableId)
                 .setPartitionId(super.getId())
@@ -297,6 +299,7 @@ public class CloudPartition extends Partition {
                 "partition ids size: " + partitionIds.size() + " should equals 
to tablet ids size: " + tableIds.size();
 
         Cloud.GetVersionRequest req = Cloud.GetVersionRequest.newBuilder()
+                .setRequestIp(FrontendOptions.getLocalHostAddressCached())
                 .setDbId(-1)
                 .setTableId(-1)
                 .setPartitionId(-1)
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/cloud/catalog/CloudTabletRebalancer.java
 
b/fe/fe-core/src/main/java/org/apache/doris/cloud/catalog/CloudTabletRebalancer.java
index bbdec086030..056561b198e 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/cloud/catalog/CloudTabletRebalancer.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/cloud/catalog/CloudTabletRebalancer.java
@@ -39,6 +39,7 @@ import org.apache.doris.common.UserException;
 import org.apache.doris.common.util.DebugPointUtil;
 import org.apache.doris.common.util.MasterDaemon;
 import org.apache.doris.rpc.RpcException;
+import org.apache.doris.service.FrontendOptions;
 import org.apache.doris.system.Backend;
 import org.apache.doris.thrift.BackendService;
 import org.apache.doris.thrift.TCheckWarmUpCacheAsyncRequest;
@@ -748,7 +749,8 @@ public class CloudTabletRebalancer extends MasterDaemon {
                 }
                 LOG.info("prepare to notify meta service be {} 
decommissioned", backend.getAddress());
                 Cloud.AlterClusterRequest.Builder builder =
-                        Cloud.AlterClusterRequest.newBuilder();
+                        Cloud.AlterClusterRequest.newBuilder()
+                                
.setRequestIp(FrontendOptions.getLocalHostAddressCached());
                 builder.setCloudUniqueId(Config.cloud_unique_id);
                 
builder.setOp(Cloud.AlterClusterRequest.Operation.NOTIFY_DECOMMISSIONED);
 
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/cloud/datasource/CloudInternalCatalog.java
 
b/fe/fe-core/src/main/java/org/apache/doris/cloud/datasource/CloudInternalCatalog.java
index b4b108fa02d..b68e64f4cf9 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/cloud/datasource/CloudInternalCatalog.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/cloud/datasource/CloudInternalCatalog.java
@@ -62,6 +62,7 @@ import org.apache.doris.proto.OlapFile.EncryptionAlgorithmPB;
 import org.apache.doris.proto.Types;
 import org.apache.doris.qe.ConnectContext;
 import org.apache.doris.rpc.RpcException;
+import org.apache.doris.service.FrontendOptions;
 import org.apache.doris.thrift.TCompressionType;
 import org.apache.doris.thrift.TInvertedIndexFileStorageFormat;
 import org.apache.doris.thrift.TSortType;
@@ -166,6 +167,7 @@ public class CloudInternalCatalog extends InternalCatalog {
                 clusterKeyUids = OlapTable.getClusterKeyUids(columns);
             }
             Cloud.CreateTabletsRequest.Builder requestBuilder = 
Cloud.CreateTabletsRequest.newBuilder();
+            
requestBuilder.setRequestIp(FrontendOptions.getLocalHostAddressCached());
             List<String> rowStoreColumns =
                     tbl.getTableProperty().getCopiedRowStoreColumns();
             for (Tablet tablet : index.getTablets()) {
@@ -483,7 +485,8 @@ public class CloudInternalCatalog extends InternalCatalog {
             return;
         }
 
-        Cloud.PartitionRequest.Builder partitionRequestBuilder = 
Cloud.PartitionRequest.newBuilder();
+        Cloud.PartitionRequest.Builder partitionRequestBuilder = 
Cloud.PartitionRequest.newBuilder()
+                .setRequestIp(FrontendOptions.getLocalHostAddressCached());
         partitionRequestBuilder.setCloudUniqueId(Config.cloud_unique_id);
         partitionRequestBuilder.setTableId(tableId);
         partitionRequestBuilder.addAllPartitionIds(partitionIds);
@@ -528,7 +531,8 @@ public class CloudInternalCatalog extends InternalCatalog {
             return;
         }
 
-        Cloud.PartitionRequest.Builder partitionRequestBuilder = 
Cloud.PartitionRequest.newBuilder();
+        Cloud.PartitionRequest.Builder partitionRequestBuilder = 
Cloud.PartitionRequest.newBuilder()
+                .setRequestIp(FrontendOptions.getLocalHostAddressCached());
         partitionRequestBuilder.setCloudUniqueId(Config.cloud_unique_id);
         partitionRequestBuilder.addAllPartitionIds(partitionIds);
         partitionRequestBuilder.addAllIndexIds(indexIds);
@@ -566,7 +570,8 @@ public class CloudInternalCatalog extends InternalCatalog {
             return;
         }
 
-        Cloud.IndexRequest.Builder indexRequestBuilder = 
Cloud.IndexRequest.newBuilder();
+        Cloud.IndexRequest.Builder indexRequestBuilder = 
Cloud.IndexRequest.newBuilder()
+                .setRequestIp(FrontendOptions.getLocalHostAddressCached());
         indexRequestBuilder.setCloudUniqueId(Config.cloud_unique_id);
         indexRequestBuilder.addAllIndexIds(indexIds);
         indexRequestBuilder.setTableId(tableId);
@@ -603,7 +608,8 @@ public class CloudInternalCatalog extends InternalCatalog {
             return;
         }
 
-        Cloud.IndexRequest.Builder indexRequestBuilder = 
Cloud.IndexRequest.newBuilder();
+        Cloud.IndexRequest.Builder indexRequestBuilder = 
Cloud.IndexRequest.newBuilder()
+                .setRequestIp(FrontendOptions.getLocalHostAddressCached());
         indexRequestBuilder.setCloudUniqueId(Config.cloud_unique_id);
         indexRequestBuilder.addAllIndexIds(indexIds);
         indexRequestBuilder.setDbId(dbId);
@@ -647,7 +653,8 @@ public class CloudInternalCatalog extends InternalCatalog {
         checkKeyInfosBuilder.addDbIds(dbId);
         checkKeyInfosBuilder.addTableIds(tableId);
 
-        Cloud.CheckKVRequest.Builder checkKvRequestBuilder = 
Cloud.CheckKVRequest.newBuilder();
+        Cloud.CheckKVRequest.Builder checkKvRequestBuilder = 
Cloud.CheckKVRequest.newBuilder()
+                .setRequestIp(FrontendOptions.getLocalHostAddressCached());
         checkKvRequestBuilder.setCloudUniqueId(Config.cloud_unique_id);
         checkKvRequestBuilder.setCheckKeys(checkKeyInfosBuilder.build());
         
checkKvRequestBuilder.setOp(Cloud.CheckKVRequest.Operation.CREATE_PARTITION_AFTER_FE_COMMIT);
@@ -687,7 +694,8 @@ public class CloudInternalCatalog extends InternalCatalog {
         checkKeyInfosBuilder.addDbIds(dbId);
         checkKeyInfosBuilder.addTableIds(tableId);
 
-        Cloud.CheckKVRequest.Builder checkKvRequestBuilder = 
Cloud.CheckKVRequest.newBuilder();
+        Cloud.CheckKVRequest.Builder checkKvRequestBuilder = 
Cloud.CheckKVRequest.newBuilder()
+                .setRequestIp(FrontendOptions.getLocalHostAddressCached());
         checkKvRequestBuilder.setCloudUniqueId(Config.cloud_unique_id);
         checkKvRequestBuilder.setCheckKeys(checkKeyInfosBuilder.build());
         
checkKvRequestBuilder.setOp(Cloud.CheckKVRequest.Operation.CREATE_INDEX_AFTER_FE_COMMIT);
@@ -850,7 +858,7 @@ public class CloudInternalCatalog extends InternalCatalog {
         }
 
         Cloud.PartitionRequest.Builder partitionRequestBuilder =
-                Cloud.PartitionRequest.newBuilder();
+                
Cloud.PartitionRequest.newBuilder().setRequestIp(FrontendOptions.getLocalHostAddressCached());
         partitionRequestBuilder.setCloudUniqueId(Config.cloud_unique_id);
         partitionRequestBuilder.setTableId(tableId);
         partitionRequestBuilder.addAllPartitionIds(partitionIds);
@@ -887,7 +895,8 @@ public class CloudInternalCatalog extends InternalCatalog {
     public void removeSchemaChangeJob(long jobId, long dbId, long tableId, 
long indexId, long newIndexId,
             long partitionId, long tabletId, long newTabletId)
             throws DdlException {
-        Cloud.FinishTabletJobRequest.Builder finishTabletJobRequestBuilder = 
Cloud.FinishTabletJobRequest.newBuilder();
+        Cloud.FinishTabletJobRequest.Builder finishTabletJobRequestBuilder =
+                
Cloud.FinishTabletJobRequest.newBuilder().setRequestIp(FrontendOptions.getLocalHostAddressCached());
         finishTabletJobRequestBuilder.setCloudUniqueId(Config.cloud_unique_id);
         
finishTabletJobRequestBuilder.setAction(Cloud.FinishTabletJobRequest.Action.ABORT);
         Cloud.TabletJobInfoPB.Builder tabletJobInfoPBBuilder = 
Cloud.TabletJobInfoPB.newBuilder();
@@ -952,7 +961,8 @@ public class CloudInternalCatalog extends InternalCatalog {
             return;
         }
 
-        Cloud.IndexRequest.Builder indexRequestBuilder = 
Cloud.IndexRequest.newBuilder();
+        Cloud.IndexRequest.Builder indexRequestBuilder = 
Cloud.IndexRequest.newBuilder()
+                .setRequestIp(FrontendOptions.getLocalHostAddressCached());
         indexRequestBuilder.setCloudUniqueId(Config.cloud_unique_id);
         indexRequestBuilder.addAllIndexIds(indexIds);
         indexRequestBuilder.setTableId(tableId);
@@ -1119,7 +1129,10 @@ public class CloudInternalCatalog extends 
InternalCatalog {
         }
 
         Cloud.CreateStageRequest createStageRequest = 
Cloud.CreateStageRequest.newBuilder()
-                
.setCloudUniqueId(Config.cloud_unique_id).setStage(stagePB).build();
+                .setCloudUniqueId(Config.cloud_unique_id)
+                .setRequestIp(FrontendOptions.getLocalHostAddressCached())
+                .setStage(stagePB)
+                .build();
         Cloud.CreateStageResponse response = null;
         int retryTime = 0;
         while (retryTime++ < 3) {
@@ -1225,7 +1238,9 @@ public class CloudInternalCatalog extends InternalCatalog 
{
     private Cloud.GetStageResponse getStageRpc(Cloud.StagePB.StageType 
stageType, String userName,
                                                       String stageName, String 
userId) throws DdlException {
         Cloud.GetStageRequest.Builder builder = 
Cloud.GetStageRequest.newBuilder()
-                .setCloudUniqueId(Config.cloud_unique_id).setType(stageType);
+                .setCloudUniqueId(Config.cloud_unique_id)
+                .setRequestIp(FrontendOptions.getLocalHostAddressCached())
+                .setType(stageType);
         if (userName != null) {
             builder.setMysqlUserName(userName);
         }
@@ -1257,7 +1272,9 @@ public class CloudInternalCatalog extends InternalCatalog 
{
         }
 
         Cloud.DropStageRequest.Builder builder = 
Cloud.DropStageRequest.newBuilder()
-                .setCloudUniqueId(Config.cloud_unique_id).setType(stageType);
+                .setCloudUniqueId(Config.cloud_unique_id)
+                .setRequestIp(FrontendOptions.getLocalHostAddressCached())
+                .setType(stageType);
         if (userName != null) {
             builder.setMysqlUserName(userName);
         }
@@ -1318,6 +1335,7 @@ public class CloudInternalCatalog extends InternalCatalog 
{
                                         long sizeLimit, int fileNumLimit, int 
fileMetaSizeLimit) throws DdlException {
         Cloud.BeginCopyRequest request = Cloud.BeginCopyRequest.newBuilder()
                 
.setCloudUniqueId(Config.cloud_unique_id).setStageId(stageId).setStageType(stageType)
+                .setRequestIp(FrontendOptions.getLocalHostAddressCached())
                 
.setTableId(tableId).setCopyId(copyJobId).setGroupId(groupId).setStartTimeMs(startTime)
                 
.setTimeoutTimeMs(timeoutTime).addAllObjectFiles(objectFiles).setFileNumLimit(fileNumLimit)
                 
.setFileSizeLimit(sizeLimit).setFileMetaSizeLimit(fileMetaSizeLimit).build();
@@ -1347,7 +1365,8 @@ public class CloudInternalCatalog extends InternalCatalog 
{
 
     public Cloud.GetIamResponse getIam() throws DdlException {
         Cloud.GetIamRequest.Builder builder = Cloud.GetIamRequest.newBuilder()
-                .setCloudUniqueId(Config.cloud_unique_id);
+                .setCloudUniqueId(Config.cloud_unique_id)
+                .setRequestIp(FrontendOptions.getLocalHostAddressCached());
         Cloud.GetIamResponse response = null;
         try {
             response = MetaServiceProxy.getInstance().getIam(builder.build());
@@ -1362,6 +1381,7 @@ public class CloudInternalCatalog extends InternalCatalog 
{
                            int groupId, Action action) throws DdlException {
         Cloud.FinishCopyRequest request = Cloud.FinishCopyRequest.newBuilder()
                 
.setCloudUniqueId(Config.cloud_unique_id).setStageId(stageId).setStageType(stageType)
+                .setRequestIp(FrontendOptions.getLocalHostAddressCached())
                 .setTableId(tableId).setCopyId(copyJobId).setGroupId(groupId)
                 
.setAction(action).setFinishTimeMs(System.currentTimeMillis()).build();
         Cloud.FinishCopyResponse response = null;
@@ -1399,7 +1419,9 @@ public class CloudInternalCatalog extends InternalCatalog 
{
 
     public CopyJobPB getCopyJob(String stageId, long tableId, String 
copyJobId, int groupId) throws DdlException {
         Cloud.GetCopyJobRequest request = Cloud.GetCopyJobRequest.newBuilder()
-                
.setCloudUniqueId(Config.cloud_unique_id).setStageId(stageId).setTableId(tableId).setCopyId(copyJobId)
+                .setCloudUniqueId(Config.cloud_unique_id)
+                .setRequestIp(FrontendOptions.getLocalHostAddressCached())
+                .setStageId(stageId).setTableId(tableId).setCopyId(copyJobId)
                 .setGroupId(groupId).build();
         Cloud.GetCopyJobResponse response = null;
         try {
@@ -1417,7 +1439,9 @@ public class CloudInternalCatalog extends InternalCatalog 
{
 
     public List<ObjectFilePB> getCopyFiles(String stageId, long tableId) 
throws DdlException {
         Cloud.GetCopyFilesRequest.Builder builder = 
Cloud.GetCopyFilesRequest.newBuilder()
-                
.setCloudUniqueId(Config.cloud_unique_id).setStageId(stageId).setTableId(tableId);
+                .setCloudUniqueId(Config.cloud_unique_id)
+                .setRequestIp(FrontendOptions.getLocalHostAddressCached())
+                .setStageId(stageId).setTableId(tableId);
         Cloud.GetCopyFilesResponse response = null;
         try {
             response = 
MetaServiceProxy.getInstance().getCopyFiles(builder.build());
@@ -1435,7 +1459,9 @@ public class CloudInternalCatalog extends InternalCatalog 
{
     public List<ObjectFilePB> filterCopyFiles(String stageId, long tableId, 
List<ObjectFile> objectFiles)
             throws DdlException {
         Cloud.FilterCopyFilesRequest.Builder builder = 
Cloud.FilterCopyFilesRequest.newBuilder()
-                
.setCloudUniqueId(Config.cloud_unique_id).setStageId(stageId).setTableId(tableId);
+                .setCloudUniqueId(Config.cloud_unique_id)
+                .setRequestIp(FrontendOptions.getLocalHostAddressCached())
+                .setStageId(stageId).setTableId(tableId);
         for (ObjectFile objectFile : objectFiles) {
             builder.addObjectFiles(
                     
ObjectFilePB.newBuilder().setRelativePath(objectFile.getRelativePath())
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/cloud/snapshot/CloudSnapshotHandler.java
 
b/fe/fe-core/src/main/java/org/apache/doris/cloud/snapshot/CloudSnapshotHandler.java
index 49542cf2ad1..dad391cc948 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/cloud/snapshot/CloudSnapshotHandler.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/cloud/snapshot/CloudSnapshotHandler.java
@@ -24,6 +24,7 @@ import org.apache.doris.common.DdlException;
 import org.apache.doris.common.NotImplementedException;
 import org.apache.doris.common.util.MasterDaemon;
 import org.apache.doris.rpc.RpcException;
+import org.apache.doris.service.FrontendOptions;
 
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
@@ -76,7 +77,10 @@ public class CloudSnapshotHandler extends MasterDaemon {
     public Cloud.ListSnapshotResponse listSnapshot(boolean includeAborted) 
throws DdlException {
         try {
             Cloud.ListSnapshotRequest request = 
Cloud.ListSnapshotRequest.newBuilder()
-                    
.setCloudUniqueId(Config.cloud_unique_id).setIncludeAborted(includeAborted).build();
+                    .setCloudUniqueId(Config.cloud_unique_id)
+                    .setRequestIp(FrontendOptions.getLocalHostAddressCached())
+                    .setIncludeAborted(includeAborted)
+                    .build();
             Cloud.ListSnapshotResponse response = 
MetaServiceProxy.getInstance().listSnapshot(request);
             if (response.getStatus().getCode() != Cloud.MetaServiceCode.OK) {
                 LOG.warn("listSnapshot response: {} ", response);
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/cloud/system/CloudSystemInfoService.java
 
b/fe/fe-core/src/main/java/org/apache/doris/cloud/system/CloudSystemInfoService.java
index 9708d49686f..f21da5e039a 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/cloud/system/CloudSystemInfoService.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/cloud/system/CloudSystemInfoService.java
@@ -43,6 +43,7 @@ import 
org.apache.doris.nereids.trees.plans.commands.info.ModifyBackendOp;
 import org.apache.doris.qe.ConnectContext;
 import org.apache.doris.resource.Tag;
 import org.apache.doris.rpc.RpcException;
+import org.apache.doris.service.FrontendOptions;
 import org.apache.doris.system.Backend;
 import org.apache.doris.system.Frontend;
 import org.apache.doris.system.SystemInfoService;
@@ -234,6 +235,7 @@ public class CloudSystemInfoService extends 
SystemInfoService {
     public Cloud.GetClusterResponse getCloudCluster(String clusterName, String 
clusterId, String userName) {
         Cloud.GetClusterRequest.Builder builder = 
Cloud.GetClusterRequest.newBuilder();
         builder.setCloudUniqueId(Config.cloud_unique_id)
+            .setRequestIp(FrontendOptions.getLocalHostAddressCached())
             
.setClusterName(clusterName).setClusterId(clusterId).setMysqlUserName(userName);
         final Cloud.GetClusterRequest pRequest = builder.build();
         Cloud.GetClusterResponse response;
@@ -466,6 +468,7 @@ public class CloudSystemInfoService extends 
SystemInfoService {
                 .build();
         Cloud.AlterClusterRequest request = 
Cloud.AlterClusterRequest.newBuilder()
                 .setCloudUniqueId(Config.cloud_unique_id)
+                .setRequestIp(FrontendOptions.getLocalHostAddressCached())
                 .setOp(Cloud.AlterClusterRequest.Operation.ALTER_VCLUSTER_INFO)
                 .setCluster(clusterPB)
                 .build();
@@ -510,6 +513,7 @@ public class CloudSystemInfoService extends 
SystemInfoService {
 
         Cloud.AlterClusterRequest request = 
Cloud.AlterClusterRequest.newBuilder()
                 .setInstanceId(((CloudEnv) 
Env.getCurrentEnv()).getCloudInstanceId())
+                .setRequestIp(FrontendOptions.getLocalHostAddressCached())
                 .setOp(Cloud.AlterClusterRequest.Operation.ALTER_VCLUSTER_INFO)
                 .setCluster(clusterPB)
                 .build();
@@ -555,6 +559,7 @@ public class CloudSystemInfoService extends 
SystemInfoService {
 
         Cloud.AlterClusterRequest request = 
Cloud.AlterClusterRequest.newBuilder()
                 .setInstanceId(((CloudEnv) 
Env.getCurrentEnv()).getCloudInstanceId())
+                .setRequestIp(FrontendOptions.getLocalHostAddressCached())
                 .setOp(operation)
                 .setCluster(clusterPB)
                 .build();
@@ -623,6 +628,7 @@ public class CloudSystemInfoService extends 
SystemInfoService {
 
         Cloud.AlterClusterRequest request = 
Cloud.AlterClusterRequest.newBuilder()
                 .setInstanceId(((CloudEnv) 
Env.getCurrentEnv()).getCloudInstanceId())
+                .setRequestIp(FrontendOptions.getLocalHostAddressCached())
                 .setOp(Cloud.AlterClusterRequest.Operation.ADD_NODE)
                 .setCluster(clusterPB)
                 .build();
@@ -1254,6 +1260,7 @@ public class CloudSystemInfoService extends 
SystemInfoService {
 
         Cloud.AlterClusterRequest request = 
Cloud.AlterClusterRequest.newBuilder()
                 .setInstanceId(((CloudEnv) 
Env.getCurrentEnv()).getCloudInstanceId())
+                .setRequestIp(FrontendOptions.getLocalHostAddressCached())
                 .setOp(op)
                 .setCluster(clusterPB)
                 .build();
@@ -1297,6 +1304,7 @@ public class CloudSystemInfoService extends 
SystemInfoService {
 
         Cloud.AlterClusterRequest request = 
Cloud.AlterClusterRequest.newBuilder()
                 .setCloudUniqueId(Config.cloud_unique_id)
+                .setRequestIp(FrontendOptions.getLocalHostAddressCached())
                 .setOp(Cloud.AlterClusterRequest.Operation.ADD_CLUSTER)
                 .setCluster(clusterPB)
                 .build();
@@ -1349,7 +1357,7 @@ public class CloudSystemInfoService extends 
SystemInfoService {
 
     public Cloud.GetInstanceResponse getCloudInstance() {
         Cloud.GetInstanceRequest.Builder builder = 
Cloud.GetInstanceRequest.newBuilder();
-        builder.setCloudUniqueId(Config.cloud_unique_id);
+        
builder.setCloudUniqueId(Config.cloud_unique_id).setRequestIp(FrontendOptions.getLocalHostAddressCached());
         final Cloud.GetInstanceRequest pRequest = builder.build();
         Cloud.GetInstanceResponse response;
         try {
@@ -1455,6 +1463,7 @@ public class CloudSystemInfoService extends 
SystemInfoService {
             }
             Cloud.AlterClusterRequest.Builder builder = 
Cloud.AlterClusterRequest.newBuilder();
             builder.setCloudUniqueId(Config.cloud_unique_id);
+            builder.setRequestIp(FrontendOptions.getLocalHostAddressCached());
             
builder.setOp(Cloud.AlterClusterRequest.Operation.SET_CLUSTER_STATUS);
 
             ClusterPB.Builder clusterBuilder = ClusterPB.newBuilder();
@@ -1523,6 +1532,7 @@ public class CloudSystemInfoService extends 
SystemInfoService {
         builder.setInstanceId(instanceId);
         builder.setName(name);
         builder.setSseEnabled(sseEnabled);
+        builder.setRequestIp(FrontendOptions.getLocalHostAddressCached());
 
         Cloud.CreateInstanceResponse response;
         try {
@@ -1544,7 +1554,7 @@ public class CloudSystemInfoService extends 
SystemInfoService {
 
     public String getInstanceId(String cloudUniqueId) throws IOException {
         Cloud.GetInstanceRequest.Builder builder = 
Cloud.GetInstanceRequest.newBuilder();
-        builder.setCloudUniqueId(cloudUniqueId);
+        
builder.setCloudUniqueId(cloudUniqueId).setRequestIp(FrontendOptions.getLocalHostAddressCached());
 
         Cloud.GetInstanceResponse response;
         try {
@@ -1643,6 +1653,7 @@ public class CloudSystemInfoService extends 
SystemInfoService {
 
         Cloud.AlterClusterRequest request = 
Cloud.AlterClusterRequest.newBuilder()
                 .setInstanceId(((CloudEnv) 
Env.getCurrentEnv()).getCloudInstanceId())
+                .setRequestIp(FrontendOptions.getLocalHostAddressCached())
                 .setOp(Cloud.AlterClusterRequest.Operation.RENAME_CLUSTER)
                 .setReplaceIfExistingEmptyTargetCluster(true)
                 .setCluster(clusterPB)
@@ -1687,6 +1698,7 @@ public class CloudSystemInfoService extends 
SystemInfoService {
 
         Cloud.AlterClusterRequest request = 
Cloud.AlterClusterRequest.newBuilder()
                 .setInstanceId(((CloudEnv) 
Env.getCurrentEnv()).getCloudInstanceId())
+                .setRequestIp(FrontendOptions.getLocalHostAddressCached())
                 .setOp(Cloud.AlterClusterRequest.Operation.ALTER_PROPERTIES)
                 .setCluster(clusterPB)
                 .build();
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/cloud/transaction/CloudGlobalTransactionMgr.java
 
b/fe/fe-core/src/main/java/org/apache/doris/cloud/transaction/CloudGlobalTransactionMgr.java
index 3503ad78bbc..8c636ec678a 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/cloud/transaction/CloudGlobalTransactionMgr.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/cloud/transaction/CloudGlobalTransactionMgr.java
@@ -95,6 +95,7 @@ import 
org.apache.doris.persist.BatchRemoveTransactionsOperationV2;
 import org.apache.doris.persist.EditLog;
 import org.apache.doris.qe.ConnectContext;
 import org.apache.doris.rpc.RpcException;
+import org.apache.doris.service.FrontendOptions;
 import org.apache.doris.task.AgentBatchTask;
 import org.apache.doris.task.AgentTaskExecutor;
 import org.apache.doris.task.AgentTaskQueue;
@@ -304,6 +305,7 @@ public class CloudGlobalTransactionMgr implements 
GlobalTransactionMgrIface {
             final BeginTxnRequest beginTxnRequest = 
BeginTxnRequest.newBuilder()
                     .setTxnInfo(txnInfoBuilder.build())
                     .setCloudUniqueId(Config.cloud_unique_id)
+                    .setRequestIp(FrontendOptions.getLocalHostAddressCached())
                     .build();
 
             while (retryTime < Config.metaServiceRpcRetryTimes()) {
@@ -362,7 +364,8 @@ public class CloudGlobalTransactionMgr implements 
GlobalTransactionMgrIface {
             throw new TransactionCommitFailedException("disable_load_job is 
set to true, all load jobs are prevented");
         }
 
-        PrecommitTxnRequest.Builder builder = PrecommitTxnRequest.newBuilder();
+        PrecommitTxnRequest.Builder builder = PrecommitTxnRequest.newBuilder()
+                .setRequestIp(FrontendOptions.getLocalHostAddressCached());
         builder.setDbId(db.getId());
         builder.setTxnId(transactionId);
 
@@ -599,7 +602,8 @@ public class CloudGlobalTransactionMgr implements 
GlobalTransactionMgrIface {
                     Config.calculate_delete_bitmap_task_timeout_seconds);
         }
 
-        CommitTxnRequest.Builder builder = CommitTxnRequest.newBuilder();
+        CommitTxnRequest.Builder builder = CommitTxnRequest.newBuilder()
+                .setRequestIp(FrontendOptions.getLocalHostAddressCached());
         builder.setDbId(dbId)
                 .setTxnId(transactionId)
                 .setIs2Pc(is2PC)
@@ -1062,7 +1066,8 @@ public class CloudGlobalTransactionMgr implements 
GlobalTransactionMgrIface {
         try {
             getPartitionInfo(mowTableList, tabletCommitInfos, lockContext);
             for (Map.Entry<Long, Set<Long>> entry : 
lockContext.getTableToPartitions().entrySet()) {
-                GetDeleteBitmapUpdateLockRequest.Builder builder = 
GetDeleteBitmapUpdateLockRequest.newBuilder();
+                GetDeleteBitmapUpdateLockRequest.Builder builder = 
GetDeleteBitmapUpdateLockRequest.newBuilder()
+                        
.setRequestIp(FrontendOptions.getLocalHostAddressCached());
                 long tableId = entry.getKey();
                 
builder.setTableId(tableId).setLockId(transactionId).setInitiator(-1)
                         
.setExpiration(Config.delete_bitmap_lock_expiration_seconds).setRequireCompactionStats(true);
@@ -1227,7 +1232,9 @@ public class CloudGlobalTransactionMgr implements 
GlobalTransactionMgrIface {
 
     private void removeDeleteBitmapUpdateLock(List<OlapTable> tableList, long 
transactionId) {
         for (OlapTable table : tableList) {
-            RemoveDeleteBitmapUpdateLockRequest.Builder builder = 
RemoveDeleteBitmapUpdateLockRequest.newBuilder();
+            RemoveDeleteBitmapUpdateLockRequest.Builder builder =
+                    RemoveDeleteBitmapUpdateLockRequest.newBuilder()
+                            
.setRequestIp(FrontendOptions.getLocalHostAddressCached());
             builder.setTableId(table.getId())
                     .setLockId(transactionId)
                     .setInitiator(-1);
@@ -1512,7 +1519,8 @@ public class CloudGlobalTransactionMgr implements 
GlobalTransactionMgrIface {
         }
 
         cleanSubTransactions(transactionId);
-        CommitTxnRequest.Builder builder = CommitTxnRequest.newBuilder();
+        CommitTxnRequest.Builder builder = CommitTxnRequest.newBuilder()
+                .setRequestIp(FrontendOptions.getLocalHostAddressCached());
         builder.setDbId(dbId)
                 .setTxnId(transactionId)
                 .setIs2Pc(false)
@@ -1723,7 +1731,8 @@ public class CloudGlobalTransactionMgr implements 
GlobalTransactionMgrIface {
             TxnCommitAttachment txnCommitAttachment) throws UserException {
         LOG.info("try to abort transaction, dbId:{}, transactionId:{}, reason: 
{}", dbId, transactionId, reason);
 
-        AbortTxnRequest.Builder builder = AbortTxnRequest.newBuilder();
+        AbortTxnRequest.Builder builder = AbortTxnRequest.newBuilder()
+                .setRequestIp(FrontendOptions.getLocalHostAddressCached());
         if (reason != null && reason.length() > 1024) {
             reason = reason.substring(0, 1024) + " ... (reason is truncated, 
check fe.log with txnId for details)";
         }
@@ -1819,7 +1828,8 @@ public class CloudGlobalTransactionMgr implements 
GlobalTransactionMgrIface {
     public void abortTransaction(Long dbId, String label, String reason) 
throws UserException {
         LOG.info("try to abort transaction, dbId:{}, label:{}", dbId, label);
 
-        AbortTxnRequest.Builder builder = AbortTxnRequest.newBuilder();
+        AbortTxnRequest.Builder builder = AbortTxnRequest.newBuilder()
+                .setRequestIp(FrontendOptions.getLocalHostAddressCached());
         builder.setDbId(dbId);
         builder.setLabel(label);
         builder.setReason(reason);
@@ -1890,7 +1900,8 @@ public class CloudGlobalTransactionMgr implements 
GlobalTransactionMgrIface {
         if (endTransactionId <= 0) {
             throw new UserException("Invaid endTransactionId:" + 
endTransactionId);
         }
-        CheckTxnConflictRequest.Builder builder = 
CheckTxnConflictRequest.newBuilder();
+        CheckTxnConflictRequest.Builder builder = 
CheckTxnConflictRequest.newBuilder()
+                .setRequestIp(FrontendOptions.getLocalHostAddressCached());
         builder.setDbId(dbId);
         builder.setEndTxnId(endTransactionId);
         builder.addAllTableIds(tableIdList);
@@ -1927,7 +1938,8 @@ public class CloudGlobalTransactionMgr implements 
GlobalTransactionMgrIface {
         if (endTransactionId <= 0) {
             throw new AnalysisException("Invaid endTransactionId:" + 
endTransactionId);
         }
-        CheckTxnConflictRequest.Builder builder = 
CheckTxnConflictRequest.newBuilder();
+        CheckTxnConflictRequest.Builder builder = 
CheckTxnConflictRequest.newBuilder()
+                .setRequestIp(FrontendOptions.getLocalHostAddressCached());
         builder.setDbId(dbId);
         builder.setEndTxnId(endTransactionId);
         builder.addAllTableIds(tableIdList);
@@ -1963,7 +1975,8 @@ public class CloudGlobalTransactionMgr implements 
GlobalTransactionMgrIface {
         if (endTransactionId <= 0) {
             throw new AnalysisException("Invaid endTransactionId:" + 
endTransactionId);
         }
-        CheckTxnConflictRequest.Builder builder = 
CheckTxnConflictRequest.newBuilder();
+        CheckTxnConflictRequest.Builder builder = 
CheckTxnConflictRequest.newBuilder()
+                .setRequestIp(FrontendOptions.getLocalHostAddressCached());
         builder.setDbId(dbId);
         builder.setEndTxnId(endTransactionId);
         builder.addAllTableIds(tableIdList);
@@ -1994,7 +2007,8 @@ public class CloudGlobalTransactionMgr implements 
GlobalTransactionMgrIface {
 
     public void cleanLabel(Long dbId, String label, boolean isReplay) throws 
Exception {
         LOG.info("try to cleanLabel dbId: {}, label:{}", dbId, label);
-        CleanTxnLabelRequest.Builder builder = 
CleanTxnLabelRequest.newBuilder();
+        CleanTxnLabelRequest.Builder builder = 
CleanTxnLabelRequest.newBuilder()
+                .setRequestIp(FrontendOptions.getLocalHostAddressCached());
         builder.setDbId(dbId).setCloudUniqueId(Config.cloud_unique_id);
 
         if (!Strings.isNullOrEmpty(label)) {
@@ -2090,7 +2104,8 @@ public class CloudGlobalTransactionMgr implements 
GlobalTransactionMgrIface {
 
     @Override
     public void abortTxnWhenCoordinateBeRestart(long coordinateBeId, String 
coordinateHost, long beStartTime) {
-        AbortTxnWithCoordinatorRequest.Builder builder = 
AbortTxnWithCoordinatorRequest.newBuilder();
+        AbortTxnWithCoordinatorRequest.Builder builder = 
AbortTxnWithCoordinatorRequest.newBuilder()
+                .setRequestIp(FrontendOptions.getLocalHostAddressCached());
         builder.setIp(coordinateHost);
         builder.setId(coordinateBeId);
         builder.setStartTime(beStartTime);
@@ -2131,7 +2146,8 @@ public class CloudGlobalTransactionMgr implements 
GlobalTransactionMgrIface {
 
     @Override
     public TransactionStatus getLabelState(long dbId, String label) throws 
AnalysisException {
-        GetTxnRequest.Builder builder = GetTxnRequest.newBuilder();
+        GetTxnRequest.Builder builder = GetTxnRequest.newBuilder()
+                .setRequestIp(FrontendOptions.getLocalHostAddressCached());
         
builder.setDbId(dbId).setCloudUniqueId(Config.cloud_unique_id).setLabel(label);
         final GetTxnRequest getTxnRequest = builder.build();
         GetTxnResponse getTxnResponse = null;
@@ -2187,7 +2203,8 @@ public class CloudGlobalTransactionMgr implements 
GlobalTransactionMgrIface {
         if (LOG.isDebugEnabled()) {
             LOG.debug("try to get transaction state, dbId:{}, 
transactionId:{}", dbId, transactionId);
         }
-        GetTxnRequest.Builder builder = GetTxnRequest.newBuilder();
+        GetTxnRequest.Builder builder = GetTxnRequest.newBuilder()
+                .setRequestIp(FrontendOptions.getLocalHostAddressCached());
         builder.setDbId(dbId);
         builder.setTxnId(transactionId);
         builder.setCloudUniqueId(Config.cloud_unique_id);
@@ -2218,7 +2235,8 @@ public class CloudGlobalTransactionMgr implements 
GlobalTransactionMgrIface {
     public Long getTransactionIdByLabel(Long dbId, String label, 
List<TransactionStatus> statusList)
             throws UserException {
         LOG.info("try to get transaction id by label, dbId:{}, label:{}", 
dbId, label);
-        GetTxnIdRequest.Builder builder = GetTxnIdRequest.newBuilder();
+        GetTxnIdRequest.Builder builder = GetTxnIdRequest.newBuilder()
+                .setRequestIp(FrontendOptions.getLocalHostAddressCached());
         builder.setDbId(dbId);
         builder.setLabel(label);
         builder.setCloudUniqueId(Config.cloud_unique_id);
@@ -2265,7 +2283,8 @@ public class CloudGlobalTransactionMgr implements 
GlobalTransactionMgrIface {
 
     @Override
     public Long getNextTransactionId() throws UserException {
-        GetCurrentMaxTxnRequest.Builder builder = 
GetCurrentMaxTxnRequest.newBuilder();
+        GetCurrentMaxTxnRequest.Builder builder = 
GetCurrentMaxTxnRequest.newBuilder()
+                .setRequestIp(FrontendOptions.getLocalHostAddressCached());
         builder.setCloudUniqueId(Config.cloud_unique_id);
 
         final GetCurrentMaxTxnRequest getCurrentMaxTxnRequest = 
builder.build();
@@ -2436,6 +2455,7 @@ public class CloudGlobalTransactionMgr implements 
GlobalTransactionMgrIface {
         LOG.info("try to begin sub transaction, txnId: {}, dbId: {}, tableIds: 
{}, label: {}, subTxnNum: {}", txnId,
                 dbId, tableIds, label, subTxnNum);
         BeginSubTxnRequest request = 
BeginSubTxnRequest.newBuilder().setCloudUniqueId(Config.cloud_unique_id)
+                .setRequestIp(FrontendOptions.getLocalHostAddressCached())
                 
.setTxnId(txnId).setDbId(dbId).addAllTableIds(tableIds).setLabel(label).setSubTxnNum(subTxnNum).build();
         BeginSubTxnResponse response = null;
         int retryTime = 0;
@@ -2477,7 +2497,7 @@ public class CloudGlobalTransactionMgr implements 
GlobalTransactionMgrIface {
                 subTxnId, dbId, tableIds, subTxnNum);
         AbortSubTxnRequest request = 
AbortSubTxnRequest.newBuilder().setCloudUniqueId(Config.cloud_unique_id)
                 
.setTxnId(txnId).setSubTxnId(subTxnId).setDbId(dbId).addAllTableIds(tableIds).setSubTxnNum(subTxnId)
-                .build();
+                
.setRequestIp(FrontendOptions.getLocalHostAddressCached()).build();
         AbortSubTxnResponse response = null;
         int retryTime = 0;
         try {
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/common/plugin/CloudPluginDownloader.java
 
b/fe/fe-core/src/main/java/org/apache/doris/common/plugin/CloudPluginDownloader.java
index 967a282026b..69955c68be3 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/common/plugin/CloudPluginDownloader.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/common/plugin/CloudPluginDownloader.java
@@ -24,6 +24,7 @@ import org.apache.doris.common.UserException;
 import 
org.apache.doris.datasource.property.storage.AbstractS3CompatibleProperties;
 import org.apache.doris.datasource.property.storage.StorageProperties;
 import org.apache.doris.fs.obj.S3ObjStorage;
+import org.apache.doris.service.FrontendOptions;
 
 import com.google.common.base.Strings;
 
@@ -79,7 +80,9 @@ public class CloudPluginDownloader {
      */
     static Cloud.ObjectStoreInfoPB getCloudStorageInfo() throws Exception {
         Cloud.GetObjStoreInfoResponse response = MetaServiceProxy.getInstance()
-                
.getObjStoreInfo(Cloud.GetObjStoreInfoRequest.newBuilder().build());
+                .getObjStoreInfo(Cloud.GetObjStoreInfoRequest.newBuilder()
+                        
.setRequestIp(FrontendOptions.getLocalHostAddressCached())
+                        .build());
 
         if (response.getStatus().getCode() != Cloud.MetaServiceCode.OK) {
             throw new RuntimeException("Failed to get storage info: " + 
response.getStatus().getMsg());
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/job/extensions/insert/streaming/StreamingInsertJob.java
 
b/fe/fe-core/src/main/java/org/apache/doris/job/extensions/insert/streaming/StreamingInsertJob.java
index 94f45461c07..16c2354cc7d 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/job/extensions/insert/streaming/StreamingInsertJob.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/job/extensions/insert/streaming/StreamingInsertJob.java
@@ -70,6 +70,7 @@ import org.apache.doris.persist.gson.GsonUtils;
 import org.apache.doris.qe.ConnectContext;
 import org.apache.doris.qe.ShowResultSetMetaData;
 import org.apache.doris.rpc.RpcException;
+import org.apache.doris.service.FrontendOptions;
 import org.apache.doris.thrift.TCell;
 import org.apache.doris.thrift.TRow;
 import org.apache.doris.transaction.TransactionException;
@@ -686,7 +687,8 @@ public class StreamingInsertJob extends 
AbstractJob<StreamingJobSchedulerTask, M
     }
 
     private void resetCloudProgress(Offset offset) throws JobException {
-        Cloud.ResetStreamingJobOffsetRequest.Builder builder = 
Cloud.ResetStreamingJobOffsetRequest.newBuilder();
+        Cloud.ResetStreamingJobOffsetRequest.Builder builder = 
Cloud.ResetStreamingJobOffsetRequest.newBuilder()
+                .setRequestIp(FrontendOptions.getLocalHostAddressCached());
         builder.setCloudUniqueId(Config.cloud_unique_id);
         builder.setDbId(getDbId());
         builder.setJobId(getJobId());
@@ -980,7 +982,8 @@ public class StreamingInsertJob extends 
AbstractJob<StreamingJobSchedulerTask, M
 
     public void replayOnCloudMode() throws JobException {
         Cloud.GetStreamingTaskCommitAttachRequest.Builder builder =
-                Cloud.GetStreamingTaskCommitAttachRequest.newBuilder();
+                Cloud.GetStreamingTaskCommitAttachRequest.newBuilder()
+                        
.setRequestIp(FrontendOptions.getLocalHostAddressCached());
         builder.setCloudUniqueId(Config.cloud_unique_id);
         builder.setDbId(getDbId());
         builder.setJobId(getJobId());
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/load/routineload/KafkaRoutineLoadJob.java
 
b/fe/fe-core/src/main/java/org/apache/doris/load/routineload/KafkaRoutineLoadJob.java
index b3faa9b8ce8..bf2b8943e16 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/load/routineload/KafkaRoutineLoadJob.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/load/routineload/KafkaRoutineLoadJob.java
@@ -49,6 +49,7 @@ import 
org.apache.doris.nereids.trees.plans.commands.info.CreateRoutineLoadInfo;
 import org.apache.doris.persist.AlterRoutineLoadJobOperationLog;
 import org.apache.doris.qe.ConnectContext;
 import org.apache.doris.rpc.RpcException;
+import org.apache.doris.service.FrontendOptions;
 import org.apache.doris.thrift.TFileCompressType;
 import org.apache.doris.thrift.TPartialUpdateNewRowPolicy;
 import org.apache.doris.transaction.TransactionState;
@@ -262,7 +263,8 @@ public class KafkaRoutineLoadJob extends RoutineLoadJob {
     @Override
     public void updateCloudProgress() throws UserException {
         Cloud.GetRLTaskCommitAttachRequest.Builder builder =
-                Cloud.GetRLTaskCommitAttachRequest.newBuilder();
+                Cloud.GetRLTaskCommitAttachRequest.newBuilder()
+                        
.setRequestIp(FrontendOptions.getLocalHostAddressCached());
         builder.setCloudUniqueId(Config.cloud_unique_id);
         builder.setDbId(dbId);
         builder.setJobId(id);
@@ -741,7 +743,8 @@ public class KafkaRoutineLoadJob extends RoutineLoadJob {
             }
 
             if (Config.isCloudMode()) {
-                Cloud.ResetRLProgressRequest.Builder builder = 
Cloud.ResetRLProgressRequest.newBuilder();
+                Cloud.ResetRLProgressRequest.Builder builder = 
Cloud.ResetRLProgressRequest.newBuilder()
+                        
.setRequestIp(FrontendOptions.getLocalHostAddressCached());
                 builder.setCloudUniqueId(Config.cloud_unique_id);
                 builder.setDbId(dbId);
                 builder.setJobId(id);
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/AdminDropClusterSnapshotCommand.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/AdminDropClusterSnapshotCommand.java
index 01527d54e22..b131f8a8cc8 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/AdminDropClusterSnapshotCommand.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/AdminDropClusterSnapshotCommand.java
@@ -32,6 +32,7 @@ import 
org.apache.doris.nereids.trees.plans.visitor.PlanVisitor;
 import org.apache.doris.qe.ConnectContext;
 import org.apache.doris.qe.StmtExecutor;
 import org.apache.doris.rpc.RpcException;
+import org.apache.doris.service.FrontendOptions;
 
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
@@ -95,7 +96,10 @@ public class AdminDropClusterSnapshotCommand extends Command 
implements ForwardW
     private void dropSnapshot() throws DdlException {
         try {
             Cloud.DropSnapshotRequest request = 
Cloud.DropSnapshotRequest.newBuilder()
-                    
.setCloudUniqueId(Config.cloud_unique_id).setSnapshotId(value).build();
+                    .setCloudUniqueId(Config.cloud_unique_id)
+                    .setRequestIp(FrontendOptions.getLocalHostAddressCached())
+                    .setSnapshotId(value)
+                    .build();
             Cloud.DropSnapshotResponse response = 
MetaServiceProxy.getInstance().dropSnapshot(request);
             if (response.getStatus().getCode() != Cloud.MetaServiceCode.OK) {
                 LOG.warn("dropSnapshot response: {} ", response);
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/AdminSetAutoClusterSnapshotCommand.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/AdminSetAutoClusterSnapshotCommand.java
index 3d61e1ad656..ebd838323b3 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/AdminSetAutoClusterSnapshotCommand.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/AdminSetAutoClusterSnapshotCommand.java
@@ -31,6 +31,7 @@ import org.apache.doris.nereids.trees.plans.PlanType;
 import org.apache.doris.nereids.trees.plans.visitor.PlanVisitor;
 import org.apache.doris.qe.ConnectContext;
 import org.apache.doris.qe.StmtExecutor;
+import org.apache.doris.service.FrontendOptions;
 
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
@@ -65,6 +66,7 @@ public class AdminSetAutoClusterSnapshotCommand extends 
Command implements Forwa
         validate(ctx);
 
         Cloud.AlterInstanceRequest.Builder builder = 
Cloud.AlterInstanceRequest.newBuilder()
+                .setRequestIp(FrontendOptions.getLocalHostAddressCached())
                 .setInstanceId(((CloudEnv) 
Env.getCurrentEnv()).getCloudInstanceId())
                 
.setOp(Cloud.AlterInstanceRequest.Operation.SET_SNAPSHOT_PROPERTY);
         for (Map.Entry<String, String> entry : properties.entrySet()) {
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/AdminSetClusterSnapshotFeatureSwitchCommand.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/AdminSetClusterSnapshotFeatureSwitchCommand.java
index ceadd609746..1301c71f05e 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/AdminSetClusterSnapshotFeatureSwitchCommand.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/AdminSetClusterSnapshotFeatureSwitchCommand.java
@@ -31,6 +31,7 @@ import org.apache.doris.nereids.trees.plans.PlanType;
 import org.apache.doris.nereids.trees.plans.visitor.PlanVisitor;
 import org.apache.doris.qe.ConnectContext;
 import org.apache.doris.qe.StmtExecutor;
+import org.apache.doris.service.FrontendOptions;
 
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
@@ -57,6 +58,7 @@ public class AdminSetClusterSnapshotFeatureSwitchCommand 
extends Command impleme
     public void run(ConnectContext ctx, StmtExecutor executor) throws 
Exception {
         validate(ctx);
         Cloud.AlterInstanceRequest.Builder builder = 
Cloud.AlterInstanceRequest.newBuilder()
+                .setRequestIp(FrontendOptions.getLocalHostAddressCached())
                 .setInstanceId(((CloudEnv) 
Env.getCurrentEnv()).getCloudInstanceId())
                 
.setOp(Cloud.AlterInstanceRequest.Operation.SET_SNAPSHOT_PROPERTY)
                 .putProperties(PROP_ENABLED, String.valueOf(on));
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/ShowCreateStorageVaultCommand.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/ShowCreateStorageVaultCommand.java
index 191e83e4c62..0f921da5391 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/ShowCreateStorageVaultCommand.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/ShowCreateStorageVaultCommand.java
@@ -37,6 +37,7 @@ import org.apache.doris.qe.ShowResultSet;
 import org.apache.doris.qe.ShowResultSetMetaData;
 import org.apache.doris.qe.StmtExecutor;
 import org.apache.doris.rpc.RpcException;
+import org.apache.doris.service.FrontendOptions;
 
 import com.google.common.base.Preconditions;
 import com.google.common.collect.Lists;
@@ -76,7 +77,9 @@ public class ShowCreateStorageVaultCommand extends 
ShowCommand {
         List<List<String>> rows = Lists.newArrayList();
         try {
             Cloud.GetObjStoreInfoResponse response = 
MetaServiceProxy.getInstance()
-                    
.getObjStoreInfo(Cloud.GetObjStoreInfoRequest.newBuilder().build());
+                    .getObjStoreInfo(Cloud.GetObjStoreInfoRequest.newBuilder()
+                            
.setRequestIp(FrontendOptions.getLocalHostAddressCached())
+                            .build());
             AccessControllerManager accessManager = 
Env.getCurrentEnv().getAccessManager();
             UserIdentity user = ctx.getCurrentUserIdentity();
 
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/ShowStorageVaultCommand.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/ShowStorageVaultCommand.java
index f5e08e24f4c..1386f2d65e2 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/ShowStorageVaultCommand.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/ShowStorageVaultCommand.java
@@ -35,6 +35,7 @@ import org.apache.doris.qe.ShowResultSet;
 import org.apache.doris.qe.ShowResultSetMetaData;
 import org.apache.doris.qe.StmtExecutor;
 import org.apache.doris.rpc.RpcException;
+import org.apache.doris.service.FrontendOptions;
 
 import java.util.List;
 import java.util.stream.Collectors;
@@ -67,7 +68,9 @@ public class ShowStorageVaultCommand extends ShowCommand {
         List<List<String>> rows;
         try {
             Cloud.GetObjStoreInfoResponse resp = MetaServiceProxy.getInstance()
-                    
.getObjStoreInfo(Cloud.GetObjStoreInfoRequest.newBuilder().build());
+                    .getObjStoreInfo(Cloud.GetObjStoreInfoRequest.newBuilder()
+                            
.setRequestIp(FrontendOptions.getLocalHostAddressCached())
+                            .build());
             AccessControllerManager accessManager = 
Env.getCurrentEnv().getAccessManager();
             UserIdentity user = ctx.getCurrentUserIdentity();
             rows = resp.getStorageVaultList().stream()
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/service/FrontendOptions.java 
b/fe/fe-core/src/main/java/org/apache/doris/service/FrontendOptions.java
index e578aea549e..2ce1a02d0d2 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/service/FrontendOptions.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/service/FrontendOptions.java
@@ -42,6 +42,7 @@ public class FrontendOptions {
     private static List<CIDR> priorityCidrs = Lists.newArrayList();
     private static InetAddress localAddr = InetAddress.getLoopbackAddress();
     private static boolean useFqdn = false;
+    private static String cachedAddr;
 
     public static void init() throws UnknownHostException {
         localAddr = null;
@@ -56,6 +57,7 @@ public class FrontendOptions {
         } else {
             initAddrUseIp(hosts);
         }
+        cachedAddr = getLocalHostAddress();
     }
 
     // 1. If priority_networks is configured . Obtain the IP that complies 
with the rules,
@@ -169,6 +171,10 @@ public class FrontendOptions {
                 localAddr.getCanonicalHostName(), localAddr.getHostAddress());
     }
 
+    public static String getLocalHostAddressCached() {
+        return Strings.nullToEmpty(cachedAddr);
+    }
+
     public static String getLocalHostAddress() {
         if (useFqdn) {
             // localAddr.getHostName() is same as run `hostname`


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

Reply via email to