mirror of
https://github.com/corda/corda.git
synced 2025-04-12 21:53:17 +00:00
Merge pull request #7114 from corda/adel/ENT-6728
ENT-6728: Archiving of a legal identity now done in its own txn
This commit is contained in:
commit
44c3ab169f
@ -15,4 +15,6 @@ interface IdentityServiceInternal : IdentityService {
|
||||
fun verifyAndRegisterNewRandomIdentity(identity: PartyAndCertificate)
|
||||
|
||||
fun invalidateCaches(name: CordaX500Name) {}
|
||||
|
||||
fun archiveNamedIdentity(name:String, publicKeyHash: String?) {}
|
||||
}
|
@ -378,7 +378,7 @@ class PersistentIdentityService(cacheFactory: NamedCacheFactory) : SingletonSeri
|
||||
return resultList.last().publicKeyHash
|
||||
}
|
||||
|
||||
private fun archiveNamedIdentity(name:String, publicKeyHash: String?) {
|
||||
override fun archiveNamedIdentity(name:String, publicKeyHash: String?) {
|
||||
archiveIdentityExecutor.submit {
|
||||
database.transaction {
|
||||
val deleteQuery = session.criteriaBuilder.createCriteriaDelete(PersistentNetworkMapCache.PersistentPartyToPublicKeyHash::class.java)
|
||||
|
@ -310,7 +310,7 @@ open class PersistentNetworkMapCache(cacheFactory: NamedCacheFactory,
|
||||
synchronized(_changed) {
|
||||
database.transaction {
|
||||
removeInfoDB(session, node)
|
||||
archiveNamedIdentity(session, node)
|
||||
archiveNamedIdentity(node)
|
||||
changePublisher.onNext(MapChange.Removed(node))
|
||||
}
|
||||
}
|
||||
@ -319,13 +319,9 @@ open class PersistentNetworkMapCache(cacheFactory: NamedCacheFactory,
|
||||
logger.debug { "Done removing node with info: $node" }
|
||||
}
|
||||
|
||||
private fun archiveNamedIdentity(session: Session, nodeInfo: NodeInfo) {
|
||||
private fun archiveNamedIdentity(nodeInfo: NodeInfo) {
|
||||
nodeInfo.legalIdentities.forEach { party ->
|
||||
val deleteQuery = session.criteriaBuilder.createCriteriaDelete(PersistentPartyToPublicKeyHash::class.java)
|
||||
val queryRoot = deleteQuery.from(PersistentPartyToPublicKeyHash::class.java)
|
||||
deleteQuery.where(session.criteriaBuilder.equal(queryRoot.get<String>("name"), party.name.toString()))
|
||||
session.createQuery(deleteQuery).executeUpdate()
|
||||
session.save(PersistentPartyToPublicKeyHash(party.name.toString(), party.owningKey.toStringShort() ))
|
||||
identityService.archiveNamedIdentity(party.name.toString(), party.owningKey.toStringShort())
|
||||
}
|
||||
}
|
||||
|
||||
@ -457,7 +453,7 @@ open class PersistentNetworkMapCache(cacheFactory: NamedCacheFactory,
|
||||
logger.debug { "Number of node infos to be cleared: ${result.size}" }
|
||||
for (nodeInfo in result) {
|
||||
session.remove(nodeInfo)
|
||||
archiveNamedIdentity(session, nodeInfo.toNodeInfo())
|
||||
archiveNamedIdentity(nodeInfo.toNodeInfo())
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user