mirror of
https://github.com/corda/corda.git
synced 2025-06-22 00:57:21 +00:00
* CORDA-866: Implement removal of stale nodes from network - backport (#3128) * CORDA-866: Implement removal of stale nodes from network Backported * Implement removal of stale nodes from network Add eventHorizon to NetworkParameters structure. Add republishing of node info on 1 day intervals - it is treated by network map as heartbeat from node indicating if it's alive or not. Add removal of old node infos on network map signing. * Add copy method to NetworkParameters data class Add JvmOverloads annotation to the constructor, because it's data class exposed in API * Fix test * ENT-1933: make NetworkParameters serialization compatible (#3234) * ENT-1933: make NetworkParameters serialization compatible * Fixes after cherry-pick
This commit is contained in:
committed by
Katelyn Baker
parent
593708e885
commit
f132923b86
@ -13,6 +13,7 @@ import net.corda.nodeapi.internal.crypto.CertificateAndKeyPair
|
||||
import net.corda.core.node.NetworkParameters
|
||||
import net.corda.nodeapi.internal.network.NetworkMap
|
||||
import net.corda.nodeapi.internal.network.ParametersUpdate
|
||||
import net.corda.testing.common.internal.testNetworkParameters
|
||||
import org.eclipse.jetty.server.Server
|
||||
import org.eclipse.jetty.server.ServerConnector
|
||||
import org.eclipse.jetty.server.handler.HandlerCollection
|
||||
@ -39,7 +40,7 @@ class NetworkMapServer(private val cacheTimeout: Duration,
|
||||
private val myHostNameValue: String = "test.host.name",
|
||||
vararg additionalServices: Any) : Closeable {
|
||||
companion object {
|
||||
private val stubNetworkParameters = NetworkParameters(1, emptyList(), 10485760, Int.MAX_VALUE, Instant.now(), 10, emptyMap())
|
||||
private val stubNetworkParameters = testNetworkParameters(epoch = 10)
|
||||
}
|
||||
|
||||
private val server: Server
|
||||
@ -77,6 +78,8 @@ class NetworkMapServer(private val cacheTimeout: Duration,
|
||||
.let { NetworkHostAndPort(it.host, it.localPort) }
|
||||
}
|
||||
|
||||
fun networkMapHashes(): List<SecureHash> = service.nodeInfoMap.keys.toList()
|
||||
|
||||
fun removeNodeInfo(nodeInfo: NodeInfo) {
|
||||
service.removeNodeInfo(nodeInfo)
|
||||
}
|
||||
@ -102,7 +105,7 @@ class NetworkMapServer(private val cacheTimeout: Duration,
|
||||
|
||||
@Path("network-map")
|
||||
inner class InMemoryNetworkMapService {
|
||||
private val nodeInfoMap = mutableMapOf<SecureHash, SignedNodeInfo>()
|
||||
val nodeInfoMap = mutableMapOf<SecureHash, SignedNodeInfo>()
|
||||
val latestAcceptedParametersMap = mutableMapOf<PublicKey, SecureHash>()
|
||||
private val signedNetParams by lazy {
|
||||
networkParameters.signWithCert(networkMapCa.keyPair.private, networkMapCa.certificate)
|
||||
|
@ -2,6 +2,8 @@ package net.corda.testing.common.internal
|
||||
|
||||
import net.corda.core.node.NetworkParameters
|
||||
import net.corda.core.node.NotaryInfo
|
||||
import net.corda.core.utilities.days
|
||||
import java.time.Duration
|
||||
import java.time.Instant
|
||||
|
||||
fun testNetworkParameters(
|
||||
@ -11,7 +13,8 @@ fun testNetworkParameters(
|
||||
maxMessageSize: Int = 10485760,
|
||||
// TODO: Make this configurable and consistence across driver, bootstrapper, demobench and NetworkMapServer
|
||||
maxTransactionSize: Int = maxMessageSize,
|
||||
epoch: Int = 1
|
||||
epoch: Int = 1,
|
||||
eventHorizon: Duration = 30.days
|
||||
): NetworkParameters {
|
||||
return NetworkParameters(
|
||||
minimumPlatformVersion = minimumPlatformVersion,
|
||||
@ -20,6 +23,7 @@ fun testNetworkParameters(
|
||||
maxMessageSize = maxMessageSize,
|
||||
maxTransactionSize = maxTransactionSize,
|
||||
epoch = epoch,
|
||||
whitelistedContractImplementations = emptyMap()
|
||||
whitelistedContractImplementations = emptyMap(),
|
||||
eventHorizon = eventHorizon
|
||||
)
|
||||
}
|
Reference in New Issue
Block a user