Skip to content
Snippets Groups Projects
Commit fb0525c5 authored by Benedikt Wetzel's avatar Benedikt Wetzel Committed by Lorenz Boguhn
Browse files

Catch additional exception while deletion of executions

parent 95d6a38e
No related branches found
No related tags found
4 merge requests!159Re-implementation of Theodolite with Kotlin/Quarkus,!157Update Graal Image in CI pipeline,!121Introduce hot fixes from the presentation branch,!83WIP: Re-implementation of Theodolite with Kotlin/Quarkus
...@@ -3,6 +3,7 @@ package theodolite.execution.operator ...@@ -3,6 +3,7 @@ package theodolite.execution.operator
import io.fabric8.kubernetes.client.informers.ResourceEventHandler import io.fabric8.kubernetes.client.informers.ResourceEventHandler
import mu.KotlinLogging import mu.KotlinLogging
import theodolite.benchmark.BenchmarkExecution import theodolite.benchmark.BenchmarkExecution
import java.lang.NullPointerException
private val logger = KotlinLogging.logger {} private val logger = KotlinLogging.logger {}
...@@ -16,17 +17,25 @@ class ExecutionHandler(private val controller: TheodoliteController): ResourceEv ...@@ -16,17 +17,25 @@ class ExecutionHandler(private val controller: TheodoliteController): ResourceEv
override fun onUpdate(oldExecution: BenchmarkExecution, newExecution: BenchmarkExecution) { override fun onUpdate(oldExecution: BenchmarkExecution, newExecution: BenchmarkExecution) {
logger.info { "Add updated execution to queue." } logger.info { "Add updated execution to queue." }
newExecution.name = newExecution.metadata.name newExecution.name = newExecution.metadata.name
this.controller.executionsQueue.removeIf { e -> e.name == newExecution.metadata.name } try {
this.controller.executionsQueue.removeIf { e -> e.name == newExecution.metadata.name }
} catch(e: NullPointerException) {
logger.warn { "No execution found for deletion" }
}
this.controller.executionsQueue.addFirst(newExecution) this.controller.executionsQueue.addFirst(newExecution)
if (this.controller.isInitialized() && this.controller.executor.getExecution().name == newExecution.metadata.name) { if (this.controller.isInitialized() && this.controller.executor.getExecution().name == newExecution.metadata.name) {
this.controller.isUpdated.set(true) this.controller.isUpdated.set(true)
this.controller.executor.executor.run.compareAndSet(true, false) this.controller.executor.executor.run.compareAndSet(true, false)
} }
} }
override fun onDelete(execution: BenchmarkExecution, b: Boolean) { override fun onDelete(execution: BenchmarkExecution, b: Boolean) {
logger.info { "Delete execution ${execution.metadata.name} from queue." } try {
this.controller.executionsQueue.removeIf { e -> e.name == execution.metadata.name } this.controller.executionsQueue.removeIf { e -> e.name == execution.metadata.name }
logger.info { "Delete execution ${execution.metadata.name} from queue." }
} catch(e: NullPointerException) {
logger.warn { "No execution found for deletion" }
}
if (this.controller.isInitialized() && this.controller.executor.getExecution().name == execution.metadata.name) { if (this.controller.isInitialized() && this.controller.executor.getExecution().name == execution.metadata.name) {
this.controller.isUpdated.set(true) this.controller.isUpdated.set(true)
this.controller.executor.executor.run.compareAndSet(true, false) this.controller.executor.executor.run.compareAndSet(true, false)
......
...@@ -70,9 +70,15 @@ class TheodoliteController( ...@@ -70,9 +70,15 @@ class TheodoliteController(
executor = TheodoliteExecutor(config = execution, kubernetesBenchmark = benchmark) executor = TheodoliteExecutor(config = execution, kubernetesBenchmark = benchmark)
executor.run() executor.run()
if (!isUpdated.get()) { try {
client.customResource(executionContext).delete(client.namespace, execution.metadata.name) if (!isUpdated.get()) {
this.executionsQueue.removeIf { e -> e.name == execution.name }
client.customResource(executionContext).delete(client.namespace, execution.metadata.name)
}
} catch (e: Exception) {
logger.warn { "Deletion skipped." }
} }
logger.info { "Execution of ${execution.name} is finally stopped." } logger.info { "Execution of ${execution.name} is finally stopped." }
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment