Integrity update

This commit is contained in:
bskjon 2024-04-21 15:28:54 +02:00
parent 9dd1825064
commit b3366a2b5f
4 changed files with 14 additions and 5 deletions

View File

@ -164,7 +164,7 @@ class EncodeService(@Autowired override var coordinator: Coordinator, @Autowired
log.error { "Can't produce error message when the referenceId is not present" } log.error { "Can't produce error message when the referenceId is not present" }
return return
} }
log.info { "Encode failed for ${runner.referenceId}" } log.info { "Encode failed for ${runner.referenceId}\n$errorMessage" }
producer.sendMessage(referenceId = runner.referenceId, event = producesEvent, producer.sendMessage(referenceId = runner.referenceId, event = producesEvent,
data = ProcesserEncodeWorkPerformed(status = Status.ERROR, message = errorMessage, producedBy = serviceId, derivedFromEventId = runner.eventId) data = ProcesserEncodeWorkPerformed(status = Status.ERROR, message = errorMessage, producedBy = serviceId, derivedFromEventId = runner.eventId)
) )

View File

@ -159,7 +159,7 @@ class ExtractService(@Autowired override var coordinator: Coordinator, @Autowire
log.error { "Can't produce error message when the referenceId is not present" } log.error { "Can't produce error message when the referenceId is not present" }
return return
} }
log.info { "Extract failed for ${runner.referenceId}" } log.info { "Extract failed for ${runner.referenceId}\n$errorMessage" }
producer.sendMessage(referenceId = runner.referenceId, event = producesEvent, producer.sendMessage(referenceId = runner.referenceId, event = producesEvent,
ProcesserExtractWorkPerformed(status = Status.ERROR, message = errorMessage, producedBy = serviceId, derivedFromEventId = runner.eventId) ProcesserExtractWorkPerformed(status = Status.ERROR, message = errorMessage, producedBy = serviceId, derivedFromEventId = runner.eventId)
) )

View File

@ -10,7 +10,9 @@ import org.jetbrains.exposed.exceptions.ExposedSQLException
import org.jetbrains.exposed.sql.* import org.jetbrains.exposed.sql.*
import org.jetbrains.exposed.sql.SqlExpressionBuilder.eq import org.jetbrains.exposed.sql.SqlExpressionBuilder.eq
import org.jetbrains.exposed.sql.javatime.CurrentDateTime import org.jetbrains.exposed.sql.javatime.CurrentDateTime
import java.security.MessageDigest
import java.time.LocalDateTime import java.time.LocalDateTime
import kotlin.text.Charsets.UTF_8
private val log = KotlinLogging.logger {} private val log = KotlinLogging.logger {}
@ -110,8 +112,6 @@ class PersistentEventManager(private val dataSource: DataSource) {
fun getEventsUncompleted(): List<List<PersistentMessage>> { fun getEventsUncompleted(): List<List<PersistentMessage>> {
val identifiesAsCompleted = listOf( val identifiesAsCompleted = listOf(
/*KafkaEvents.EventRequestProcessCompleted,
KafkaEvents.EventMediaProcessCompleted,*/
KafkaEvents.EventCollectAndStore KafkaEvents.EventCollectAndStore
) )
val all = getAllEventsGrouped() val all = getAllEventsGrouped()
@ -153,6 +153,13 @@ class PersistentEventManager(private val dataSource: DataSource) {
//region Database write //region Database write
val digest = MessageDigest.getInstance("MD5")
@OptIn(ExperimentalStdlibApi::class)
private fun getIntegrityOfData(data : String) : String {
return digest.digest(data.toByteArray(kotlin.text.Charsets.UTF_8))
.toHexString()
}
/** /**
* Stores the kafka event and its data in the database as PersistentMessage * Stores the kafka event and its data in the database as PersistentMessage
* @param event KafkaEvents * @param event KafkaEvents
@ -174,6 +181,7 @@ class PersistentEventManager(private val dataSource: DataSource) {
it[referenceId] = message.referenceId it[referenceId] = message.referenceId
it[eventId] = message.eventId it[eventId] = message.eventId
it[events.event] = event.event it[events.event] = event.event
it[integrity] = getIntegrityOfData(message.dataAsJson())
it[data] = message.dataAsJson() it[data] = message.dataAsJson()
} }
} }

View File

@ -11,10 +11,11 @@ object events: IntIdTable() {
val eventId: Column<String> = varchar("eventId", 50) val eventId: Column<String> = varchar("eventId", 50)
val event: Column<String> = varchar("event",100) val event: Column<String> = varchar("event",100)
val data: Column<String> = text("data") val data: Column<String> = text("data")
val integrity: Column<String> = varchar("integrity", 250)
//val success: Column<Boolean> = bool("success").default(false) //val success: Column<Boolean> = bool("success").default(false)
val created: Column<LocalDateTime> = datetime("created").defaultExpression(CurrentDateTime) val created: Column<LocalDateTime> = datetime("created").defaultExpression(CurrentDateTime)
init { init {
uniqueIndex(referenceId, eventId, event) uniqueIndex(referenceId, eventId, event, integrity)
} }
} }