From 7dc41f347c397cdd77c8c0ca9e19777434ca9c8f Mon Sep 17 00:00:00 2001 From: Byte Yue Date: Thu, 28 Mar 2024 20:26:27 +0800 Subject: [PATCH] make it one daemon master thread --- .../apache/doris/catalog/StorageVaultMgr.java | 23 ++++++++++++++++--- .../doris/cloud/rpc/MetaServiceClient.java | 10 ++++---- .../doris/cloud/rpc/MetaServiceProxy.java | 4 ++-- 3 files changed, 27 insertions(+), 10 deletions(-) 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 70b7854dec64dd2..2d1da51bedea681 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 @@ -24,6 +24,7 @@ import org.apache.doris.cloud.rpc.MetaServiceProxy; import org.apache.doris.common.DdlException; import org.apache.doris.common.Pair; +import org.apache.doris.common.util.MasterDaemon; import org.apache.doris.rpc.RpcException; import com.google.common.annotations.VisibleForTesting; @@ -33,7 +34,7 @@ import java.util.concurrent.locks.ReadWriteLock; import java.util.concurrent.locks.ReentrantReadWriteLock; -public class StorageVaultMgr { +public class StorageVaultMgr extends MasterDaemon { private static final Logger LOG = LogManager.getLogger(StorageVaultMgr.class); // @@ -41,9 +42,14 @@ public class StorageVaultMgr { private ReadWriteLock rwLock = new ReentrantReadWriteLock(); + @Override + protected final void runAfterCatalogReady() { + refreshDefaultVault(); + } - - public StorageVaultMgr() {} + public StorageVaultMgr() { + super("StorageVaultMgr", 300000); + } // TODO(ByteYue): The CreateStorageVault should only be handled by master // which indicates we can maintains one map in FE master @@ -133,4 +139,15 @@ public void createHdfsVault(StorageVault vault) throws DdlException { throw new DdlException(e.getMessage()); } } + + public void refreshDefaultVault() { + Cloud.GetDefaultVaultRequest.Builder builder = Cloud.GetDefaultVaultRequest.newBuilder(); + try { + Cloud.GetDefaultVaultResponse resp = + MetaServiceProxy.getInstance().getDefaultVault(builder.build()); + setDefaultStorageVault(Pair.of(resp.getVaultName(), resp.getVaultId())); + } catch (RpcException e) { + LOG.warn("failed to get default storage vault due to RpcException: {}", e); + } + } } diff --git a/fe/fe-core/src/main/java/org/apache/doris/cloud/rpc/MetaServiceClient.java b/fe/fe-core/src/main/java/org/apache/doris/cloud/rpc/MetaServiceClient.java index 5fed51473fd5640..333b0ab519f66a5 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/cloud/rpc/MetaServiceClient.java +++ b/fe/fe-core/src/main/java/org/apache/doris/cloud/rpc/MetaServiceClient.java @@ -326,13 +326,13 @@ public Cloud.GetInstanceResponse getInstance(Cloud.GetInstanceRequest request) { return blockingStub.getRlTaskCommitAttach(request); } - public Cloud.GetObjStoreInfoResponse getObjStoreInfo(Cloud.GetObjStoreInfoRequest request) { + public Cloud.GetDefaultVaultResponse getDefaultVault(Cloud.GetDefaultVaultRequest request) { if (!request.hasCloudUniqueId()) { - Cloud.GetObjStoreInfoRequest.Builder builder = - Cloud.GetObjStoreInfoRequest.newBuilder(); + Cloud.GetDefaultVaultRequest.Builder builder = + Cloud.GetDefaultVaultRequest.newBuilder(); builder.mergeFrom(request); - return blockingStub.getObjStoreInfo(builder.setCloudUniqueId(Config.cloud_unique_id).build()); + return blockingStub.getDefaultVault(builder.setCloudUniqueId(Config.cloud_unique_id).build()); } - return blockingStub.getObjStoreInfo(request); + return blockingStub.getDefaultVault(request); } } diff --git a/fe/fe-core/src/main/java/org/apache/doris/cloud/rpc/MetaServiceProxy.java b/fe/fe-core/src/main/java/org/apache/doris/cloud/rpc/MetaServiceProxy.java index acfb18305811082..4116a08a358adb9 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/cloud/rpc/MetaServiceProxy.java +++ b/fe/fe-core/src/main/java/org/apache/doris/cloud/rpc/MetaServiceProxy.java @@ -443,10 +443,10 @@ public Cloud.AlterObjStoreInfoResponse alterObjStoreInfo(Cloud.AlterObjStoreInfo } } - public Cloud.GetObjStoreInfoResponse getObjStoreInfo(Cloud.GetObjStoreInfoRequest request) throws RpcException { + public Cloud.GetDefaultVaultResponse getDefaultVault(Cloud.GetDefaultVaultRequest request) throws RpcException { try { final MetaServiceClient client = getProxy(); - return client.getObjStoreInfo(request); + return client.getDefaultVault(request); } catch (Exception e) { throw new RpcException("", e.getMessage(), e); }