Skip to content

Commit fb5e24f

Browse files
author
Daan Hoogland
committed
Merge branch '4.22'
2 parents 5ed4894 + d5101b0 commit fb5e24f

10 files changed

Lines changed: 51 additions & 20 deletions

File tree

engine/schema/src/main/java/com/cloud/usage/dao/UsageJobDaoImpl.java

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -61,21 +61,15 @@ public long getLastJobSuccessDateMillis() {
6161
public void updateJobSuccess(Long jobId, long startMillis, long endMillis, long execTime, boolean success) {
6262
TransactionLegacy txn = TransactionLegacy.open(TransactionLegacy.USAGE_DB);
6363
try {
64-
txn.start();
65-
66-
UsageJobVO job = lockRow(jobId, Boolean.TRUE);
6764
UsageJobVO jobForUpdate = createForUpdate();
6865
jobForUpdate.setStartMillis(startMillis);
6966
jobForUpdate.setEndMillis(endMillis);
7067
jobForUpdate.setExecTime(execTime);
7168
jobForUpdate.setStartDate(new Date(startMillis));
7269
jobForUpdate.setEndDate(new Date(endMillis));
7370
jobForUpdate.setSuccess(success);
74-
update(job.getId(), jobForUpdate);
75-
76-
txn.commit();
71+
update(jobId, jobForUpdate);
7772
} catch (Exception ex) {
78-
txn.rollback();
7973
logger.error("error updating job success date", ex);
8074
throw new CloudRuntimeException(ex.getMessage());
8175
} finally {

framework/spring/lifecycle/src/main/java/org/apache/cloudstack/spring/lifecycle/CloudStackExtendedLifeCycle.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,8 @@ public void with(ComponentLifecycle lifecycle) {
7373
try {
7474
lifecycle.start();
7575
} catch (Exception e) {
76-
logger.error("Error on starting bean {} - {}", lifecycle.getName(), e.getMessage(), e);
76+
logger.error("Error on starting bean [{}] due to: {}", lifecycle.getName(), e);
77+
throw new CloudRuntimeException("Failed to start bean [" + lifecycle.getName() + "]");
7778
}
7879

7980
if (lifecycle instanceof ManagementBean) {

framework/spring/module/src/main/java/org/apache/cloudstack/spring/module/model/impl/DefaultModuleDefinitionSet.java

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -112,10 +112,8 @@ public void with(ModuleDefinition def, Stack<ModuleDefinition> parents) {
112112
logger.debug(String.format("Could not get module [%s] context bean.", moduleDefinitionName));
113113
}
114114
} catch (BeansException e) {
115-
logger.warn(String.format("Failed to start module [%s] due to: [%s].", moduleDefinitionName, e.getMessage()));
116-
if (logger.isDebugEnabled()) {
117-
logger.debug(String.format("module start failure of module [%s] was due to: ", moduleDefinitionName), e);
118-
}
115+
logger.error("Failed to start module [{}] due to: {}", def.getName(), e);
116+
throw new RuntimeException(String.format("Failed to start module [%s]", def.getName()));
119117
}
120118
} catch (EmptyStackException e) {
121119
logger.warn(String.format("Failed to obtain module context due to [%s]. Using root context instead.", e.getMessage()));
@@ -147,10 +145,8 @@ public void with(ModuleDefinition def, Stack<ModuleDefinition> parents) {
147145
logger.debug("Failed to obtain module context: ", e);
148146
}
149147
} catch (BeansException e) {
150-
logger.warn(String.format("Failed to start module [%s] due to: [%s].", def.getName(), e.getMessage()));
151-
if (logger.isDebugEnabled()) {
152-
logger.debug(String.format("module start failure of module [%s] was due to: ", def.getName()), e);
153-
}
148+
logger.error("Failed to load module [{}] due to: {}", def.getName(), e);
149+
throw new RuntimeException(String.format("Failed to load module [%s]", def.getName()));
154150
}
155151
}
156152
});

pom.xml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -196,6 +196,8 @@
196196
<cs.caffeine.version>3.1.7</cs.caffeine.version>
197197
<cs.protobuf.version>3.25.5</cs.protobuf.version>
198198
<cs.minio.version>8.6.0</cs.minio.version>
199+
<cs.opentelemetry.version>1.51.0</cs.opentelemetry.version>
200+
<cs.opentelemetry-instrumentation.version>2.16.0</cs.opentelemetry-instrumentation.version>
199201
</properties>
200202

201203
<distributionManagement>
@@ -434,6 +436,16 @@
434436
<artifactId>commons-validator</artifactId>
435437
<version>${cs.commons-validator.version}</version>
436438
</dependency>
439+
<dependency>
440+
<groupId>io.opentelemetry</groupId>
441+
<artifactId>opentelemetry-api</artifactId>
442+
<version>${cs.opentelemetry.version}</version>
443+
</dependency>
444+
<dependency>
445+
<groupId>io.opentelemetry.instrumentation</groupId>
446+
<artifactId>opentelemetry-instrumentation-annotations</artifactId>
447+
<version>${cs.opentelemetry-instrumentation.version}</version>
448+
</dependency>
437449
<dependency>
438450
<groupId>javax.annotation</groupId>
439451
<artifactId>javax.annotation-api</artifactId>

