diff options
| author | Dante Niewenhuis <d.niewenhuis@hotmail.com> | 2023-11-15 15:27:18 +0100 |
|---|---|---|
| committer | Dante Niewenhuis <d.niewenhuis@hotmail.com> | 2023-11-15 15:27:18 +0100 |
| commit | 1513efe07605975cd2f86f0b739bd490e4fc9970 (patch) | |
| tree | 41e703d5a129948d445d9957392c632ab3f74872 /opendc-experiments/opendc-experiments-compute/src/main | |
| parent | d823cd1eb16d175fb778c9f6c9282aa16f1a25ff (diff) | |
fixed a problem with the Loggers by copying the data
Diffstat (limited to 'opendc-experiments/opendc-experiments-compute/src/main')
3 files changed, 36 insertions, 10 deletions
diff --git a/opendc-experiments/opendc-experiments-compute/src/main/kotlin/org/opendc/experiments/compute/ComputeSteps.kt b/opendc-experiments/opendc-experiments-compute/src/main/kotlin/org/opendc/experiments/compute/ComputeSteps.kt index c79d9b37..690156e2 100644 --- a/opendc-experiments/opendc-experiments-compute/src/main/kotlin/org/opendc/experiments/compute/ComputeSteps.kt +++ b/opendc-experiments/opendc-experiments-compute/src/main/kotlin/org/opendc/experiments/compute/ComputeSteps.kt @@ -59,7 +59,7 @@ public fun setupComputeService( public fun registerComputeMonitor( serviceDomain: String, monitor: ComputeMonitor, - exportInterval: Duration = Duration.ofMinutes(1) + exportInterval: Duration = Duration.ofMinutes(5) ): ProvisioningStep { return ComputeMonitorProvisioningStep(serviceDomain, monitor, exportInterval) } diff --git a/opendc-experiments/opendc-experiments-compute/src/main/kotlin/org/opendc/experiments/compute/telemetry/ComputeMetricReader.kt b/opendc-experiments/opendc-experiments-compute/src/main/kotlin/org/opendc/experiments/compute/telemetry/ComputeMetricReader.kt index ff3bfb8e..e8cd3a55 100644 --- a/opendc-experiments/opendc-experiments-compute/src/main/kotlin/org/opendc/experiments/compute/telemetry/ComputeMetricReader.kt +++ b/opendc-experiments/opendc-experiments-compute/src/main/kotlin/org/opendc/experiments/compute/telemetry/ComputeMetricReader.kt @@ -87,7 +87,7 @@ public class ComputeMetricReader( } } finally { - loggState() +// loggState() if (monitor is AutoCloseable) { monitor.close() @@ -109,12 +109,12 @@ public class ComputeMetricReader( for (server in this.service.servers) { val reader = this.serverTableReaders.computeIfAbsent(server) { ServerTableReaderImpl(service, it) } reader.record(now) - this.monitor.record(reader) + this.monitor.record(reader.copy()) reader.reset() } this.serviceTableReader.record(now) - monitor.record(this.serviceTableReader) + monitor.record(this.serviceTableReader.copy()) } catch (cause: Throwable) { this.logger.warn(cause) { "Exporter threw an Exception" } } @@ -128,6 +128,27 @@ public class ComputeMetricReader( * An aggregator for service metrics before they are reported. */ private class ServiceTableReaderImpl(private val service: ComputeService) : ServiceTableReader { + + override fun copy(): ServiceTableReader { + val newServiceTable = ServiceTableReaderImpl(service) + newServiceTable.setValues(this) + + return newServiceTable + } + + override fun setValues(table: ServiceTableReader) { + _timestamp = table.timestamp + + _hostsUp = table.hostsUp + _hostsDown = table.hostsDown + _serversTotal = table.serversTotal + _serversPending = table.serversPending + _serversActive = table.serversActive + _attemptsSuccess = table.attemptsSuccess + _attemptsFailure = table.attemptsFailure + _attemptsError = table.attemptsError + } + private var _timestamp: Instant = Instant.MIN override val timestamp: Instant get() = _timestamp @@ -363,18 +384,18 @@ public class ComputeMetricReader( } override fun setValues(table: ServerTableReader) { + host = table.host + _timestamp = table.timestamp - _uptime = table.uptime - _downtime = table.downtime - _provisionTime = table.provisionTime - _bootTime = table.bootTime _cpuLimit = table.cpuLimit _cpuActiveTime = table.cpuActiveTime _cpuIdleTime = table.cpuIdleTime _cpuStealTime = table.cpuStealTime _cpuLostTime = table.cpuLostTime - - host = table.host + _uptime = table.uptime + _downtime = table.downtime + _provisionTime = table.provisionTime + _bootTime = table.bootTime } private val _server = server diff --git a/opendc-experiments/opendc-experiments-compute/src/main/kotlin/org/opendc/experiments/compute/telemetry/table/ServiceTableReader.kt b/opendc-experiments/opendc-experiments-compute/src/main/kotlin/org/opendc/experiments/compute/telemetry/table/ServiceTableReader.kt index bb926298..a077a476 100644 --- a/opendc-experiments/opendc-experiments-compute/src/main/kotlin/org/opendc/experiments/compute/telemetry/table/ServiceTableReader.kt +++ b/opendc-experiments/opendc-experiments-compute/src/main/kotlin/org/opendc/experiments/compute/telemetry/table/ServiceTableReader.kt @@ -28,6 +28,11 @@ import java.time.Instant * An interface that is used to read a row of a service trace entry. */ public interface ServiceTableReader { + + public fun copy(): ServiceTableReader + + public fun setValues(table: ServiceTableReader) + /** * The timestamp of the current entry of the reader. */ |
