Removed redundant serialisation of checkpoints (#1004)

This commit is contained in:
Shams Asari 2017-08-14 16:24:49 +01:00
parent 3138e2b6de
commit 3888635055

View File

@ -1,11 +1,10 @@
package net.corda.node.services.persistence package net.corda.node.services.persistence
import net.corda.core.serialization.SerializationDefaults import net.corda.core.serialization.SerializedBytes
import net.corda.core.serialization.deserialize
import net.corda.core.serialization.serialize
import net.corda.node.services.api.Checkpoint import net.corda.node.services.api.Checkpoint
import net.corda.node.services.api.CheckpointStorage import net.corda.node.services.api.CheckpointStorage
import net.corda.node.utilities.* import net.corda.node.utilities.DatabaseTransactionManager
import net.corda.node.utilities.NODE_DATABASE_PREFIX
import javax.persistence.Column import javax.persistence.Column
import javax.persistence.Entity import javax.persistence.Entity
import javax.persistence.Id import javax.persistence.Id
@ -28,11 +27,11 @@ class DBCheckpointStorage : CheckpointStorage {
var checkpoint: ByteArray = ByteArray(0) var checkpoint: ByteArray = ByteArray(0)
) )
override fun addCheckpoint(value: Checkpoint) { override fun addCheckpoint(checkpoint: Checkpoint) {
val session = DatabaseTransactionManager.current().session val session = DatabaseTransactionManager.current().session
session.save(DBCheckpoint().apply { session.save(DBCheckpoint().apply {
checkpointId = value.id.toString() checkpointId = checkpoint.id.toString()
checkpoint = value.serialize(context = SerializationDefaults.CHECKPOINT_CONTEXT).bytes this.checkpoint = checkpoint.serializedFiber.bytes
}) })
} }
@ -50,10 +49,9 @@ class DBCheckpointStorage : CheckpointStorage {
val criteriaQuery = session.criteriaBuilder.createQuery(DBCheckpoint::class.java) val criteriaQuery = session.criteriaBuilder.createQuery(DBCheckpoint::class.java)
val root = criteriaQuery.from(DBCheckpoint::class.java) val root = criteriaQuery.from(DBCheckpoint::class.java)
criteriaQuery.select(root) criteriaQuery.select(root)
val query = session.createQuery(criteriaQuery) for (row in session.createQuery(criteriaQuery).resultList) {
val checkpoints = query.resultList.map { e -> e.checkpoint.deserialize<Checkpoint>(context = SerializationDefaults.CHECKPOINT_CONTEXT) }.asSequence() val checkpoint = Checkpoint(SerializedBytes(row.checkpoint))
for (e in checkpoints) { if (!block(checkpoint)) {
if (!block(e)) {
break break
} }
} }