diff --git a/VERSION b/VERSION index 6d937c2fb57..8fc74fe766b 100755 --- a/VERSION +++ b/VERSION @@ -1,3 +1,3 @@ MAJOR=5 MINOR=5 -UPDATE=12 +UPDATE=16 diff --git a/conf/db/upgrade/V5.5.12.1__schema.sql b/conf/db/upgrade/V5.5.12.1__schema.sql new file mode 100644 index 00000000000..8c5ba872a20 --- /dev/null +++ b/conf/db/upgrade/V5.5.12.1__schema.sql @@ -0,0 +1,4 @@ +-- ZSTAC-83966: Add hidden field to AlarmVO/EventSubscriptionVO/ActiveAlarmVO for soft-hide support +CALL ADD_COLUMN('AlarmVO', 'hidden', 'TINYINT(1)', 0, '0'); +CALL ADD_COLUMN('EventSubscriptionVO', 'hidden', 'TINYINT(1)', 0, '0'); +CALL ADD_COLUMN('ActiveAlarmVO', 'hidden', 'TINYINT(1)', 0, '0'); diff --git a/core/src/main/java/org/zstack/core/thread/AbstractCoalesceQueue.java b/core/src/main/java/org/zstack/core/thread/AbstractCoalesceQueue.java index 7a97e08b490..579a327160d 100644 --- a/core/src/main/java/org/zstack/core/thread/AbstractCoalesceQueue.java +++ b/core/src/main/java/org/zstack/core/thread/AbstractCoalesceQueue.java @@ -162,14 +162,12 @@ public void run(SyncTaskChain chain) { // Execute batch with the direct completion object List items = requests.stream().map(req -> req.item).collect(Collectors.toList()); - try { - executeBatch(items, batchCompletion); - } catch (Throwable t) { - logger.warn(String.format("[%s] executeBatch threw exception for signature[%s]", - name, syncSignature), t); - handleFailure(syncSignature, requests, - operr(ORG_ZSTACK_CORE_THREAD_10004, "executeBatch threw exception: %s", t.getMessage()), chain); - } + + /** *(.., AbstractCompletion, ..) is not AsyncSafeAspect's pointcut, but it will call + * executeBatch(.., Completion/ReturnValueCompletion) which is pointcut, + * so we do not need try-catch here. + */ + executeBatch(items, batchCompletion); } @Override diff --git a/core/src/main/java/org/zstack/core/thread/ReturnValueCoalesceQueue.java b/core/src/main/java/org/zstack/core/thread/ReturnValueCoalesceQueue.java index 346824647fd..bf52cc93f31 100644 --- a/core/src/main/java/org/zstack/core/thread/ReturnValueCoalesceQueue.java +++ b/core/src/main/java/org/zstack/core/thread/ReturnValueCoalesceQueue.java @@ -28,7 +28,7 @@ protected final void executeBatch(List items, AbstractCompletion batchComplet @Override protected final AbstractCompletion createBatchCompletion(String syncSignature, List requests, SyncTaskChain chain) { - return new ReturnValueCompletion(null) { + return new ReturnValueCompletion(chain) { @Override public void success(R batchResult) { handleSuccess(syncSignature, requests, batchResult, chain); diff --git a/rest/src/main/resources/scripts/SdkDataStructureGenerator.groovy b/rest/src/main/resources/scripts/SdkDataStructureGenerator.groovy index dcaea05080d..67eb9b08107 100755 --- a/rest/src/main/resources/scripts/SdkDataStructureGenerator.groovy +++ b/rest/src/main/resources/scripts/SdkDataStructureGenerator.groovy @@ -37,7 +37,16 @@ class SdkDataStructureGenerator implements SdkTemplate { Reflections reflections = Platform.getReflections() responseClasses = reflections.getTypesAnnotatedWith(RestResponse.class) laterResolvedClasses.addAll(reflections.getTypesAnnotatedWith(SDK.class) - .findAll() { !Message.class.isAssignableFrom(it) }) + .findAll() { + !Message.class.isAssignableFrom(it) && !excludedFromSdkGeneration(it) + }) + } + + static boolean excludedFromSdkGeneration(Class clz) { + if (clz == null) { + return true + } + return clz.getName().startsWith("org.zstack.test.") } @Override @@ -128,6 +137,10 @@ ${dstToSrc.join("\n")} return } + if (excludedFromSdkGeneration(clz)) { + return + } + if (clz.isAnnotationPresent(NoSDK.class)) { return } @@ -202,7 +215,13 @@ ${output.join("\n")} || short.class == clz || char.class == clz || boolean.class == clz || float.class == clz || double.class == clz) { return false - } else if (clz.getCanonicalName().startsWith("org.zstack")) { + } + if (clz.getName().startsWith("groovy.") || clz.getName().startsWith("org.codehaus.groovy.")) { + return false + } + + def canonicalName = clz.getCanonicalName() + if (canonicalName != null && canonicalName.startsWith("org.zstack")) { return true } else { throw new CloudRuntimeException("${clz.getName()} is neither JRE class nor ZStack class") @@ -210,6 +229,10 @@ ${output.join("\n")} } def addToLaterResolvedClassesIfNeed(Class clz) { + if (excludedFromSdkGeneration(clz)) { + return + } + if (clz.isAnnotationPresent(NoSDK.class)) { return } @@ -219,6 +242,9 @@ ${output.join("\n")} } Platform.reflections.getSubTypesOf(clz).forEach({ i -> + if (excludedFromSdkGeneration(i)) { + return + } if (!sdkFileMap.containsKey(i) && !i.isAnnotationPresent(NoSDK.class)) { laterResolvedClasses.add(i) } diff --git a/sdk/src/main/java/org/zstack/sdk/zwatch/alarm/AlarmInventory.java b/sdk/src/main/java/org/zstack/sdk/zwatch/alarm/AlarmInventory.java index cf641122592..815f92e30ce 100644 --- a/sdk/src/main/java/org/zstack/sdk/zwatch/alarm/AlarmInventory.java +++ b/sdk/src/main/java/org/zstack/sdk/zwatch/alarm/AlarmInventory.java @@ -150,4 +150,12 @@ public java.lang.String getEmergencyLevel() { return this.emergencyLevel; } + public java.lang.Boolean hidden; + public void setHidden(java.lang.Boolean hidden) { + this.hidden = hidden; + } + public java.lang.Boolean getHidden() { + return this.hidden; + } + } diff --git a/sdk/src/main/java/org/zstack/sdk/zwatch/alarm/EventSubscriptionInventory.java b/sdk/src/main/java/org/zstack/sdk/zwatch/alarm/EventSubscriptionInventory.java index ff9e2986fe8..aa85214b4f8 100644 --- a/sdk/src/main/java/org/zstack/sdk/zwatch/alarm/EventSubscriptionInventory.java +++ b/sdk/src/main/java/org/zstack/sdk/zwatch/alarm/EventSubscriptionInventory.java @@ -84,4 +84,12 @@ public java.lang.String getEmergencyLevel() { return this.emergencyLevel; } + public java.lang.Boolean hidden; + public void setHidden(java.lang.Boolean hidden) { + this.hidden = hidden; + } + public java.lang.Boolean getHidden() { + return this.hidden; + } + } diff --git a/sdk/src/main/java/org/zstack/sdk/zwatch/alarm/activealarm/entity/ActiveAlarmInventory.java b/sdk/src/main/java/org/zstack/sdk/zwatch/alarm/activealarm/entity/ActiveAlarmInventory.java index da1eab8729c..ea014802171 100644 --- a/sdk/src/main/java/org/zstack/sdk/zwatch/alarm/activealarm/entity/ActiveAlarmInventory.java +++ b/sdk/src/main/java/org/zstack/sdk/zwatch/alarm/activealarm/entity/ActiveAlarmInventory.java @@ -44,4 +44,12 @@ public java.lang.String getUuid() { return this.uuid; } + public java.lang.Boolean hidden; + public void setHidden(java.lang.Boolean hidden) { + this.hidden = hidden; + } + public java.lang.Boolean getHidden() { + return this.hidden; + } + }