server/pom.xml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -197,6 +197,14 @@
197197
<version>4.23.0.0-SNAPSHOT</version>
198198
<scope>compile</scope>
199199
</dependency>
200+
<dependency>
201+
<groupId>io.opentelemetry.instrumentation</groupId>
202+
<artifactId>opentelemetry-instrumentation-annotations</artifactId>
203+
</dependency>
204+
<dependency>
205+
<groupId>io.opentelemetry</groupId>
206+
<artifactId>opentelemetry-api</artifactId>
207+
</dependency>
200208
</dependencies>
201209
<build>
202210
<plugins>

server/src/main/java/com/cloud/api/ApiServer.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,9 @@
6262
import javax.servlet.http.HttpServletResponse;
6363
import javax.servlet.http.HttpSession;
6464

65+
import io.opentelemetry.api.trace.Span;
66+
import io.opentelemetry.instrumentation.annotations.WithSpan;
67+
6568
import org.apache.cloudstack.acl.APIChecker;
6669
import org.apache.cloudstack.acl.ApiKeyPairManagerImpl;
6770
import org.apache.cloudstack.acl.apikeypair.ApiKeyPair;
@@ -627,6 +630,7 @@ public void checkCharacterInkParams(final Map params) {
627630
}
628631

629632
@Override
633+
@WithSpan("ApiServer.handleRequest")
630634
@SuppressWarnings("rawtypes")
631635
public String handleRequest(final Map params, final String responseType, final StringBuilder auditTrailSb) throws ServerApiException {
632636
checkCharacterInkParams(params);
@@ -636,6 +640,10 @@ public String handleRequest(final Map params, final String responseType, final S
636640

637641
try {
638642
command = (String[])params.get("command");
643+
if (command != null && command.length > 0) {
644+
Span.current().updateName("ApiServer.handleRequest " + command[0]);
645+
Span.current().setAttribute("api.command", command[0]);
646+
}
639647
if (command == null) {
640648
logger.error("invalid request, no command sent");
641649
if (logger.isTraceEnabled()) {

server/src/main/java/com/cloud/server/StatsCollector.java

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -166,6 +166,7 @@
166166
import com.codahale.metrics.Metric;
167167
import com.codahale.metrics.MetricRegistry;
168168
import com.codahale.metrics.MetricSet;
169+
import com.codahale.metrics.JmxReporter;
169170
import com.codahale.metrics.jvm.BufferPoolMetricSet;
170171
import com.codahale.metrics.jvm.GarbageCollectorMetricSet;
171172
import com.codahale.metrics.jvm.MemoryUsageGaugeSet;
@@ -387,7 +388,11 @@ public String toString() {
387388
private boolean _dailyOrHourly = false;
388389
protected long managementServerNodeId = ManagementServerNode.getManagementServerId();
389390
protected long msId = managementServerNodeId;
390-
final static MetricRegistry METRIC_REGISTRY = new MetricRegistry();
391+
public static final MetricRegistry METRIC_REGISTRY = new MetricRegistry();
392+
393+
public static void registerMetric(String name, Metric metric) {
394+
METRIC_REGISTRY.register(name, metric);
395+
}
391396

392397
public static StatsCollector getInstance() {
393398
return s_instance;
@@ -410,6 +415,11 @@ public boolean start() {
410415
registerAll("memory", new MemoryUsageGaugeSet(), METRIC_REGISTRY);
411416
registerAll("threads", new ThreadStatesGaugeSet(), METRIC_REGISTRY);
412417
registerAll("jvm", new JvmAttributeGaugeSet(), METRIC_REGISTRY);
418+
try {
419+
JmxReporter.forRegistry(METRIC_REGISTRY).inDomain("vm-extra").build().start();
420+
} catch (Exception e) {
421+
logger.warn("Failed to start JMX reporter for METRIC_REGISTRY, metrics will not be visible via JMX", e);
422+
}
413423
return true;
414424
}
415425
@Override

tools/docker/supervisord.conf

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ command=/bin/bash -c "mvn -pl client jetty:run -Dsimulator -Dorg.eclipse.jetty.a
1212
directory=/root
1313
stdout_logfile=/dev/stdout
1414
stdout_logfile_maxbytes=0
15+
redirect_stderr=true
1516
user=root
1617

1718
[program:cloudstack-ui]

ui/src/components/view/ImageDeployInstanceButton.vue

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -83,15 +83,16 @@ export default {
8383
computed: {
8484
allowed () {
8585
return (this.$route.meta.name === 'template' ||
86-
(this.$route.meta.name === 'iso' && this.resource.bootable))
86+
(this.$route.meta.name === 'iso' && this.resource?.bootable)) &&
87+
!!this.resource?.isready
8788
}
8889
},
8990
methods: {
9091
fetchData () {
9192
this.fetchResourceData()
9293
},
9394
fetchResourceData () {
94-
if (!this.resource || !this.resource.id) {
95+
if (!this.resource || !this.resource.id || !this.resource.isready) {
9596
return
9697
}
9798
const params = {

ui/src/views/compute/wizard/VnfNicsSelection.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@
5050
<template #network="{ record }">
5151
<a-form-item style="display: block" :name="'nic-' + record.deviceid">
5252
<a-select
53-
disabled="templateNics && templateNics.length > 0"
53+
:disabled="templateNics && templateNics.length > 0"
5454
@change="updateNicNetworkValue($event, record.deviceid)"
5555
optionFilterProp="label"
5656
:filterOption="(input, option) => {

0 commit comments

Comments
 (0)