From 3475e1fb6edfa3a7b20a1c2c5fed80c814c24b46 Mon Sep 17 00:00:00 2001 From: J M Date: Mon, 12 Jan 2026 16:59:30 +0800 Subject: [PATCH] [cloudbus]: remove some db op Resolves: QI-1170 Change-Id: I7163747275767a6e736a6e76707679776b69746f --- .../org/zstack/core/CoreGlobalProperty.java | 2 +- .../zstack/core/cloudbus/EventFacadeImpl.java | 16 ++++++++++++---- .../storage/ceph/primary/CephKvmExtension.java | 4 ++++ .../kvm/ExternalPrimaryStorageKvmFactory.java | 5 +++++ .../src/main/java/org/zstack/kvm/KVMHost.java | 17 ++++++++++++----- .../org/zstack/kvm/KVMHostConnectedContext.java | 11 +++++++++++ .../java/org/zstack/kvm/KVMHostFactory.java | 8 ++++++-- .../local/LocalStorageCapacityUpdater.java | 4 ++++ .../primary/local/LocalStorageKvmFactory.java | 5 +++++ .../nfs/NfsPrimaryStorageKVMBackend.java | 5 +++++ .../zstack/storage/primary/smp/KvmFactory.java | 5 +++++ .../primary/ExternalPrimaryStorageFactory.java | 5 +++++ 12 files changed, 75 insertions(+), 12 deletions(-) diff --git a/core/src/main/java/org/zstack/core/CoreGlobalProperty.java b/core/src/main/java/org/zstack/core/CoreGlobalProperty.java index 393face30d3..561cd15531f 100755 --- a/core/src/main/java/org/zstack/core/CoreGlobalProperty.java +++ b/core/src/main/java/org/zstack/core/CoreGlobalProperty.java @@ -85,7 +85,7 @@ public class CoreGlobalProperty { public static boolean UPDATE_PKG_WHEN_CONNECT; @GlobalProperty(name = "syncNodeTime", defaultValue = "true") public static boolean SYNC_NODE_TIME; - @GlobalProperty(name = "enableElaboration", defaultValue = "true") + @GlobalProperty(name = "enableElaboration", defaultValue = "false") public static boolean ENABLE_ELABORATION; @GlobalProperty(name = "recordElaboration", defaultValue = "false") public static boolean RECORD_TO_DB_ELABORATION; diff --git a/core/src/main/java/org/zstack/core/cloudbus/EventFacadeImpl.java b/core/src/main/java/org/zstack/core/cloudbus/EventFacadeImpl.java index 10d4bebdaaa..3144d6c88f4 100755 --- a/core/src/main/java/org/zstack/core/cloudbus/EventFacadeImpl.java +++ b/core/src/main/java/org/zstack/core/cloudbus/EventFacadeImpl.java @@ -78,7 +78,9 @@ private class CallbackWrapper { CallbackWrapper(String path, AbstractEventFacadeCallback callback) { this.path = path; - this.glob = createRegexFromGlob(path.replaceAll("\\{.*\\}", ".*")); + if (isGlobPath(path)) { + this.glob = createRegexFromGlob(path.replaceAll("\\{.*\\}", ".*")); + } this.callback = callback; if (callback instanceof AutoOffEventCallback) { hasRun = new AtomicBoolean(false); @@ -127,6 +129,10 @@ void call(CanonicalEvent e) { } } + private boolean isGlobPath(String path) { + return path.contains("*") || path.contains("?") || path.contains("{"); + } + public String createRegexFromGlob(String glob) { String out = "^"; for(int i = 0; i < glob.length(); ++i) { @@ -223,7 +229,7 @@ public void fire(String path, Object data) { fireLocal(evt); - callWebhooks(evt); + // callWebhooks(evt); bus.publish(evt); } @@ -250,7 +256,8 @@ private void fireLocal(CanonicalEvent cevt) { wrappers.putAll(local); for (CallbackWrapper w : wrappers.values()) { - if (cevt.getPath().matches(w.getGlob())) { + boolean match = w.getGlob() == null ? cevt.getPath().equals(w.path) : cevt.getPath().matches(w.getGlob()); + if (match) { w.call(cevt); } } @@ -271,7 +278,8 @@ public boolean handleEvent(Event evt) { Map wrappers = new HashMap<>(); wrappers.putAll(global); for (CallbackWrapper w : wrappers.values()) { - if (cevt.getPath().matches(w.getGlob())) { + boolean match = w.getGlob() == null ? cevt.getPath().equals(w.path) : cevt.getPath().matches(w.getGlob()); + if (match) { w.call(cevt); } } diff --git a/plugin/ceph/src/main/java/org/zstack/storage/ceph/primary/CephKvmExtension.java b/plugin/ceph/src/main/java/org/zstack/storage/ceph/primary/CephKvmExtension.java index 461e841f69f..13755a8223e 100755 --- a/plugin/ceph/src/main/java/org/zstack/storage/ceph/primary/CephKvmExtension.java +++ b/plugin/ceph/src/main/java/org/zstack/storage/ceph/primary/CephKvmExtension.java @@ -129,6 +129,10 @@ public void done(ErrorCodeList errorCodeList) { @Override public Flow createKvmHostConnectingFlow(final KVMHostConnectedContext context) { + if (!context.getAttachedPrimaryStorageTypes().contains(CephConstants.CEPH_PRIMARY_STORAGE_TYPE)) { + return new NopeFlow(); + } + return new NoRollbackFlow() { String __name__ = "prepare-ceph-primary-storage"; diff --git a/plugin/externalStorage/src/main/java/org/zstack/externalStorage/primary/kvm/ExternalPrimaryStorageKvmFactory.java b/plugin/externalStorage/src/main/java/org/zstack/externalStorage/primary/kvm/ExternalPrimaryStorageKvmFactory.java index e8b55f23437..e4be9c914f4 100644 --- a/plugin/externalStorage/src/main/java/org/zstack/externalStorage/primary/kvm/ExternalPrimaryStorageKvmFactory.java +++ b/plugin/externalStorage/src/main/java/org/zstack/externalStorage/primary/kvm/ExternalPrimaryStorageKvmFactory.java @@ -30,6 +30,7 @@ import org.zstack.header.volume.VolumeVO; import org.zstack.header.volume.VolumeVO_; import org.zstack.kvm.*; +import org.zstack.storage.addon.primary.ExternalPrimaryStorageConstants; import org.zstack.storage.addon.primary.ExternalPrimaryStorageFactory; import org.zstack.utils.CollectionUtils; import org.zstack.utils.Utils; @@ -79,6 +80,10 @@ private Map getHostStatus(List extPss = findExternalPsByClusterUuid(context.getInventory().getClusterUuid()); if (extPss.isEmpty()) { return new NopeFlow(); diff --git a/plugin/kvm/src/main/java/org/zstack/kvm/KVMHost.java b/plugin/kvm/src/main/java/org/zstack/kvm/KVMHost.java index ab8c29640f3..ede10528d6a 100755 --- a/plugin/kvm/src/main/java/org/zstack/kvm/KVMHost.java +++ b/plugin/kvm/src/main/java/org/zstack/kvm/KVMHost.java @@ -14,6 +14,7 @@ import org.zstack.compute.vm.*; import org.zstack.core.timeout.TimeHelper; import org.zstack.header.core.*; +import org.zstack.header.storage.addon.primary.ExternalPrimaryStorageVO; import org.zstack.header.vm.devices.VirtualDeviceInfo; import org.zstack.header.vm.devices.VmInstanceDeviceManager; import org.zstack.core.CoreGlobalProperty; @@ -507,11 +508,11 @@ public void fail(ErrorCode err) { @Override public void success(T ret) { - if (dbf.isExist(self.getUuid(), HostVO.class)) { + //if (dbf.isExist(self.getUuid(), HostVO.class)) { completion.success(ret); - } else { - completion.fail(operr("host[uuid:%s] has been deleted", self.getUuid())); - } + //} else { + // completion.fail(operr("host[uuid:%s] has been deleted", self.getUuid())); + //} } @Override @@ -5188,13 +5189,19 @@ private void continueConnect(final ConnectHostInfo info, final Completion comple chain.setName(String.format("continue-connecting-kvm-host-%s-%s", self.getManagementIp(), self.getUuid())); chain.getData().put(KVMConstant.CONNECT_HOST_PRIMARYSTORAGE_ERROR, new ErrorCodeList()); chain.allowWatch(); + + Set attachedPsTypes = new HashSet(SQL.New("select pri.type from PrimaryStorageVO pri, PrimaryStorageClusterRefVO ref" + + " where pri.uuid = ref.primaryStorageUuid" + + " and ref.clusterUuid = :cuuid", String.class) + .param("cuuid", self.getClusterUuid()) + .list()); for (KVMHostConnectExtensionPoint extp : factory.getConnectExtensions()) { KVMHostConnectedContext ctx = new KVMHostConnectedContext(); ctx.setInventory((KVMHostInventory) getSelfInventory()); ctx.setNewAddedHost(info.isNewAdded()); ctx.setBaseUrl(baseUrl); ctx.setSkipPackages(info.getSkipPackages()); - + ctx.setAttachedPrimaryStorageTypes(attachedPsTypes); chain.then(extp.createKvmHostConnectingFlow(ctx)); } diff --git a/plugin/kvm/src/main/java/org/zstack/kvm/KVMHostConnectedContext.java b/plugin/kvm/src/main/java/org/zstack/kvm/KVMHostConnectedContext.java index ea63e0070a4..a15cade70fd 100755 --- a/plugin/kvm/src/main/java/org/zstack/kvm/KVMHostConnectedContext.java +++ b/plugin/kvm/src/main/java/org/zstack/kvm/KVMHostConnectedContext.java @@ -1,5 +1,7 @@ package org.zstack.kvm; +import java.util.Set; + /** */ public class KVMHostConnectedContext { @@ -7,6 +9,7 @@ public class KVMHostConnectedContext { private boolean newAddedHost; private String baseUrl; private String skipPackages; + private Set attachedPrimaryStorageTypes; public boolean isNewAddedHost() { return newAddedHost; @@ -39,4 +42,12 @@ public String getSkipPackages() { public void setSkipPackages(String skipPackages) { this.skipPackages = skipPackages; } + + public Set getAttachedPrimaryStorageTypes() { + return attachedPrimaryStorageTypes; + } + + public void setAttachedPrimaryStorageTypes(Set attachedPrimaryStorageTypes) { + this.attachedPrimaryStorageTypes = attachedPrimaryStorageTypes; + } } diff --git a/plugin/kvm/src/main/java/org/zstack/kvm/KVMHostFactory.java b/plugin/kvm/src/main/java/org/zstack/kvm/KVMHostFactory.java index 4d4fa167b7e..aaf3b91f012 100755 --- a/plugin/kvm/src/main/java/org/zstack/kvm/KVMHostFactory.java +++ b/plugin/kvm/src/main/java/org/zstack/kvm/KVMHostFactory.java @@ -241,7 +241,7 @@ private List loadMsgFromFile(String content, ValidateFunction findLocalStorageUuidByHostUuid(String clusterUuid) { @Override public Flow createKvmHostConnectingFlow(final KVMHostConnectedContext context) { + if (!context.getAttachedPrimaryStorageTypes().contains(LocalStorageConstants.LOCAL_STORAGE_TYPE)) { + return new NopeFlow(); + } + return new NoRollbackFlow() { String __name__ = "init-local-storage"; diff --git a/plugin/nfsPrimaryStorage/src/main/java/org/zstack/storage/primary/nfs/NfsPrimaryStorageKVMBackend.java b/plugin/nfsPrimaryStorage/src/main/java/org/zstack/storage/primary/nfs/NfsPrimaryStorageKVMBackend.java index 5ad1919dd0f..97c6d5c1bfc 100755 --- a/plugin/nfsPrimaryStorage/src/main/java/org/zstack/storage/primary/nfs/NfsPrimaryStorageKVMBackend.java +++ b/plugin/nfsPrimaryStorage/src/main/java/org/zstack/storage/primary/nfs/NfsPrimaryStorageKVMBackend.java @@ -1740,6 +1740,11 @@ public void fail(ErrorCode errorCode) { @Override public Flow createKvmHostConnectingFlow(final KVMHostConnectedContext context) { + if (!context.getAttachedPrimaryStorageTypes().contains(NfsPrimaryStorageConstant.NFS_PRIMARY_STORAGE_TYPE)) { + return new NopeFlow(); + } + + return new NoRollbackFlow() { String __name__ = "remount-nfs-primary-storage"; diff --git a/plugin/sharedMountPointPrimaryStorage/src/main/java/org/zstack/storage/primary/smp/KvmFactory.java b/plugin/sharedMountPointPrimaryStorage/src/main/java/org/zstack/storage/primary/smp/KvmFactory.java index 19065d35197..10d0b98c5d2 100755 --- a/plugin/sharedMountPointPrimaryStorage/src/main/java/org/zstack/storage/primary/smp/KvmFactory.java +++ b/plugin/sharedMountPointPrimaryStorage/src/main/java/org/zstack/storage/primary/smp/KvmFactory.java @@ -10,6 +10,7 @@ import org.zstack.header.core.workflow.Flow; import org.zstack.header.core.workflow.FlowTrigger; import org.zstack.header.core.workflow.NoRollbackFlow; +import org.zstack.header.core.workflow.NopeFlow; import org.zstack.header.errorcode.ErrorCode; import org.zstack.header.message.MessageReply; import org.zstack.header.storage.primary.*; @@ -58,6 +59,10 @@ private PrimaryStorageInventory findSMPByHostUuid(String clusterUuid) { @Override public Flow createKvmHostConnectingFlow(final KVMHostConnectedContext context) { + if (!context.getAttachedPrimaryStorageTypes().contains(SMPConstants.SMP_TYPE)) { + return new NopeFlow(); + } + return new NoRollbackFlow() { String __init__ = "init-smp-primary-storage"; diff --git a/storage/src/main/java/org/zstack/storage/addon/primary/ExternalPrimaryStorageFactory.java b/storage/src/main/java/org/zstack/storage/addon/primary/ExternalPrimaryStorageFactory.java index 6b21ab8325a..68afe551ca8 100644 --- a/storage/src/main/java/org/zstack/storage/addon/primary/ExternalPrimaryStorageFactory.java +++ b/storage/src/main/java/org/zstack/storage/addon/primary/ExternalPrimaryStorageFactory.java @@ -1,6 +1,7 @@ package org.zstack.storage.addon.primary; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.core.parameters.P; import org.zstack.core.Platform; import org.zstack.core.asyncbatch.While; import org.zstack.core.cloudbus.CloudBus; @@ -265,6 +266,10 @@ public void validateStorageProtocol(String protocol) { } } + public List getAllControllerSvcs() { + return new ArrayList<>(controllers.values()); + } + public PrimaryStorageControllerSvc getControllerSvc(String primaryStorageUuid) { return controllers.get(primaryStorageUuid); }