From fd8c2e4dabea728f323b809755cdb46b37ce7660 Mon Sep 17 00:00:00 2001 From: Mike Hearn Date: Tue, 21 Aug 2018 23:41:34 +0200 Subject: [PATCH 1/6] Provide the exception class name and not just the message when there's an internal deserialisation fault. --- .../corda/serialization/internal/amqp/DeserializationInput.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/serialization/src/main/kotlin/net/corda/serialization/internal/amqp/DeserializationInput.kt b/serialization/src/main/kotlin/net/corda/serialization/internal/amqp/DeserializationInput.kt index 126400f31d..6d75e3a553 100644 --- a/serialization/src/main/kotlin/net/corda/serialization/internal/amqp/DeserializationInput.kt +++ b/serialization/src/main/kotlin/net/corda/serialization/internal/amqp/DeserializationInput.kt @@ -101,7 +101,7 @@ class DeserializationInput constructor( } catch (nse: NotSerializableException) { throw nse } catch (t: Throwable) { - throw NotSerializableException("Unexpected throwable: ${t.message}").apply { initCause(t) } + throw NotSerializableException("Internal deserialization failure: ${t.javaClass.name}: ${t.message}").apply { initCause(t) } } finally { objectHistory.clear() } From 8fd4d0d21801e0a6cc6b4b714fd82a917219d8cb Mon Sep 17 00:00:00 2001 From: Mike Hearn Date: Wed, 22 Aug 2018 00:02:18 +0200 Subject: [PATCH 2/6] RPC: propagate failures when they occur during deserialization. Before this change, a failure to deserialize an RPC reply would leave the caller hanging because we'd never set the future. --- .../rpc/internal/RPCClientProxyHandler.kt | 118 +++++++++--------- .../main/kotlin/net/corda/nodeapi/RPCApi.kt | 17 ++- 2 files changed, 76 insertions(+), 59 deletions(-) diff --git a/client/rpc/src/main/kotlin/net/corda/client/rpc/internal/RPCClientProxyHandler.kt b/client/rpc/src/main/kotlin/net/corda/client/rpc/internal/RPCClientProxyHandler.kt index 35c1baccaf..8b45999554 100644 --- a/client/rpc/src/main/kotlin/net/corda/client/rpc/internal/RPCClientProxyHandler.kt +++ b/client/rpc/src/main/kotlin/net/corda/client/rpc/internal/RPCClientProxyHandler.kt @@ -31,26 +31,15 @@ import org.apache.activemq.artemis.api.core.ActiveMQException import org.apache.activemq.artemis.api.core.ActiveMQNotConnectedException import org.apache.activemq.artemis.api.core.RoutingType import org.apache.activemq.artemis.api.core.SimpleString +import org.apache.activemq.artemis.api.core.client.* import org.apache.activemq.artemis.api.core.client.ActiveMQClient.DEFAULT_ACK_BATCH_SIZE -import org.apache.activemq.artemis.api.core.client.ClientConsumer -import org.apache.activemq.artemis.api.core.client.ClientMessage -import org.apache.activemq.artemis.api.core.client.ClientProducer -import org.apache.activemq.artemis.api.core.client.ClientSession -import org.apache.activemq.artemis.api.core.client.ClientSessionFactory -import org.apache.activemq.artemis.api.core.client.FailoverEventType -import org.apache.activemq.artemis.api.core.client.ServerLocator import rx.Notification import rx.Observable import rx.subjects.UnicastSubject import java.lang.reflect.InvocationHandler import java.lang.reflect.Method import java.util.* -import java.util.concurrent.ConcurrentHashMap -import java.util.concurrent.ExecutorService -import java.util.concurrent.Executors -import java.util.concurrent.ScheduledExecutorService -import java.util.concurrent.ScheduledFuture -import java.util.concurrent.TimeUnit +import java.util.concurrent.* import java.util.concurrent.atomic.AtomicBoolean import java.util.concurrent.atomic.AtomicLong import kotlin.reflect.jvm.javaMethod @@ -288,56 +277,71 @@ class RPCClientProxyHandler( // The handler for Artemis messages. private fun artemisMessageHandler(message: ClientMessage) { - val serverToClient = RPCApi.ServerToClient.fromClientMessage(serializationContextWithObservableContext, message) - val deduplicationSequenceNumber = message.getLongProperty(RPCApi.DEDUPLICATION_SEQUENCE_NUMBER_FIELD_NAME) - if (deduplicationChecker.checkDuplicateMessageId(serverToClient.deduplicationIdentity, deduplicationSequenceNumber)) { - log.info("Message duplication detected, discarding message") - return + fun completeExceptionally(id: InvocationId, e: Throwable, future: SettableFuture?) { + val rpcCallSite: Throwable? = callSiteMap?.get(id) + if (rpcCallSite != null) addRpcCallSiteToThrowable(e, rpcCallSite) + future?.setException(e.cause ?: e) } - log.debug { "Got message from RPC server $serverToClient" } - when (serverToClient) { - is RPCApi.ServerToClient.RpcReply -> { - val replyFuture = rpcReplyMap.remove(serverToClient.id) - if (replyFuture == null) { - log.error("RPC reply arrived to unknown RPC ID ${serverToClient.id}, this indicates an internal RPC error.") - } else { - val result = serverToClient.result - when (result) { - is Try.Success -> replyFuture.set(result.value) - is Try.Failure -> { - val rpcCallSite = callSiteMap?.get(serverToClient.id) - if (rpcCallSite != null) addRpcCallSiteToThrowable(result.exception, rpcCallSite) - replyFuture.setException(result.exception) - } - } - } - } - is RPCApi.ServerToClient.Observation -> { - val observable = observableContext.observableMap.getIfPresent(serverToClient.id) - if (observable == null) { - log.debug("Observation ${serverToClient.content} arrived to unknown Observable with ID ${serverToClient.id}. " + - "This may be due to an observation arriving before the server was " + - "notified of observable shutdown") - } else { - // We schedule the onNext() on an executor sticky-pooled based on the Observable ID. - observationExecutorPool.run(serverToClient.id) { executor -> - executor.submit { - val content = serverToClient.content - if (content.isOnCompleted || content.isOnError) { - observableContext.observableMap.invalidate(serverToClient.id) - } - // Add call site information on error - if (content.isOnError) { - val rpcCallSite = callSiteMap?.get(serverToClient.id) - if (rpcCallSite != null) addRpcCallSiteToThrowable(content.throwable, rpcCallSite) - } - observable.onNext(content) + + try { + // Deserialize the reply from the server, both the wrapping metadata and the actual body of the return value. + val serverToClient: RPCApi.ServerToClient = try { + RPCApi.ServerToClient.fromClientMessage(serializationContextWithObservableContext, message) + } catch (e: RPCApi.ServerToClient.FailedToDeserializeReply) { + // Might happen if something goes wrong during mapping the response to classes, evolution, class synthesis etc. + log.error("Failed to deserialize RPC body", e) + completeExceptionally(e.id, e, rpcReplyMap.remove(e.id)) + return + } + val deduplicationSequenceNumber = message.getLongProperty(RPCApi.DEDUPLICATION_SEQUENCE_NUMBER_FIELD_NAME) + if (deduplicationChecker.checkDuplicateMessageId(serverToClient.deduplicationIdentity, deduplicationSequenceNumber)) { + log.info("Message duplication detected, discarding message") + return + } + log.debug { "Got message from RPC server $serverToClient" } + when (serverToClient) { + is RPCApi.ServerToClient.RpcReply -> { + val replyFuture = rpcReplyMap.remove(serverToClient.id) + if (replyFuture == null) { + log.error("RPC reply arrived to unknown RPC ID ${serverToClient.id}, this indicates an internal RPC error.") + } else { + val result: Try = serverToClient.result + when (result) { + is Try.Success -> replyFuture.set(result.value) + is Try.Failure -> { + completeExceptionally(serverToClient.id, result.exception, replyFuture) + } + } + } + } + is RPCApi.ServerToClient.Observation -> { + val observable: UnicastSubject>? = observableContext.observableMap.getIfPresent(serverToClient.id) + if (observable == null) { + log.debug("Observation ${serverToClient.content} arrived to unknown Observable with ID ${serverToClient.id}. " + + "This may be due to an observation arriving before the server was " + + "notified of observable shutdown") + } else { + // We schedule the onNext() on an executor sticky-pooled based on the Observable ID. + observationExecutorPool.run(serverToClient.id) { executor -> + executor.submit { + val content = serverToClient.content + if (content.isOnCompleted || content.isOnError) { + observableContext.observableMap.invalidate(serverToClient.id) + } + // Add call site information on error + if (content.isOnError) { + val rpcCallSite = callSiteMap?.get(serverToClient.id) + if (rpcCallSite != null) addRpcCallSiteToThrowable(content.throwable, rpcCallSite) + } + observable.onNext(content) + } } } } } + } finally { + message.acknowledge() } - message.acknowledge() } /** diff --git a/node-api/src/main/kotlin/net/corda/nodeapi/RPCApi.kt b/node-api/src/main/kotlin/net/corda/nodeapi/RPCApi.kt index 1a482e1ff0..1f118aa631 100644 --- a/node-api/src/main/kotlin/net/corda/nodeapi/RPCApi.kt +++ b/node-api/src/main/kotlin/net/corda/nodeapi/RPCApi.kt @@ -14,7 +14,7 @@ import net.corda.core.utilities.OpaqueBytes import net.corda.core.utilities.Try import org.apache.activemq.artemis.api.core.ActiveMQBuffer import org.apache.activemq.artemis.api.core.SimpleString -import org.apache.activemq.artemis.api.core.client.* +import org.apache.activemq.artemis.api.core.client.ClientMessage import org.apache.activemq.artemis.api.core.management.CoreNotificationType import org.apache.activemq.artemis.api.core.management.ManagementHelper import org.apache.activemq.artemis.reader.MessageUtil @@ -212,6 +212,11 @@ object RPCApi { } } + /** + * Thrown if the RPC reply body couldn't be deserialized. + */ + class FailedToDeserializeReply(val id: InvocationId, cause: Throwable) : RuntimeException("Failed to deserialize RPC reply: ${cause.message}", cause) + companion object { private fun Any.safeSerialize(context: SerializationContext, wrap: (Throwable) -> Any) = try { serialize(context = context) @@ -226,10 +231,18 @@ object RPCApi { RPCApi.ServerToClient.Tag.RPC_REPLY -> { val id = message.invocationId(RPC_ID_FIELD_NAME, RPC_ID_TIMESTAMP_FIELD_NAME) ?: throw IllegalStateException("Cannot parse invocation id from client message.") val poolWithIdContext = context.withProperty(RpcRequestOrObservableIdKey, id) + // The result here is a Try<> that represents the attempt to try the operation on the server side. + // If anything goes wrong with deserialisation of the response, we propagate it differently because + // we also need to pass through the invocation and dedupe IDs. + val result: Try = try { + message.getBodyAsByteArray().deserialize(context = poolWithIdContext) + } catch (e: Exception) { + throw FailedToDeserializeReply(id, e) + } RpcReply( id = id, deduplicationIdentity = deduplicationIdentity, - result = message.getBodyAsByteArray().deserialize(context = poolWithIdContext) + result = result ) } RPCApi.ServerToClient.Tag.OBSERVATION -> { From 329c9da0a98fabba86cb3f26ec9dd86494d85a12 Mon Sep 17 00:00:00 2001 From: Chris Rankin Date: Fri, 24 Aug 2018 15:51:40 +0100 Subject: [PATCH 3/6] CID-251: Integrate DJVM with Corda's existing deterministic-rt. (#3846) * Integrate DJVM with Corda's existing deterministic-rt. * Remove generated whitelists from DJVM. * Fix Manifest attributes, disable jar tasks and attach shadowJar to assemble task. --- djvm/build.gradle | 54 +++--------------- djvm/cli/build.gradle | 53 +++++++++-------- .../main/resources/jdk8-deterministic.dat.gz | Bin 219390 -> 0 bytes .../resources/kotlin-deterministic.dat.gz | Bin 174469 -> 0 bytes jdk8u-deterministic/build.gradle | 4 ++ 5 files changed, 40 insertions(+), 71 deletions(-) delete mode 100644 djvm/src/main/resources/jdk8-deterministic.dat.gz delete mode 100644 djvm/src/main/resources/kotlin-deterministic.dat.gz diff --git a/djvm/build.gradle b/djvm/build.gradle index 04947e10e5..270bfc2375 100644 --- a/djvm/build.gradle +++ b/djvm/build.gradle @@ -1,20 +1,10 @@ -buildscript { - // Shaded version of ASM to avoid conflict with root project. - ext.asm_version = '6.1.1' - ext.deterministic_rt_version = '1.0-20180625.120901-7' - - repositories { - mavenCentral() - jcenter() - } - dependencies { - classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" - classpath 'com.github.jengelman.gradle.plugins:shadow:2.0.3' - } +plugins { + id 'com.github.johnrengelman.shadow' version '2.0.4' } -plugins { - id 'com.github.johnrengelman.shadow' version '2.0.3' +ext { + // Shaded version of ASM to avoid conflict with root project. + asm_version = '6.1.1' } dependencies { @@ -32,47 +22,16 @@ dependencies { // Classpath scanner compile "io.github.lukehutch:fast-classpath-scanner:$fast_classpath_scanner_version" - // Deterministic runtime - used in whitelist generation - runtime "net.corda:deterministic-rt:$deterministic_rt_version:api" - // Test utilities testCompile "junit:junit:$junit_version" testCompile "org.assertj:assertj-core:$assertj_version" } -repositories { - mavenLocal() - mavenCentral() - maven { - url "$artifactory_contextUrl/corda-dev" - } -} - -task generateWhitelist(type: JavaExec) { - // This is an example of how a whitelist can be generated from a JAR. In most applications though, it is recommended - // thet the minimal set whitelist is used. - def jars = configurations.runtime.collect { - it.toString() - }.findAll { - it.toString().contains("deterministic-rt") - } - classpath = sourceSets.main.runtimeClasspath - main = 'net.corda.djvm.tools.cli.Program' - args = ['whitelist', 'generate', '-o', 'src/main/resources/jdk8-deterministic.dat.gz'] + jars -} - -jar { - manifest { - attributes( - 'Automatic-Module-Name': 'net.corda.djvm' - ) - } -} +jar.enabled = false shadowJar { baseName = "djvm" classifier = "" - exclude 'deterministic-rt*.jar' dependencies { exclude(dependency('com.jcabi:.*:.*')) exclude(dependency('org.apache.*:.*:.*')) @@ -87,3 +46,4 @@ shadowJar { } } } +assemble.dependsOn shadowJar diff --git a/djvm/cli/build.gradle b/djvm/cli/build.gradle index 01a2324d5b..a3543bcc54 100644 --- a/djvm/cli/build.gradle +++ b/djvm/cli/build.gradle @@ -1,16 +1,15 @@ -buildscript { - repositories { - mavenCentral() - jcenter() - } - dependencies { - classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" - classpath 'com.github.jengelman.gradle.plugins:shadow:2.0.3' +plugins { + id 'com.github.johnrengelman.shadow' +} + +repositories { + maven { + url "$artifactory_contextUrl/corda-dev" } } -plugins { - id 'com.github.johnrengelman.shadow' +configurations { + deterministicRt } dependencies { @@ -23,23 +22,29 @@ dependencies { compile "info.picocli:picocli:$picocli_version" compile "io.github.lukehutch:fast-classpath-scanner:$fast_classpath_scanner_version" compile project(path: ":djvm", configuration: "shadow") + + // Deterministic runtime - used in whitelist generation + deterministicRt project(path: ':jdk8u-deterministic', configuration: 'jdk') } -repositories { - mavenLocal() - mavenCentral() -} - -jar { - manifest { - attributes( - 'Main-Class': 'net.corda.djvm.tools.cli.Program', - 'Automatic-Module-Name': 'net.corda.djvm', - 'Build-Date': new Date().format("yyyy-MM-dd'T'HH:mm:ssZ") - ) - } -} +jar.enabled = false shadowJar { baseName = "corda-djvm" + classifier = 'cli' + manifest { + attributes( + 'Automatic-Module-Name': 'net.corda.djvm', + 'Main-Class': 'net.corda.djvm.tools.cli.Program', + 'Build-Date': new Date().format("yyyy-MM-dd'T'HH:mm:ssZ") + ) + } +} +assemble.dependsOn shadowJar + +task generateWhitelist(type: JavaExec, dependsOn: shadowJar) { + // This is an example of how a whitelist can be generated from a JAR. In most applications though, it is recommended + // that the minimal set whitelist is used. + main = '-jar' + args = [shadowJar.outputs.files.singleFile, 'whitelist', 'generate', '-o', "$buildDir/jdk8-deterministic.dat.gz", configurations.deterministicRt.files[0] ] } diff --git a/djvm/src/main/resources/jdk8-deterministic.dat.gz b/djvm/src/main/resources/jdk8-deterministic.dat.gz deleted file mode 100644 index d5b4cc27ec56e5f205860782ae1080295c8844c1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 219390 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

(fDxQBUgQW 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 z z#UqH`X%_t%dd(QhE4k?_WJf$fCgfK?^a^8X7Gml1t|mC5B4a`v<+Wzv60ZBZc!k2Q z+(0}R3!7M!^-7I{b=wf_z#^lp)FYs)FS@fU#NExp z2d@%spzFo_+FPtX+|5Q;ntSsC6vUyWfIG^{VRe;k!fmxt0F=oQAW7fW?b2#mgebM+ z8e91rS$Q23CFsx6e$wz`&Lzd{{rHq^0nS}Zamf|nc9=!ri+rdprjo_LcB1k0R#Xj% zw5OfIB{C9i$r33e*eDy6DUpJp3Y17u;H62V5Qw5ASkr&Lm z&H@S&NHxV29Fc>dN{z^2EQ*Y1K>Jz|%}R*dq!L+ zL`p7p+gkNO2A+t$TQ%c4Acpd+y$q{@9|$;`QXeugf;1Kpk^Ioa!6E^gq`+bx7%9_e#x#BVzOUb>YZ`X&h`{lOSq2R=l9 z1~Tt=AQilLQ|^%rxeq&ZT$C}WP@&}+6_%c{#A-(B{#NH;A9chR&v|$ok`?h+1S!f? zRO;XB=O7~i4Zr@Xg=aekjZZT1qd!S>A7OtgUSj8Ia1hH!k|^Ml$Fyn5!vo3fz_)83 zq+zVr(B`x5(-333O}k)!$n_J8X@|l1ry@R~o1$G-iVKbu@nX> zWn`M+2V+l*FN=OwYcHqRNtRw#1N6$vGxxgi*0=h>gqn>L6oua0JH$C?&0x8v!F{+T z?`><%1*Oz~G8VjC#V~8-rwiZrF-?eyo%kkXswsT0U;7y5oA`5_e2sBzu(h%#M|2rz zY3Ov9TNBwRL*5<(YEwPj<@=w;K5!iAt%X7V<;AKY45~l@NB|{#^XUT4LEn5d8RHH; znIkEjlFPzDGXb1(hHDe#0iaVEjxb&qv-)Or`7e=S?5p<*v0LJxVB5D1$S3P&kNDFheth${-})1g3BkmG3&E6ez~{ zE_?F{#j|U*8O2O?x5o%k9hZa-G33YPh27Fk=HH6VvMA_;jiFgT6DFqM)Og5 z@Z_rL!Q%UDj0^BHB=0T}`X`O$;}9AU!={t-XJo9M+7%SndyFpa`_ zCPcR~V&cZc7g!{g=LRdzqQ^Kq_ByI%85LT1YKDpcGsjq3Owd`(hnk2;A)qWVj$^G) zGT;XTPNaL0Xyvp-pEZOyxNk^4c4uI(*2KfAHi%a4e%m%;` z9vRZs9a#h)a#=D-t*j5$aUw?J@!j&nZ1v7t`Qy9MYPIk$ZdTARcm;B?yuvY*7jBN9#zPR#M@9zBBa)#ud&POX8%e&ERf^ApH zb9XUXA{l*uHa2LMPr3ukay`8rElh;XCLiz|h9AtIAwQSDx-=9u9bI_SKTH`-_$Ff` zaTAjvGM&$$CvOeM{C5LESEJd;gbh7{uT~$fk<*J*sJSy>n~xT64cfH4_)wTq1HO0j z#ma3?7Vm0>Z_ldxTRi?<$fk)e#UVwD+94H$1`{>(?3 zEgIKAahMtJKm3VFPnPvGkUX1B86Xw-$)-SRCVFtJb%7}rQvOX${L3iVMt_FVRzZV4 zHEbMb?k`4g5{ex-Km_ijroIf+&H-?pvLumH9_6AsnpFKQnny$S889J)XT1u(VHs0c zII7x;V4%Zzy-l)Wz*Sp#RA021=U-#+nR10dOMR3<7EolwVBAs>RqJ3u1p^_Vlj)u; z3cXjb+a)ng4?u)8Oe57txmRKOSer1&odA|S>fdCMJN@5q12Sp?Xkl+wh?QYrfhgGn zEtqW13r^%{80phnCT1_n2l&!uZi@4{^*Mb0QLDKL>QB9({@e?yd(h&aJzISup>Ly4 z-(Nt@qB#62wa+-~StFH+YzFaj^fx0C%RCRku?AXqg4EF+dPriT`y@HgdK;5o(3_+c zqk{x&?@?*8FYn|gs!<3?J1?3|t@}|E?Vg~;u z`5aE33)2>@p`%MJq3lWSjL+0+aN1$Uzp;jW^fC0RkqP!OugPS@enfwfQl5<|(w{P# z_k){=5eGNudOK^<0(-G>H9Y+D_0q}`d$3NGUXw$0-=5qK>1lsRFP_qyp~ypJdZW~k z5gNWg;gU4AvNk)abITWXC$vCrPkmg9Adh|_Rco$bpx6f30+ZT`(q~pNFlm@QC0k@D zFi)7Pz|f5Lnzyh)Wh?`hUCOYnXc0a4`~ELwWkOsZoGh`Am4BkVK2C)m)B0FBn5;gQ z?*%0FvFZ+&)5l7E87Y0N#)D<_u|j)D=wso}KA*2lzXy^b3Yyd$;IrbIo}N-7ZmvOr zJ4cj&_<7BGcz7tb?4QO^hE15QO_uSBJuK{^qf${d}UTDvQ8Wcm>TyqQp`BkN`1`;ac< zxqEla;VXjFs4}&?%^2)EAX5=Jo?b#ZoCL?Ib}Y8z!q_Y{bz4zgiKwE@vh|cY#EIxB zV#msW)VuO#E5ru^Ug0Z={n^TU>w%kz`Igi97_uL$i6OVIO4`}Y6pULw z;ti#y_lm&8q@tug9#j#pM&sY1$gBA^g7nV6yd&LrH(%W0##VU`#~)3LmViGi$8@)P z=L4?6mYk@09exYfbcN9u8fSewM+d&84&|E>06&gW6T1uBPBY}F{RBo6T8;}^!H^ZA zjZl%r5_0@<)P-IPqAMgYW+q~VM5k*$TKsq&Y>_<6GA;;Y*@d)bH?DJiUtjUx7+xCy zNz2FKfEpx+9N&>86Rsy2o>j7k4v&Oh&2bb(qlo)LIAq&)BnD3dN^Np{Ro zjvG3rs%6wjf>p~w7Zo+CX+Ke!{s^ODBbxo3uvT&mkH9MK@IMDK4@J4<+WA~T6zkc9 z=wMQ5^$1~Htn~;{-m0_1SOt%e$yzZy1=&+sVG_(@cqmnI*Vf69Jug}ZRWwiPbVK6~ z)y6_AGQ{q(=CB&|DLwdgW8-VYr}Dp!Q9;K<6)_kz4R^^GfVr%3VNG&W-V)oG@&MFr zuhZ2;J5Pwy51~PfZjKzV`0@0Pb}1CJv237jfZiXiX!F}(3nk7xvO=vAXx6QE)uOQ5 zBz`1HXv?8eYS1hMWlmB!>f20!AA%BJVu+#R2JB)n)P4CfM-jhah#jT$m4JC#jEEl$ z78Qp5M?3bPOxa-;i&{Yt5yEDb^uQ-ZO5)#^fY4w`dVRBe2ZaduS-2zxGpK*;!ux1o=Vjs2j=ppCY+&z87AvmPod8tNPPhVi@wdTr_EoA4xHNgLL0UdH#x*o;Ewp>@;3W+dQ zta*?h0QoHywc~ud7OFl;0F)Y7qFQa_ONcUoA8lYD=9#<7fFj0hlq8I}dlpzRpmal? zWv9 zL`wCFPoEMt-9EPImuaz3&knnLS^}j{y~#=LZIDLvg0bO!LYEg&xif;Ym~2_>M;pZ8T!bT$rqy4Kuv8~Reojgh0%drz@|(jxbUf>(JcH* zD-Fo3w^?U4Z*cVh*_wJMngO(00y_cp`C_QaZPZ7r^m!Z<8oe+#q*nW4o2)-WO^I77 zCsX;{^S>o3OKp!)Clo6r)~AGBi(+YqycZ=Xzwi-kaVvF6RsQjOwp=Z4#;ZBtY=h^% zzV_-z>yfPEck^o_M(7(gJk!l|Y9tNzstw07o3GyakmPNSYvC=u1?YT+V_TBr;DS4RqFsv`8}AJ4SeESngq>;1>^dZ9jx2T}E^ z4c^05EnbA<%ZnWNx?l8T5q;=;ud=g|9pLu9EQbxdFxz2CqkW#371T!c=Iv_ zv2D?w3ei`jvXe4IQ>rRWJs4H1;^_OUXHrPH64iG2IstVU*N*64+oCf@@4U9u*L z3v0l$=Qw`~^JtA_9Kzu`X=0ODhyL@L1}L7>6@<%bGN`-LWgIT2iIdt>N|QhaEG^wc zfJw>}$G_Weqjgkfx|;<-Ofs+9tml91#%qkuyW-i;H0_F2vbU@&R!A>NSDXO*oGT8l zzmzLZ%!|#qlD6W%FX4*siZjW#VwJ+CTXDPtW<7Co-6lP;&~9>`gor0gd1AFO7=8VX zy>m&w;&gg3*;gX1UtsdpORBvo*4R4riUl;zyn6MO{Kw3BKeBdS*E92zctDc{h9Vr} zQULb(o}>$8Kr&Qu)S72Bn$Aan#F`^L@VFCYf#Kv@=2lyq@98YA0uHJVNEEt(ZQev6cJ zz3^{GkV3LN(|qNP(fVEATul8jj%P`R5t?V=V@K@r<{DBvmSg!a8^2r3XRu-pEzZ?D z58bX}BF>h+H$yhCT!;YL909?SQg&u zW`VIo1b^zy-mcyun3h*Rqo{wuP$SLusu-1j!09iLAK?P4(1lMbs=(>TNQK5&g~so^ z@$ZBS&NBHCP__C<>|=-#^JOxcAUbA(?8phWBPZjlYe2ptdGq&$9_y7pV#gi8ia+1aDXOQJ37IRrRB{9g8JqfP$`I|zI%@u z7L)-e0Y!|}2Bpm9kBC8fi7{4}7-MybGFF#JV|9r&R+l(qb%`@pmuO>ki8fXh2WBLo z%-bdM3()5oEG*C^%06DA?BgZMx?N(e+a-4Jp{(2GU3ozZ!$Iz4VdyVWj{4hTQphDTD?0nM)Sb_n<7e4_>n1 zrJ#DupJA2`q+LZh;XcX<_X{&InvFfklW#|!@*OveeMRXuOg_v;SE$w8)T=UdQ_MUn zLx0ML)QD(^QJW_pyLs}L?=YG#-(gh8uKTEsnSX;*<~^p@K_$v-;wi>KoMIfrDJCE^ zMfrSFq|Y}+`FvBX&o?dXFoqiIAx_aA;&g(r1XGkxHAQwkYFU_~mIeAmriFc<&gZ}1 zTrdCdS7XGn(iAfnrzi_J#ah5A$^uSNMrVqh1t<$R#aX~9$^u@^XFgG$EWvoL_ddc6 zD~9*VH#kp5g~1HqF+n`)-CN9~>pA8SRSB$;o;4vF^JUWSz`+D80Mq&@vsZyyt=6HJ?sg4Lv+C%k)haA_noW4*Q{ zZp8pP8fLnz_3GS(tF4dI(ZI`c*?NacmaFP89a3)MNEs3EWG$DAKISTm+;_tzvbxjF zp-gBU(}td2$b{2(TGN;&hm9EK^GH8TYt0`*WG`c(l=f-tJA`c>n1_y;Z3uWIl~N`T z4?xO{3|bhe)hn9yZFDGI6DJ~t_dxy(<)V?IJ8$Y;fi5OCeEw|aRdEnF6CuAFE#BTB zh5g}AC*#p#a(6Mmft)BejQ4LoU4V%n(qvbEFvIyz%Ljl37Sp7vgby6hHP9S$49{9~u-zZ|t>#jT_>@s1CXF6Igs|PXwS+*i(Iv=h_`43d)t0I}1{dq4KBY4eOb9(Xd!GhuS+cux8{ z3%LgFkHAslBX=2Fyt|w)t_l?6HdipNMn?s=@W!5hYpjj&xN7q|Y7FdzTF7i?3WOkL zwg8kM!Luy9<@{z*^rGn)r8nNuHk1Tb>IX0UcoTkuE~6a8Ws>fKZBtmw90;?U;TaG6 zkk(c=m(7)IvVbXmQM(9sC{2G}B!_t82+JJiHrO7(+lC`&9DZ#^So2%rUO;@oh5_gC z5TUIxIi%=jFb*lS9=?OhWX3uxcM!q+^x(t~D}V5o5B7<_&?&E-@atr^OXBSHX!9jn zhoeof&-D*a3Yk!u9TJ3k|Dx-dEB2L5*fW-orMz_Ece-)Q=Q{ z(&sbEqL$3GnMRqZmKkxD{K95O!8ZCc+?Y-t)GG-Jh#_7*P>2Ut>{ntS3gIhp&aNW9 zLfaln<13^&u92^jWK%3(g?swy=L+o{EP|(&Z@dV*t*Ne%ar%1SD&<~c32jw-o~PdHY&PM+sj*fdevhJqul#?cz`p zPqOptszENm6uS=KEd(`A6x-wMDrIaSDm^S92KPB7Dwz3YGBB)XCdD!E&7@do>zzq7 z?$JM!NOa;g$*|AIZ<1&@sLRuz4pv6GAGb#$=X@L=nSyRy9|^jV^Yb>0!<1kkqw8%x zqkO0?$XTRBnX6SJRF~|!O2BU5>WJt~NW3fOuwDK5nosc?6$0#TF$`zVl!eu zWwfQ-kXIrU%z&D7a_*a}i(y83S&(iJNq~!yQf5#^a49#a;J1R?ZD~D)Ae$}%RT7tS z!zznQ*+G@YrQ88B?Y|4a6}xj&&`u#N4W66Y59a%h5+?~Zz;aKvqL#%kprxfOWZfs< z`WLbevK%O-e^v7JQ*+aF*nClI-Jins=P|r5Ektb&`yZ{Q3juilgFS?`7PkEMjj(J( z7;j3q%nId!JCy=WMC|E_?U*ZTiB>ny0Y!6EKo`lk5L2AbP3bI^M)X(^Yy?lx_kP7j zs#0ce{st^p_{m|6gA{2Zsj%gDb5zbuC2g4pd9*&?kCLns_bFB#G10?#w+D8D^TSJl zHa=Bn2uZUfo*lM5q_K%)4JGK~P~8{BYrEsFS5chhLA(y<5B+;I5ltCjYCbx0NL!&3 zYYnTUhVw~ikm!l?B~X2cIP{h(SN!`SSVNcpp+7Qm;TcxB+bGQs0l-)dtlhTQd>0NP zDi=uxLX#n^9O?=va|B{#M+pop4X0ehEk#i$&HgjgFnwEoB5U;&*?y_YF*U#W)xq2a z>1ROU>vE;Gl+wF9unS0lt@n>v{FbB{peuYxfoP2n3!J#htm@x`DJ1!o!!(Gn>WW9- z<1DScbx)UOBvOVX>mW3;6Smtw z4kQP9E?^~RQ`tyFP(_3ieHldAQ(Vax>4D7Il0e`Ro@5{nG_gl;(G=^JJXB*D5#AG^ zJcjv09r@|^GP78C)VZwd!%G7Ci#SmJ>nIkb{B<8>|bdupzr~J7mkYL$++Ni9A>r4%U5xbzPjqaW8p; zVrhekLZ=RjK>AA_6iOqhQJZs1&Xa0NdFu?g!Ckgehio6NqcV}~WolrzAFEV2o#X66 z0T*5H<(N=-qCT+Hz^)Vi{|u08?7*sS*E`!i^S0WRAksiYC^SUu`nX3Zh?F7AsuMe4 zxheN0$OM}8lXNE%RHm_ogxT`r*HFleI1$oekSO7flr|#){Gd+2vnXpOz>mX0f~sr- zdY6UEbrT?fFHTrV!6x;IA#4#2Cycoj!cXWrq~UIe&x}pR5tvX^?SW9k>m! zc4mkBK^lZiQxZVX0FOX$zqFiskv~~gNs(f}c(Hvi9tIkIgBLKC>0nmDSc--%VJrtS zs9`JzJKG}0GL?I*Vk{Hc(?b(daW1MROTo{lY_d$nLF*>>sD#~?y`Rd-GC}84I$5fr zo7%}Tc%$OU0}%#17QHn-{XW8D^SlSjMDW?jf#5XDR?hmNh`{!eC?kJYW}?t~_3hDytCr9LOi)KKVCyc$1J{8-SRDJI*lJ}M z=jrp3#GJlo#8}PjmV}2W-puJ^s(|`c&@OSM9DP|=u&?R2NI~Y=QrMx~43u3sDc2y}qs8Cw>+tlrlAb)f6 zEz@upKnf_j=#4BapX@#s4KNQn%LMdT`#~u3u-^oEIBUN1->gm|gd%!=T3s&F>{v>U z$Nk0hpdYs7gi*O~)hLdWJSeLVfX3f-kUv2q+fXvW;`mYPh8{Jqmq`1r!9VCN$1;kV zmuo(b+Q@6FS)0Iu%Y!2TIKa>WOI%~MB2RxU{Oi?xu{7OiR7jgJTU$ILR-uIdIZ!(+ zFo|IIse&p?v@?%){Ox}FQ1yRx>EXtY^2 zJSH7zjgluNpVg;W5Kny%j|kNC&AI_M?G5WX4GZtK{ISq=89l~9F$}^gvZ3EZWi`j^ zhPT;)TkxVAA{ikLJ_ms&*1Jb|nxa-tWy2g5H+pa>T;)P|G2OVd`OwK=a_Y4N5DE1{}f>GZ&Fx}neoNgy zh+PFh;g_OsTA_hY4jSrbh{s&mv% zwJsgZMs54kOdPpgTLxU$IJwo5CO(7iIm=d|k$TbVGw`lZs;ZlB*i{BOOb+KtbzLY9 zQ~GPu6%lbvpwOd^;yE02L(Wy&hWR14>`NzIN%ml7=VK?DR_xkh#SC|lxM?(m>mgM0 zytN!~{o&-Ei?#16_2On0=l|GoJIqZRVkAp+e|f5(qzsRX0Ti%vRDrxx3T@cQ`V1P<(Cs*o~0$y+y z9k^Zpjd^sc&Ka~&LC=cVulM~FEKmu%4u~BueryfQa~U72^m!cQ>!+7)^y_w9Y?C#( zq@Y`>e&)@~-l93Jiy=)XvIc<1SroZNLu{p_ioZ0yogP+o&?eB012)1gCEzRY#f+<*L!hG7LJj`n}7u87P-Yx+^bX zHEvU{{dqhq>iyIC1feW6e+C`hXmdU@sQKb&Ga6Be>;0>^h>*;hy|74dcfg@SrFy;mhHa^^L*n zj#!6kFC^L@*zCTv!i*YwqCP@aAQlZ3odSXbm_-->4mPBW3P(&oZsn+CqrV3{L#L`d zWGx<6)1)UAiV<8VVhH0a=1OUYsa&b%F9vR(TqSeP;~Hz!)isLue&x+3%Qs^S41cy< zjb>wSerW}>yt(!kRtUj9((e)!{6pp>>C`|aBk90~%0dF^VV=XHg9kc2TA1Myj&!Ox z%QVsna*<-Bmyr*VTLf0)3?{^Y*+e>3hDsyS=`mFPkWLS5;t&q6*Nh>EDt4(t0ttVR z13eRmres7^@swi(RsSyYVEx(16{vvj4-Z{G@8aQN6qMQ449Lh;uI#!cDJvvrS zPYxX~;#B^eP>a*ggwuL+tR^RP=2$gO=*zKcIB@0Ua6@}?ZB6VPIU3L%-Di0ktZ7vR z63;ba!UUwm0GGZuo!t4e2|y;OWC*c-@UuZhuP@Lw`<04 zH&@qI0MpThH#KIS*l9oYXT~F7I-mc3bG`h-Uya{cDRJek-p%cX^3~0B<&S3GAEU)$ z^uY>hHM*F34q8PX1GECT9WAW*p+_Uwmk?FbjyKJ-p#-nDNgQ&CYwhROX(F4p$_MgI zQm8UiI7oII%vJ?dbB#21(p#t@Bkrg{`>o2Us1G2hJHz7n&U&xyBMz7(jL`XZpIuT)zjRW5?HdmzAc;&vQyciqd(CNPFq zELteZv5>zTtm*=SOR$N>@_7Vo0=o{Nl0&)+rT_6&C_V>U< zN)Pd>j7aX1nqXJAqeT+Vy;dvLxhZfDcJ(<9^-W!8JHsP`#;^L_Ra z1i8;XGFs15$2(d9rW0TKh-+;T+-%T}P&7*VraR2BFwVa~KmC8ojYM0E9yby#QJ9TH zi}hu=VR=Nj$&+Aa^SHr2frr`1 zM*D;f=a#&(V`#z}kc{3Ru>{FU17Pa=QM^WNbyx;wrU1t#$KC5J;3N${pg8f^F~u<# z{{~bb>hgUFz-&!$20jWn7F1a^^UzL9XrHdPKor>jZt>ECBAZxr3(v;MY(dep1v}NU zm>4J&F?L~Y`1-XMjg-yCICri$Q8f!%#5ySUZ*O1;n}(LI5w#5qlY{=M>m<&D$Rc4; zd+U#v_YkF7uSsT&q{8fzee*z~E@``ZO-5wJO@qOt(Tv6UgYf`?n(anh7N!6*-uO2p1q1Cb#mG4Fhj-+@~O`E}-DNNFfq)Bg7Uhu5ZN{Md>uSrxc;m!l2L;ExC4CI@ zmyo3lI57rxz7dC`#vVg;8C^ZC(Sq-FJRZdiKNyd)AFEIj-~gfQL_9ufq#rq9!`w)z zV+0L8<~BITg`pR@D>xT}1?zWAZce!*bJA(p*T}QzHj_X@=!%_Eq(B(uN^97SsGDJcEL~3eRxb+sAS@ zQ9mYQ-A2|uuu=-B?Y$H|XVi+~VjVuL>#qwsw8i8l zaiUz^=of)Xf+P+lG_T#T=%1XyJE=;*0B_k2v4`6Q-)I*bnAU<7_&{Bo)80FxF#F?U zZMNND9b;gya`stod)0cFU4753UT0QM^Xio4KICfDPK*9%+m+}ZOO3Q;jj6X_$c!me z(&lZdTn!UDU<8v1;l36~TTFd*ACY_7fhgH6xX->6OjqgLy3<;TZ)cL<+19g8k^+1f zRN7HnPL-e1uZ&H%r|o*@cyiu*|F8>iUngy)hA=AAfiLkSoE~SF8bZkgc6~5I(hikF zX8_>X#%j1-1>Z6Y>voJK4!vwTkc^AFGolOcD;mwhuk@m&%%+=msq*byYtYt2JlT9$ z5v#yX2YosZYO)*l)2iC1y*Ni@#cnX6#>Fj_qlx_@N(PFQmf9l2jwsenOW!lxpiZg? z<99!x8E_d1M@|D{RtS?_)W$aybw!g=8z!i;M!=8Dgsh6(D{w!Gf%`qK5z9Qmd9qj$ zt8)_xWV8cEPQ?h=6Y6Gl2ahq1!@ImT~XjOK%Uhm;@omy!2K@ZLnJh}Q@Z*| z=o0DJ>lYOX9Ns{PwCF9HOC$_C>qQtg$yXx0T>#Da6mmzX7-|Rfs={^t=Mq4$DTmjig2R05$#9)*1C-A*r{Bt{TYCVI`fw!C}SQ z?0YyMwAaEi8|0o=Q4#QHVd(MIcUb0LhXyNX_>sX%$9_+i*Y0y73d#q?-=4E5dp#om z_%no69qe%7+{K37CxrWyY$T!Iw<|g*{~MxKEQ} zWRhVD+q5<~N7i54&VX@OK9Kfgz#8OkdV!R~E~P@tY&w%$p8Thopct(w>QfDAmWb5_ zB-6^t$Tl4kQDIYhNpcm5YODcFpwNyO3g3n4BYqN=L$H4yX0m^R9=4vcjf}p=+Cn29 z0?zR3IEnK#*8oG{Z;p)Wx1{ZcHB8Vb*oz3Fsp2DT+T&c_r~CpX;I4yaN0 zG#2-rZ^jZtXPmk839J9uZ$OVAme2G0~(pg6RSQD11kFC(H?H;+|3wqu zsKqa9;ySWyt*F$gKG-?5#!W-Quh#82-B%c1c~^Q<9KFsY+JDmi?NLuBDi;5HNaL62 zWZJsdCuzCGnq%8u%J(Ao6EDvnIZa=i53ZNu1RYL0f=@P{PSNgRzcOVs<$Lvi>#a@v zrUC&**vhrqT+U>Eb20VqZb#D_4|%9&H=;`Mm(%%Zbu#Jx>~ylH^V!>z314`Z-ol%W zPxs*$-s)yC8%-t)Z@D~~7B@40=CAzG)c@#BPNqfpp93iYWPaC51o{}}OUz5C5{xQC z31o(hVUM zYF4{5hYpI_fkOlHzte{E@2>NA)|>wMFFI#9Wt&g*b&FNX+lIR^&Vli*Gy76eM(?Cr zD{r*q9hF!f?#cQye>llujg|7}5Wsgd7|x+7_O1Bu3gn))*#k#$o5ubxggcN)_+R|C z2MhJz6udoYqX+xGGtYBnhX;lY zCUxFPk;C#P&LAVHk(uG6QVqaWRixW264$^~pL)=?TkBolOfr}h{pakLDsC~g*IT?s zSzabrWw_ac+$LG8`st&Y$bGU0M2%ey*Zm=TGE2BKGe@PLUvAikYGZaZfx|Vl5W1jk z9kO>F2HddFC*KwrSh32u(I0y#bbYLQ~wu`az1+g(vg{EwA*h(vm^zc*EmZ-0t2cK zrtQ{>h_~nHDhv`8|C=b~& z!3%A(OQU?&(qGtdezyV4=W^t%*nia%r5SX!$mnx__uKF?O?EELhqY?WB!+%9cLHsZ zUR3r*OZ#mSZ1_jE>C~ChU)v4(zx?fE7wtW3FS*sgGres&sFn^C%&H~6oMT+-IXm~z z{@5Ot%dlmj*`UtrI>qm!JyM6v#{G$nbQxCHEg(=`ukj=tx zIX)S_L5Om)Ax%($ z8lN6?*v&WCQY7?gL>KBLhYF<{CTkx=BQ^Y$e=eRP5YnKKz3f90d7ZflMF z;umiL{(`%KP8-kRFwW&SJBRi-YRT|Nj7~qq%QztwD&FJf({UG{+cvqQ<4MkS9j!dp zj`v^uP`le;%J@RJ8ZXjCIZcQE<#GwS9eaw5f-@OYf9+(7V@DY?+Qw#DAgu_NBTOTI z%R;ofDl9CjaTyjC#JoNVi&DSTVjXTQ;b_zpt4{OIfGMAOfU*k#8e_*-BVl9mx5I94 zJ|2%sR?jVCUxQ!}*1?uOHDsBO!T=`wXY{QOGQ#C(DmEddK7 zk2M;PNg=cGbhKRRt)h_k()XqlLtcM2^A=d%V80LJ&8Rdq5MMyVK2G9dj>Nfe;dF;6 z8*WyT=q(=-S|H8;_GJ-xn(5w+s>)+>O?NOualv21?=;M$*G6^4o!!`#v zwWky6q^G@jgZGb043ab~`cMOOnVo2xj>`){_n-n94XK&EpxJgOpAqh~u;}zsiD7%* zd|ps?;sLSU2D(pl9pq0!r(&4Td;*_d9W-h5Xb8|`Atu|feVqch*K9$ZkW3hf1S`Z3w5gwpI{3u>m zBM2R6d8~hqJ@(o`g|*?HN+G>o!Q~QHrVMf$0aM zG8^n%GtB0=wvbk-ACyesNc3+rrb+VouwQM1d zC@S0gLUSseEk;hM^2s+Z4%M*ljKQ`qr9AWfi-S|6Q^`f2RxyHK*w*P}O54nY!#0mb zv+yeocgws;Gs`|N=8N5q$4KmTK=y;V?0nh^vh`t4FvuLMVli~ebUfg(o=LB-h_A=` zIzG@*?$g&c{WWRPb36s|uXdvUZ0_Bk-8P|OO>7(Q~+RHFn^L8TwLP^V8Kcujtd@s?FMGa4K= z9u5-du+UDM*Q){`8BLZD?z4$hf}Cgabcc<-j>b6~Jt*T~01tJNOvRTO5Lk1?a=|aq zP%a~DA(V#_H>@=C#!>6l1EPNkdkl-)Ehf%yCn+nVZ%D&tBoMr^SKF#V$ z4$?#Acu5Urx?qSD8k>VIpOQ3}I^>4={as1)`hwZjg)W%w9fmGqLgJ#v-)2w3Dx-qs z`Oh$2gc(id23-*>EtbLc@>*KuU`9z9+xa6UB^u59Au9ujrX5jUjx^=|LW+?-1D&}= zNDGoOV}Pww`q6E-m}ur+g^XG9lAA`-n9?LrKmtxE;E z=7w@rJH?a8@8Ot9B5BxYy^T#Nv#+tC8kP$ls^O*~rh|pzhLL6# zK;|Hj?lZ@G@-;`GP2X!ySEOD4zpxouWfWnjB**sZ|JGYvF$ocdysQL1uajRzTKg#{ zI-XQMPW;gFoHcj#;o5ui3E|80>{TrwWBxLZYhS2C20aP0wJ=ig5feK>0HZ?s0$h(& z89`huRN&N}r6m%*LDLjNb^LuaQCRbndNYCU#Z`Q=xKQ z7kCntbYk9bVp0>544O?j&xaT|H*wZq|0KJ8TDTHnS^CPtr5L`Ll0b>DTE-E(#125U zew#yl+XwN+zC$0w@(NuQGC)$u zbetTDh0wUSx9xU2Z?)|SSQ{;?E?FBlIcv2c$5A-K_3W1B*>; z50`*tQk>k&)q-1Ji*-DY&g2rSRK3CPhPv+G7kgDy+M<_v=tcCr<+`ObS6ccllxj~kgR5X-GG?%xLku% zDR42rnL*$55F^kRMedgV+u3M!v+x{X(PRW081L$O^}!CovQsYSi>uMp3gXIJy_-)Q zb?o(MF}kusSa^jJGb@Ote|0_e>_6}F<{JE#j2MBa;HYQUL3|P3CK2j{rh}5vi(EE( zWO}=;upt(L^I|!-()@TWn|KC*P;@`-plVzMSy*Z@wlb?_yqTmAUnGZkbJ|8V7i4X7 z7sT+^D|iL-Z5{53lX?140KDO9-{#}BgZ@4bO$2%f)+g@MMvXI=5Y1OT{ZL!b2dq!8 z$MUcb({*`;vmyzv9KaV#)b<xmU`1R@hpK3JtqBhr5S&y7x4-euQ4XGiQ^ogau_G?1w81~)%V16r}u}Hy3&m2 z&S0r+U8yf>#`ctf$H_2AyW{x>D~iw(i%Ie8u)dff;G^^STI}bUyvHfoSH>PEq>nT` zUVwFO9uL=BLLM*XrDoyDTk&#J?<{S_xun{0N+I*>c;1)rJdQx)6T5=_ze*zzXY33P zmpSQLEHqtGAooSNp>ESUIq3ONMWHyUPBKWvh$nbWg;S)5Dpwr-nWUleI=z5*NrVc& zyj)Yh84hwZIY4}3COL$N9;n-grGJ&ve~W^x+;I!#Lln-bL;w%p8tUd04J!tH{C4Cl zGwCK?@!!R0<$Vu(t^f5ga=cA3Xo+OTEtM!)P-K^{XXeZ*VZGODWXVH(E7=fQuybs7eF*!&DV zA#506YyVN+@byNHvS}%Y87=Q&QqF+^%7goE76BH;wjBBqsZi%fdwmL&pPZoBgM1+c z)T-DY)*7BH%b=rz!#sl)_8DXv45E>-nQ>B1#Hk8>reL@d>Z+}nNLU+W!0ZpVqAfeG z$5>@c)J2kP!=RWG_!YF|r{&}>%$Td!vkaL}lcCd_7Is6X_go>7Jd3IQBJzdWI%6`1 zTD+6wKu;7WX6yr`9JM6AfTW|d(AaL;o+wqSH!WQB#&AXqowg<7AL6J^B=?0G&&zER z6u#%BVT=1o{c1@uNd9Ug43_@Y5sXOy6EMG^q2!ZG62?u%CXjUi&NGFqrDk7AWGylM zhBX}}lC=SQOC@Uyda21|s&@Q0rIU5~f!s#>&9oEGBO9%y7BU~L&HWNG(#}L@JJs}A1uMICD%!cpA7Q^Nq+sRVrQDF zH$IkTz1l;@Vp{@bwy37i!aI{3$hKB5APZ8W^2^JEY&WDT%%ksY3jqUvSUa2GA~&=J zX^r~d;$BA)uDXv@HIG4qWmVphgRg{o#}nSMPB6%dBNt-ifkAzsSYH$t@y z;ZB#aCsyS|&rr#<=`-LV7KyfCU5LR?<}caj?rk(5@H|hfzzL$22Bpd+$`2Rq5X)TTgrfo9)0Urma1rip73eS6DblgR5Ol}#qgKBrBF++T8=OyY~pa)UJJ z<)*tiHbiHWzb4TSo5&`E87@nwKMla?Ix-d9roc#~xXDS;fuHK(Qki1sk}V-q@1;Ck zs%yXtOrnsr=w*g2940f(pXJo)VfpT(0v;XjmB0-AET=*hx6g7a z1UY+_Qz;`K>{(8T8fP#ehJKb)p~|4oaw_x~^jS`Y9!Ae{g7Nx)mQ$k&_F2wvyY1^N z_;x(u%OEtwPxRwW_)REAun$2(*nm#M_%VMfJ}sPsgqCOJaU96w6~p}79-^G4_6WlK zGS`q!h1@KByN2JAdX!EeoVH7fX(?r#6u*u0@|;f)ED_VaT0a#l)4HH5tnjC?I6@;~ zB^88|wZd-7`MhmdvbhW0%Y|L1;Y0N8D%kH4_vs{Xg_%uKVov{fii!`qr%n#C-}Y%j zsy-Kz{W#0h!y0i<11=>C^ZM%$b4K=Jf+%avT#=vze2(_}aO1^!l#B0iAh5{B&S)@E zPRrpW@0R1#MYl#f>Tn%4SxvN4`$+TZm`k+Y_A$#CQHQwL>u2>qun~w;p_I1>vt;{4 z)hj&RtF-)weAt3gv1@QY-XE&`Wrc0_(lkl6pO2+_6_OuRGj=(8e@*(m*~F?li^YBj z@?h)rDBx?5#?`2IgU)m_h)DS?g^IqpB2)e`Ps3mb)vOD$2!oB}U_j3god+z!{c|3c zO1}}d1cuW11Z}9QJus9oUMCwe3NT&_3s5*q7svM0p=YBO6;R_=qZm9?vq-ePZW$~b zE0SobzoGWM2dWl1&x@rul(~GSTR&*qjBA(8Eq4N*1P3u)QsI z)x}RY{^ZSXK*l^N1>uFyl6(=algBvvv+%`1<6F!E9qbxz^q7_4A-l3bSswQLB+U`M z(B(jMf`Zwk4+Ld6iuJk6iSh`9 z>`>o8$ZY5(2(irlg%%e1mauV)ofF$*U!i)+$cOL3SXmk~*R%^`xCXwznwI+m07*Hj z*`S^93{o85gXln0zM2@B68uO81?D4KN^qVOEPx5-sNoqxDEMVa4=RPLqaf!6>{3|``xI^qr0jKdJ6Ib{7Sn_LS_v!Ws89j{J~EW^_jq(D7ix8cD1&ty zfR{+=Bi1hwWpp+w!Rq_`N+PzWqgjcxQyfJ}RB?Y=EE8mNYAnNqpB}3aPJN23(#`Q{ zvP9IWj&ddHI5|e7IdX*jBFLik``xx$lA|yy{`Dp5Y#0Cx(p40~yG?@T0HCU7Qqvp@ z3#yJzAVRWYdWKpl^Fw|VWAYIjRgUN?|3pi!?^r44XgZz$;Z5$w^Q$Xww$koF;fUVU zBZx~EkgL_=?sxBl1E@+XhwZHqi~nD^)NnDMJ5lfb%3I7v)4RgKzPt4nOMgCd0DHZd zUoY>94US8!yNNfRIt3)@koI`@hX>#dDLs~MJD^8!@67{b+PlJfA+DTmy`<0Kvx8yb zZb_1g=);18Cx&wF9E_VR_&QE@bOL`w^PbA(hNyNP z&eN+e!8Rh!c>0X*U$@S4O)7Kfn!oEkxFhLfm^Z;PWth34l8w+KW|Waj7c}@VD!PE2 z;>)^@Wx6FjT^J~O>HuMQ@5k%yVS^CD1(=KRa~W+z#RwMfi2z@yBZxKJy~~45PY1#v zHr1U1#Rx2WP;#!WAk@zY1rNfCpiqR_HkQz4K!p*Qg&CXg080i^Va62jjU|fiFtp2C zmehw)y_$HJqnjz&ZjI*?fA$u>9?Ou7Hb!l*^)|@__v@wf58FfbgrNUQ{=-!owOBcY z;NwZ*ew$4l4u;v^xWrQKm4w`6b84-Ex7+8>3V#cUraH*cvNmeqIG5@;FN)c=1GI2X z1ekoUXt&=||2NYT=$9sj7IVWF%WsD`J8ZYJrBhtlonaX{=EAT91AJRp!VkSFtYlZG zQ@Fr$CjodvSi%jy9<1hf*BqA@gGC~utgJy5l4nY!`xOa;K34~iV2Ziihime{9=sh4 zhXbLmTCyYm@i*Vzi~+QM9`3R?f_Gv7yp=Hnh{=wYuTzbPr>EO2Edg+W;c4aGk%0IU zM9)|2C(_SKTV4|u?S~N-8__qPlzm!K#^JZT^{jz_O!*y4p#9-K(&tu+IJ0!Exx^>r zdd>{x6+edY+LV=Kiz)l{I*4SOtmf~)kw-}(-;xrB|B2}uT?{(q{H}=iY4`vnE;?E{ z=qS-P%G4u?P$~PkgdxrfAh}k+N}F%Or<(&X&B^16`fe(_-K2Td=QUydLRW7rqavcp zP`vuT^%gjqVIf$S_~PdBa_N8c?yg6RrMJ-aFVC~^MiU^9H(%;zbxC)7H=c}EFw9$e z{0*fg`)DAkHwB{>q#lBH38tNaJ7IP+okD4^eJJJ1dk@y&kLC3kL`x%8M)Ty=Y+h{g zbXJ;DUcb8=U9P;v-DD2as$jVAF6Rpm!%>hzhe<kGqIJ50D0>OF%vX4P7cqLr~W;CYngZ(}v#R)ZT zY=<03zfShgqQcu^>W6KhjOBKT@4gD^H;d^%uffot!{@I_O73YvM#g=)YIlG z8$RMWW#uxKqLMW{7KM$o)-rNIL0TDQVVztVrxI-ommO}Q-;)q4qwFo>I6)9+hkGD# zh%=C6+bR9f?Ib3HIo#CrG_dtyJ^zikAEI~z7&f2U1xL*$&10BTa}6;mFko3VhmN-+&r4%5+Bpnmx5>ZlZV5=q`>tkR?Qf(CMND7Ia zl(ds=zH#$$Cdt||q*fz&%N+KJ%Zxb(x_fcXCL>-2dl=i79QH+uwma$@KbtMf{3g)c z^Rwk>o5V=!WhhS`T@KzN7Vb(fsmQF1ebGrndAa-l*W9&qxos=y{rnCu#*1mki8Ck1 znT=Xv+e*}uBB~wRS?JIb-L0`&)DHUtsq{_OH5kk*44F=z4Uc z?{tz~%S*ZYEOths#)VQUr?lqEgtu%)jEu|xQ#L-V(H*Wl>Ck4&byu?fvBD-h)0$Ip;MO>oQX59QTT$mRM{5(B(#ViGCx^@`n_e>dCOQ~m-ba2_QrTf0i7m7f~Rm1lk8Hez_hA(la5+29I!xtCOgih*= zY~rQ~4RPXTi;i{Tp(O=9@pAa1pSUR|a=2sVF2Zz2vQUGm1hMp1)P06m={==>)9$~W zvKN&R`n!?7j~z-?T0VY+^VAwpBurT^2jRoZv2%*Cs$sCX+?Dy&C_kJYUZ&CbZK(~< zq3T{sB>dRfFc^Bq)k(_ua%)5QVp@2cZk!_8;Pn_pfd>#g#B*6Brup;og~AV2h+^^B zkX;;AYx7x1T@+=Ljd1OzAvry4%O^jDwku!JIRg&rLcw-HTxa)|LY1OiCyHefLX}7X z+Gi@OuIdYD>#I7jVYZja@sp#z#y|{)XoypnPn9@p-}0|sDkZK|_Fm_~R#p^0r5EV( z5h{p}fUwTcDU_wjo)y|OKYb~VpXT}Taa)#kG*|GAKNM>yERd*#!;o^}v{--2PdB^b z3-HL?@G{=M9>03MnlHw)#d!Iyns^M6>1=U3n0SQlrfIT-Uwz2-n=jjqh@%H(S{3+1 z&MvyZ?`{ytxn@1*l-IKrf$wnK7Do}y{VDhr?fY>!C&`f~|q@kuIPf~*xT3{}0t z-&{R;Gnm{ZDR-@kAhv_kAYy2L7&~!;2@f*!ZZ%~8ER#{(*I$jN+_?K{k)&xP!*s^) zTA5ChVSFw)M|wA(&lX)cR`Xv)A`&YiEX_V5_QhyM z-VaGF|B$UeW%v1iZTBCG|KR)4Uw&CX+Z2z&wbyze;##B1I3zv$vd@pLZD^v(G@3L7 zOxF+jW5!SJk6G4CX#E_)wqXsKP6SC*VJS&pu`S04QRxbp`9_l$J4$ITuHMsM)TTym z7scOP$%p|C<0%f^m3l9P`62TQ{E( zh%W073&ov3ltQd2K3~Det3$MBquK4S*niyKpO2Z<0L+(MrBB8Blyx*kjrJVqd+#Q_ z_b@`924q5U;>YZw3?aEE+tNo?hJWuHlTn<%1Rq|d$(w}hdaGoym@QtW9;qAFRVPH* zzXyvc4|9*mRThl;0sup%zHt)8-sWY=MrVI_R6&b;$8^Pw-H(xaHG#;L1wM3|f6gn7 z6E6(uiADXI`no;GyQ>HBZ+$HlBnkA5_Pz`3MWflJ-T^~{@m9ZF@beualpt$FK+|ZX zUyqZ;U@?6CZna4MV%qA`2N+LB$y*ZjczTy6D}FWK`1)>15NG=Gc(fV}hfJHKN)KNT z7K0&=Nk;_S&PL;#@o=zYY919+9fEKRPY1V&IP&2YWZLS@>~1=u2sUc1UwFkQ_*HYe zqE}oi2_h_gH(d_i`lOcc<_V8%cRN@PU;Bhb5tFLp@5PL@>d|a?C(mTLrG-h#@g7+J z8?xL|DD*>c%GBRh>*K%;FO9N-@&W4ir{F7VjB@6olg}xhHBTPg&WushzLCO1R)(cu z4Zb=d*ADy=4h<8Q-=6YEVcT$udOlVj+NH<{#o2rX>sj411SZD6IwC<(Iji&%~qBJ3db!;{ZJvNkI(-b|JGK= z#ow^ekQFyu{2(62IMCVb6}hIld%mn1O2CI#*`_$0WU1PP>MiG*MGk|`!$dk47o~BL zuR{srSJ&qL?5fgk+UgQXKcf_MlGQ(Nj@dnAOEKR&$y|ps{1zIREUs=y2~@6oAM<0r zUlSUX0dSJfkHwlTvKYyD&ldV;v=R6c1&N$VFY~W;Z}V_-NrZ||1;zSQEvtxXgANvd zhnVOfytuZ8I{ZlBqqG44>tf9~fKybNyZ$zYuRsa=l1iYw{;>=?C>F9f2w`BF!{HSySRiHFg>w#e>4kXFA27~0PG&-%{zM&w&Dt_+( z7**vFZR(1gsd~NxU-F?3ebI!j+1j>C-cyBsDdHfy7{=9BeR}>N6+~hqtMRnm6bn_| zJKiDV?(i@!q&p-GFy=zfIFUz3Bynpz^uaZPn>16~x+ccemoBUD_cnvMIQyKy)FW{b z+kFbW`Cw|*K4hi4`MvkT$Rz<&9rMTHvuB<3hJqyLgT`jhL88%7+hOVH*W`Sa5gj{@ zyvHwYdUhAK@y1z#<{SzmsYOO)L(0fPi=`LvC_=Stf%SAp?BWfMKF76~fZ46V1Szr_ zjI5j*Yg+9cFBZ!HRX+@|Jz1E@A+F)U%~z_3<$BJ_nPx2l-ovliY+-*YIZ9&;js73F5S&y@QNns6`0S`vB=bLHeC+J(`2-|eiwvDY0{%{+8#+H zA#P@T|I|K)fryW9=hCBI?t7;5WXQK-Y2f)H873oNT4E0tE7CfW1p0ouOAzNJfAjv*zPv5{e?Rw>?>8nYh{su z;*q;H)hpC_QEn^yt(^fN&+3{iU@2W=ud^~I**$B3C>{R8P7GWh)wo`_bQ{v`u{>4v zMJjAQJ!at$w*wah(IiLHDE=?;cxeq0hh!Ba zA>sHz4V7+ew5`wvQ^#8+W{=5#-WKOFxODlxMdJrcP3^9fM=xVeDGCmCjb2*T;aWuN zi-3qcs(PJ&ERL{EHg1UHm&c0$Uri&Y=;acb{OioR61G1JLQ;oS89|&6-1;4GCA>wl zD~eC&gWik7jc^K8-C!e08aupYe;2Q%cG_*`stzZkB$2eGHk^2^8#TsJUNAuGsAQC@ zr`jD=``#Mbgt;ShYTDFX{)MQ?%xlrlB*%r7?y;5)kl?N!uQ<;QF+*H zPm*Em1yq)6@Zr@cS&ZLQr!U_wld1528hd3Y<8(<7TO|A_ve4-X(sxsbTy=DtrYb?G zx?ZSIK2ILEpYzSlu>cJa_LH$u>Bbo2dUwTFHLJmBHn-QDpy+Tio6;mlY_&%uW$RLL z*q9>AR(^w9uc$m64<2Io4A9uDrT66zMR8(dKz6WC7%cL8Htrt3g~}T)mBIu14a;6} zj7XfdZ*es{>oL=0HA$wgmamN_9>Ovo4F4RwN}$Lbp_Dg+$>f^Rv6eJQ!CQMm8QEff zo-CH{`ryho8+p{!cBz04q{h??Uk>lGvYZr67~&?|%8T&4*Z1jsy&Ql4Cw*fR?(Nhs zF#|k+KCkgXnTlWzTH0!{qN=(XbUPvwX@2~?T?1ONngQQTLrqI)Zqz$^ViVeye=L&c z&n>-$g5Bp|xFVMA*Om!@01wZrYyfo(b#;6WrF!x_9MMh>pEe8SSl*BUf@jAH_g zxems2=@!6}`kd{aY_*rYw1=O=5o$b;aPaX=aB`$j{SuCFhhPb(>+f4c^@>|KyAN$o zUW6l{lJU$f;RW`hzXE$93T&-t8$Ib76*HwO^3VK~R%0wqKAY$6Ac6XT{b$VXGXWTc zG?+M=s7!3YgMcqyB}-$`q6uB!U0+W`c=XqU)ZA#&B!`3f@@_#A<$E>f4(2xc_9L3MdN^XtonrwM04qP?M?(0+UxG?PU4N3&~e#7{?X|<=!U3%X% z`@y!$EDQ&HXH`M2yyttvpaBWgzVTH>pnci#O|m6JWZM6h0ky zFXgiVk3N&FPjA?--^cvF_w2vaS13r6JWKTgZ4)`o9DVa&$4Lp={=9)C9~@9{rBZ#g7TDsH z`U9)ai8d4c)TN2pX-K)_JkH0+AQT% zi#@*@$kXG40eljJ?fINvAUH@@!`I`RVT-36*U*dWsQm8&bgi_UdLl;c*pt zJjS_cF-N7xQ}+MG9UZVp{z!&o>GaR>+$)={x$cP`I`+ZELBQ;^EYgSKi?tNAxnciERVI*7MMOWfHP3EK-LL)rXZ;MJQ(rf~m@#KWqRtB|L-Cky|9&E!748=@qD~ z5R1y1IRWIwyWb%uGzm#9E^eOj`9lPYJdz-y{jhvTJ`1e((we5J}&Iook zPlpn`S{J)rb|`^>M247fFT5_!`%QNIHZQg!-zlEtQ^(iKF#O8rJ5t`{r)>S;mSJiR zUpMqnp5n-)ED`&r16%U(vDgpx>%2S_$DxcAU=OCY8f6kC`%O1A5|q=F6!%efNJ-!+ zX-StcRP%9EWyzYxx+Ah}2cZnSEFqL>;RaxXkM{gUOc8gj^I%1N#N<~1V{Za!nH5GaB?46UQQ3$F&`m;{Uj zOxxw@+b%C3@?1ITl=5dZDcRfEAE|h04ize{6|>J$t8z>u`{d3+BO!N`b9>htP8Uz} zHs5SB%UceVsNDAX?=u|d;|+mC&TJh?@PoCey!b)$7=t;8VUuBSsbwJOtJ_*6h=`@n zw&Z8h?AaNIygue1!^%a+i*Iu^#ik^vjKa;Gwv~;ONQd|KS=Y{@voE)&9bqZwARrx< zL-3_q(WYjKk3K{(Vh=Mw;CXdQAv5LlbABwdT^m5MenOS2)=Ip2jM=O$Z-xiv{Rzy+ zUskJUBbsSF@f@;s+$1tWi=#wG$+${n`8wWDFrW#{6prLN5*by68luaK*g}EgZ73o#untW` z2Ed_;$Z#IIh$0+hyoN^+f(W*}N2K{`_v<0sZxTHSpnaMhCx9)U;HX4oToi>h`PvgX zj&~T=5YWB}m>-$yp$cRZO41I;UV*ER0b!Lug4VMjKATZZMu&HAFgjmobJ5YH#-c!W z^gvZ0KBlP|aB{RHkl_#z*9j)*+}0b4ZeLOw?b&Plu+Lh0Udz29_#lgvuHV|HLhbjS z*CH|LoDy>im37L~!?U+@_Wy+6)N9QckU;IH_4UAa2(b%F5SD3LZvYy*a%xHqvp=`B zQr^(|gC@bb@u!r_zu=upD@{U@s(q`zNYvv1sFf0AQG)~m3~C^}Hi{*0=lpVS_;x-J ziCEA;S-^k>wh6z4T2ofNbSw0>_WTk(MIKYRYbvk6)!X@C`FhpfLkR@R1abEfmt-qM z?AzH;&BGa)MHiQJCjWZlN%=p#BxR8?7c4)9Qn zRHhPnEIZjIhvPOP72!q&^7v|93bpZk>7^%-e?_4}n@ZVBJ8`mf<#pd#0Aqq1Y}r$5 zb<%_rS9{=UOg{M4)w(_wU%vd$e}?0Fb03k;_Z#b$HC)tj0Ve4qef%;2>uq*8xDVzd z4BPvCapc=TYDi0e85}y?W$7eVu8gZL#;x@HTE2SfqxrNw9P-K}6<#Xhq%XCSjbp)a z$6DbYLCL1K0eC-tv>ZX5q#-K5H_^c3O+a+3i4SSHDBGD>EOp{Ud?fAHYolmd% zq=TajWvM5`FS>-9rTXG3=Rb_XO$TpE+6`cEw zV$aPmYmkViYpSBIZfVHTyQBt;DNB_gzD86Q>ZqV%E-PW@%=i+ZPV7uBDp{`dgev*SifC{iTCM(O69i zGW|5WckHNuz*0DGRu}5tjYlv4z-9d&H41E6oEG`IxZiL8&D1umLBUdv*5v_ES`0$r zF9`;0?)h?kkuBu@Acs8hdjJOi=jb}D`z@_=p--%(TmK0V`#3#S!V0M~UtFfwstz#r z2>Wyf5aG}sKzX_z0mA7Tg$?HgPQ2;J-w1c@cl*AYsxRBf(4I+F9c?6i#D04_Q5++z zr>zfBz2&ZmK&zk@S++<7XjDt{0)8r6w7Pj`FddEhA4d0A^PnPvI=P+;tU3$pZA~+)@pt5QnmBN~UA3#68g>&^` z2p}i6-sRab;6rhb9w&zArQ_rvI_(fR+~(Y1QmPvbg{04{@he`@E0q0k%bd`mnWU#Meddi8_W`_^t?&T5q(m#-tL8C}X7(y%y48rn*tcXZ%K4hE9kI>Y^5CCyFlENE) zZO%WT-J`7L-|~FShuI-p3zdeLzW{g22!;-v)Iqrg1h`z{EL8VPoFR5pFMA)-y^MXP zL37u{@zHaR$ABpKwUO4$F8tp^nQKQ;g#j!WHj{g%DDmvJm(M z{Iigh`g7Gn61bdA8c8tLfeWJxbSTGYoGxK5(D!jLcjchFqdCI<9sSgh97MXT)ofK$ zLRWywd*8qhiH0;=6~D%hyh7r>L$3(NaqJaA&=0;M1oWe?5CM8#6%wYNScR~qS)kak zZ-CSiB|-u`vk-;=4=s>^c-*$eHbLpCQ}`sItN&T=+}+1U1j;A3^X0o$GQGRyG17S4 zXT=bd?Af@j-uvdIo2H{=IEgKktGBn4X&Q~@5vI%X$xlE1WQ-vg!aPpoV}8z=pLQys zwY)@gUX(~@#1Q4ne@Nf-q`Ib)njaZIw!Yi*5=m6&=;U-7b<7K;zHbj(NqP~5xl;v+ z6VF&qslzYM+G7UAIvC4hJb7SbPcP-RY##Btx;t*$NZDTS-hvW=hvLxOS4$lWt3`oa z(%YX4*jV2`r5axC#LneIa1Pn3A`cKR<(89C_T~XYUpEgDhLt#c01nGadzg(&Ecr@P zov)a#PAmO}&uwYPVa4H_NWBcl^5HPe^F6U8Yq(5yW^K2oy(TD-Dr`g!{z|dnh@Z_H zrs@n}PZi$(jGrEG4?N^PP9pg(&(W{c!vG>F}_Iw^KSE&NNBG+ zJ#3l&ODp!kZ#W;f0cD+k;dZrbZ^X6%-g{Rpis&f08Qe{ltNCE~=ipUB9$FNNefzgo z*~48{mXkub8oK)fpMd{Mp$bMQUq&PI>AjcSl%rX@(8Y@ zn`rG_@vHeFxf#EW}i&&CAh>rc~y507P6E33h*yMU5?e_^)GX#+B0F2FDgWrNB>(4+KW6q*kz+5H${ zQ$10MUdS+0Cl76uGTd7mrHc35#wnw`xKTQ~M>k5*#k(6O4c!CO(YtEz3fu!A;2*P3 z?fwP)QSL1dLK@sC!JY_{T+Ecx7&S0!h9O>7x>y&zPN$@LNR-=SVM(S+TL0s3kH9h#(3$SC=hri>*U=2Anf4 zR0GNv5Vis3=oG>MWj!A{EG`6IJ|e0@C8DXO`I@awPu~KDKia7T0MkpzTA2Tg8@K(s zek9CotTh%kgpYs|i8w9Xk+tV^Jg16@BoQZ#Y0ROgk7=xdCz3-*q)V0 z>u1PRvp1EKXF&>=%?y(FE^B-2gNRp8^C6(}DrR9K;Pt z1JrTbP-lzXHq==t+lCh6GHz{FGO=E5CQ-LNN`tM7M;kyDx!tKVb@#Q?`FhztwJ77a zPc5qM+ov{Vr|naVE`0mcq6i9ijU zRg$m~YLN84GpO@l-V;?%ub*8+i?hQnqRrK17tvztVHeTn?6!+&@kQ(+S{z{)G~hIS zY(`qF)n+15KZ^BkHdsj8hydpM`Zfa@=+CuTC;tJS&3XnpIyN`0*|o1~3K3Q|uzYYw z(rM`H8y&YXZme@&SVyBIu23w{#TF@6N*&fII#+~dr4vM`956w+)?x5mLh;a(0Jh>V z*>*3ibZ&21X>`^NY`QL2I#P&Z^$v@$AJxOA?W}!Rl;oQwT_o0tqwqmfuryEUgH;EO z!62e44FK%B>kU92dQ}~CekM>=OW=aeGmu2W+y-D1PyI?DoyMsZJGD^8emUXv5{)GA zh!Kr6@Q6_eY5dMDEtSw?IYF!!&3v~&dV~aAdlFWsaVO$B#9|8h&#~BuK>5{rSKb_p z$3LLx!ipLjQ97UTCp3Xwk!{4DUeKY9E-4;rdqQlL QkdFfWADCEOVc2*g09ep6CjbBd diff --git a/djvm/src/main/resources/kotlin-deterministic.dat.gz b/djvm/src/main/resources/kotlin-deterministic.dat.gz deleted file mode 100644 index 9145a13a18ac8beb40c118b8a09e1737e3e2a575..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 174469 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 z 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�dE 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Ò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%0AZ5cI5? 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

    (>PSiRL0X#$qU|!TYr4t%?@M? ziLzmSN^*N{+bz%#B(>>$Gr$NA-^?!VVR1pl+w^tpuru)wz!JBnVMF$0q!&MER)Jh1 zJ6$!=USZ*fi84>?yx^S7%lgp@XcA9M-bSB&YQmI;A8Wgq!SJWqbiQCSKVe5tnkRK` zayRp$p46Je4eaJUU2s2#px|y^)1zt=`orXLq4;BG+&xR_De8eSE7MMizuIg}96>v^ z{Gc1?bkSZ#MtMA-g46EHwKTF8+q3UzxvkwtvEkTRDfo6G1)qf<8Fms|+S`Ec*_RCL z*50JtChf2^e0!9V5#>`Ys5!+f%*0WzZ(BB-MRAdsZD!3c$~%X^02Vjfz&YA;Zrz!1 z;}JGEL3;sB{S|!?O^>XZ@NUSOUtlKJ0k|@`mcxa~wFGWWzJ55w-`NIb<&n(%|E#yh zON8_QcH+V1>gM?Jbn)h#AWbrp@h&w|Sc383ud3=W+^5N5&xaC^pt9~JpU=Lt#}(tp z1q=T+#d<8bsdCca>{c-rx#7o6Pwfp^L-{Bqn@he_kXdp_*DSCORX?M6ll&~=6U3F; z#MpSzl_bhxB19{Ovw^3WpeL~MvlMVp@}xEZ5_wAb;+g;nso(PU*a(a$ly@^~ zh32!2zi6gB#7Xsj-ix+|kfw(A^4QkKjhfW>^c0-gRn7 zakS$%x7S(pD6(W7g*jl)h+!&5bonmAJ&N_jrg)x+*RNiK7f)4}t#IJKj3Pc2eOh}} zqioGiA@Igg6e=bwNLF*mA?=AI5t*}Tr^x7GG58x9vk2DDF{>xpyBwrs~nFSHNbQ~4l^ z4CpFdY%{9}hNR;c7a}TGxGuVz5Yya6+u@$U$vi>A?bQuRJ~49AHL`m0BL`WQsQ}9P zk&B$0drso_Zeij);xG=ntJ>EFjhx_VV!N zbOvC`L*4lUt6e)I=*q^#9XlM(;~pa^yc><5aJP+G1#owTn)4^l_0%~|+EFET>`EV- z=E?godss2^%?1LzN(@8hlL#lDoJy`T@{L3Cx@UnNAds{ z9LgVL$J+?SX*}BGRwu14-hh3~sf`XskxRJZqU~`esX;1qr)nDfU^*_(ThN;`T<%W~ z{U_3`b2yB-BqARx4uv9oR_?M$;kH!)0bAziG0WNRI!*R0%_Ej+KWdIik5U5DDULl4 zlIeAxp9hzV+tuRwczJwtwd|fmly#tP9{22c8-*Fm2KVUnzRcSlgR?M>lROlb9c8I6 zR1%&XqV0yICb{H34fhX^il5ci?xr!OkXyJ-FfvXp7;bk-mM{K&2)A!em5FwH^~Z0A zqBEJRzpq)W`VRN`skQtpNAyZSTvub&8F~) zyNKe0#;D0t Ks@)apQ7ZuOAF)&b diff --git a/jdk8u-deterministic/build.gradle b/jdk8u-deterministic/build.gradle index 5bf793708f..ac17f952c7 100644 --- a/jdk8u-deterministic/build.gradle +++ b/jdk8u-deterministic/build.gradle @@ -45,3 +45,7 @@ task copyJdk(type: Copy) { assemble.dependsOn copyJdk jar.enabled = false + +artifacts { + jdk file: file(rt_jar), type: 'jar', builtBy: copyJdk +} From 3594ccd89b24c50f51805de5f57eb8a43212337e Mon Sep 17 00:00:00 2001 From: Clinton Date: Fri, 24 Aug 2018 16:29:14 +0100 Subject: [PATCH 4/6] CORDA-1924: Remove references to Cordform definition and cordform-common (#3842) --- build.gradle | 1 - docs/source/changelog.rst | 2 + node-api/build.gradle | 2 - .../nodeapi/internal/NodeInfoConstants.kt | 4 + .../internal/network/NetworkBootstrapper.kt | 21 +- .../internal/network/NodeInfoFilesCopier.kt | 13 +- .../network/NetworkBootstrapperTest.kt | 2 +- .../network/NodeInfoFilesCopierTest.kt | 8 +- node/build.gradle | 1 - .../node/services/network/NetworkMapTest.kt | 4 +- .../node/services/network/NodeInfoWatcher.kt | 7 +- .../services/network/NetworkMapUpdaterTest.kt | 2 +- .../services/network/NodeInfoWatcherTest.kt | 4 +- samples/bank-of-corda-demo/build.gradle | 62 +++-- .../net/corda/bank/BankOfCordaCordformTest.kt | 32 --- .../net/corda/bank/BankOfCordaCordform.kt | 149 ------------ .../main/kotlin/net/corda/bank/IssueCash.kt | 77 +++++++ .../corda/bank/api/BankOfCordaClientApi.kt | 8 +- samples/notary-demo/build.gradle | 218 +++++++++++++++++- .../net/corda/notarydemo/BFTNotaryCordform.kt | 93 -------- .../main/kotlin/net/corda/notarydemo/Clean.kt | 9 - .../corda/notarydemo/CustomNotaryCordform.kt | 52 ----- .../kotlin/net/corda/notarydemo/Notarise.kt | 2 +- .../corda/notarydemo/RaftNotaryCordform.kt | 86 ------- .../corda/notarydemo/SingleNotaryCordform.kt | 58 ----- testing/node-driver/build.gradle | 1 - .../testing/node/internal/DriverDSLImpl.kt | 104 +-------- .../internal/demorun/CordformNodeRunner.kt | 78 ------- .../node/internal/demorun/CordformUtils.kt | 34 --- tools/demobench/build.gradle | 2 - 30 files changed, 378 insertions(+), 758 deletions(-) create mode 100644 node-api/src/main/kotlin/net/corda/nodeapi/internal/NodeInfoConstants.kt delete mode 100644 samples/bank-of-corda-demo/src/integration-test/kotlin/net/corda/bank/BankOfCordaCordformTest.kt delete mode 100644 samples/bank-of-corda-demo/src/main/kotlin/net/corda/bank/BankOfCordaCordform.kt create mode 100644 samples/bank-of-corda-demo/src/main/kotlin/net/corda/bank/IssueCash.kt delete mode 100644 samples/notary-demo/src/main/kotlin/net/corda/notarydemo/BFTNotaryCordform.kt delete mode 100644 samples/notary-demo/src/main/kotlin/net/corda/notarydemo/Clean.kt delete mode 100644 samples/notary-demo/src/main/kotlin/net/corda/notarydemo/CustomNotaryCordform.kt delete mode 100644 samples/notary-demo/src/main/kotlin/net/corda/notarydemo/RaftNotaryCordform.kt delete mode 100644 samples/notary-demo/src/main/kotlin/net/corda/notarydemo/SingleNotaryCordform.kt delete mode 100644 testing/node-driver/src/main/kotlin/net/corda/testing/node/internal/demorun/CordformNodeRunner.kt delete mode 100644 testing/node-driver/src/main/kotlin/net/corda/testing/node/internal/demorun/CordformUtils.kt diff --git a/build.gradle b/build.gradle index eda5774878..12d70e0312 100644 --- a/build.gradle +++ b/build.gradle @@ -210,7 +210,6 @@ allprojects { mavenCentral() jcenter() maven { url 'https://jitpack.io' } - maven { url "$artifactory_contextUrl/corda-releases" } // cordform-common } configurations { diff --git a/docs/source/changelog.rst b/docs/source/changelog.rst index e852b26f77..403b1155ba 100644 --- a/docs/source/changelog.rst +++ b/docs/source/changelog.rst @@ -6,6 +6,8 @@ release, see :doc:`upgrade-notes`. Unreleased ---------- +* Removed experimental feature `CordformDefinition` + * Vault query fix: support query by parent classes of Contract State classes (see https://github.com/corda/corda/issues/3714) * Added ``registerResponderFlow`` method to ``StartedMockNode``, to support isolated testing of responder flow behaviour. diff --git a/node-api/build.gradle b/node-api/build.gradle index 9da77eaf2e..d70b5af596 100644 --- a/node-api/build.gradle +++ b/node-api/build.gradle @@ -22,8 +22,6 @@ dependencies { // TODO: Remove this dependency and the code that requires it compile "commons-fileupload:commons-fileupload:$fileupload_version" - compile "net.corda.plugins:cordform-common:$gradle_plugins_version" - // TypeSafe Config: for simple and human friendly config files. compile "com.typesafe:config:$typesafe_config_version" diff --git a/node-api/src/main/kotlin/net/corda/nodeapi/internal/NodeInfoConstants.kt b/node-api/src/main/kotlin/net/corda/nodeapi/internal/NodeInfoConstants.kt new file mode 100644 index 0000000000..8a75621a2b --- /dev/null +++ b/node-api/src/main/kotlin/net/corda/nodeapi/internal/NodeInfoConstants.kt @@ -0,0 +1,4 @@ +package net.corda.nodeapi.internal + +// TODO: Add to Corda node.conf to allow customisation +const val NODE_INFO_DIRECTORY = "additional-node-infos" \ No newline at end of file diff --git a/node-api/src/main/kotlin/net/corda/nodeapi/internal/network/NetworkBootstrapper.kt b/node-api/src/main/kotlin/net/corda/nodeapi/internal/network/NetworkBootstrapper.kt index a8bd936e68..4690b5e325 100644 --- a/node-api/src/main/kotlin/net/corda/nodeapi/internal/network/NetworkBootstrapper.kt +++ b/node-api/src/main/kotlin/net/corda/nodeapi/internal/network/NetworkBootstrapper.kt @@ -2,7 +2,6 @@ package net.corda.nodeapi.internal.network import com.typesafe.config.Config import com.typesafe.config.ConfigFactory -import net.corda.cordform.CordformNode import net.corda.core.identity.CordaX500Name import net.corda.core.identity.Party import net.corda.core.internal.* @@ -46,11 +45,11 @@ import kotlin.streams.toList */ // TODO Move this to tools:bootstrapper class NetworkBootstrapper - @VisibleForTesting - internal constructor(private val initSerEnv: Boolean, - private val embeddedCordaJar: () -> InputStream, - private val nodeInfosGenerator: (List) -> List, - private val contractsJarConverter: (Path) -> ContractsJar) { +@VisibleForTesting +internal constructor(private val initSerEnv: Boolean, + private val embeddedCordaJar: () -> InputStream, + private val nodeInfosGenerator: (List) -> List, + private val contractsJarConverter: (Path) -> ContractsJar) { constructor() : this( initSerEnv = true, @@ -102,7 +101,7 @@ class NetworkBootstrapper process.destroyForcibly() throw IllegalStateException("Error while generating node info file. Please check the logs in $logsDir.") } - check(process.exitValue() == 0) { "Error while generating node info file. Please check the logs in $logsDir." } + check(process.exitValue() == 0) { "Error while generating node info file. Please check the logs in $logsDir." } return nodeDir.list { paths -> paths.filter { it.fileName.toString().startsWith(NODE_INFO_FILE_NAME_PREFIX) }.findFirst().get() } @@ -269,7 +268,7 @@ class NetworkBootstrapper private fun distributeNodeInfos(nodeDirs: List, nodeInfoFiles: List) { for (nodeDir in nodeDirs) { - val additionalNodeInfosDir = (nodeDir / CordformNode.NODE_INFO_DIRECTORY).createDirectories() + val additionalNodeInfosDir = (nodeDir / NODE_INFO_DIRECTORY).createDirectories() for (nodeInfoFile in nodeInfoFiles) { nodeInfoFile.copyToDirectory(additionalNodeInfosDir, REPLACE_EXISTING) } @@ -364,10 +363,10 @@ class NetworkBootstrapper private fun NodeInfo.notaryIdentity(): Party { return when (legalIdentities.size) { - // Single node notaries have just one identity like all other nodes. This identity is the notary identity + // Single node notaries have just one identity like all other nodes. This identity is the notary identity 1 -> legalIdentities[0] - // Nodes which are part of a distributed notary have a second identity which is the composite identity of the - // cluster and is shared by all the other members. This is the notary identity. + // Nodes which are part of a distributed notary have a second identity which is the composite identity of the + // cluster and is shared by all the other members. This is the notary identity. 2 -> legalIdentities[1] else -> throw IllegalArgumentException("Not sure how to get the notary identity in this scenerio: $this") } diff --git a/node-api/src/main/kotlin/net/corda/nodeapi/internal/network/NodeInfoFilesCopier.kt b/node-api/src/main/kotlin/net/corda/nodeapi/internal/network/NodeInfoFilesCopier.kt index f4421535c9..86c3266bb6 100644 --- a/node-api/src/main/kotlin/net/corda/nodeapi/internal/network/NodeInfoFilesCopier.kt +++ b/node-api/src/main/kotlin/net/corda/nodeapi/internal/network/NodeInfoFilesCopier.kt @@ -1,8 +1,8 @@ package net.corda.nodeapi.internal.network -import net.corda.cordform.CordformNode import net.corda.core.internal.* import net.corda.core.utilities.contextLogger +import net.corda.nodeapi.internal.NODE_INFO_DIRECTORY import rx.Observable import rx.Scheduler import rx.Subscription @@ -96,10 +96,11 @@ class NodeInfoFilesCopier(scheduler: Scheduler = Schedulers.io()) : AutoCloseabl private fun poll() { nodeDataMapBox.locked { for (nodeData in values) { - nodeData.nodeDir.list { paths -> paths - .filter { it.isRegularFile() } - .filter { it.fileName.toString().startsWith(NODE_INFO_FILE_NAME_PREFIX) } - .forEach { processPath(nodeData, it) } + nodeData.nodeDir.list { paths -> + paths + .filter { it.isRegularFile() } + .filter { it.fileName.toString().startsWith(NODE_INFO_FILE_NAME_PREFIX) } + .forEach { processPath(nodeData, it) } } } } @@ -149,7 +150,7 @@ class NodeInfoFilesCopier(scheduler: Scheduler = Schedulers.io()) : AutoCloseabl * Convenience holder for all the paths and files relative to a single node. */ private class NodeData(val nodeDir: Path) { - val additionalNodeInfoDirectory: Path = nodeDir.resolve(CordformNode.NODE_INFO_DIRECTORY) + val additionalNodeInfoDirectory: Path = nodeDir.resolve(NODE_INFO_DIRECTORY) // Map from Path to its lastModifiedTime. val previouslySeenFiles = mutableMapOf() diff --git a/node-api/src/test/kotlin/net/corda/nodeapi/internal/network/NetworkBootstrapperTest.kt b/node-api/src/test/kotlin/net/corda/nodeapi/internal/network/NetworkBootstrapperTest.kt index 04744c9376..0b265171e6 100644 --- a/node-api/src/test/kotlin/net/corda/nodeapi/internal/network/NetworkBootstrapperTest.kt +++ b/node-api/src/test/kotlin/net/corda/nodeapi/internal/network/NetworkBootstrapperTest.kt @@ -1,7 +1,6 @@ package net.corda.nodeapi.internal.network import com.typesafe.config.ConfigFactory -import net.corda.cordform.CordformNode.NODE_INFO_DIRECTORY import net.corda.core.crypto.secureRandomBytes import net.corda.core.crypto.sha256 import net.corda.core.identity.CordaX500Name @@ -11,6 +10,7 @@ import net.corda.core.node.NodeInfo import net.corda.core.serialization.serialize import net.corda.node.services.config.NotaryConfig import net.corda.nodeapi.internal.DEV_ROOT_CA +import net.corda.nodeapi.internal.NODE_INFO_DIRECTORY import net.corda.nodeapi.internal.SignedNodeInfo import net.corda.nodeapi.internal.config.parseAs import net.corda.nodeapi.internal.config.toConfig diff --git a/node-api/src/test/kotlin/net/corda/nodeapi/internal/network/NodeInfoFilesCopierTest.kt b/node-api/src/test/kotlin/net/corda/nodeapi/internal/network/NodeInfoFilesCopierTest.kt index d78f7a6bab..abacb8a0e3 100644 --- a/node-api/src/test/kotlin/net/corda/nodeapi/internal/network/NodeInfoFilesCopierTest.kt +++ b/node-api/src/test/kotlin/net/corda/nodeapi/internal/network/NodeInfoFilesCopierTest.kt @@ -1,10 +1,10 @@ package net.corda.nodeapi.internal.network -import net.corda.cordform.CordformNode import net.corda.core.internal.div import net.corda.core.internal.list import net.corda.core.internal.write import net.corda.nodeapi.eventually +import net.corda.nodeapi.internal.NODE_INFO_DIRECTORY import org.assertj.core.api.Assertions.assertThat import org.junit.Before import org.junit.Rule @@ -34,12 +34,12 @@ class NodeInfoFilesCopierTest { private val rootPath get() = folder.root.toPath() private val scheduler = TestScheduler() - private fun nodeDir(nodeBaseDir : String) = rootPath.resolve(nodeBaseDir).resolve(ORGANIZATION.toLowerCase()) + private fun nodeDir(nodeBaseDir: String) = rootPath.resolve(nodeBaseDir).resolve(ORGANIZATION.toLowerCase()) private val node1RootPath by lazy { nodeDir(NODE_1_PATH) } private val node2RootPath by lazy { nodeDir(NODE_2_PATH) } - private val node1AdditionalNodeInfoPath by lazy { node1RootPath.resolve(CordformNode.NODE_INFO_DIRECTORY) } - private val node2AdditionalNodeInfoPath by lazy { node2RootPath.resolve(CordformNode.NODE_INFO_DIRECTORY) } + private val node1AdditionalNodeInfoPath by lazy { node1RootPath.resolve(NODE_INFO_DIRECTORY) } + private val node2AdditionalNodeInfoPath by lazy { node2RootPath.resolve(NODE_INFO_DIRECTORY) } private lateinit var nodeInfoFilesCopier: NodeInfoFilesCopier diff --git a/node/build.gradle b/node/build.gradle index 1a451aef48..5ba7afdc42 100644 --- a/node/build.gradle +++ b/node/build.gradle @@ -71,7 +71,6 @@ dependencies { compile project(":confidential-identities") compile project(':client:rpc') compile project(':tools:shell') - compile "net.corda.plugins:cordform-common:$gradle_plugins_version" // Log4J: logging framework (with SLF4J bindings) compile "org.apache.logging.log4j:log4j-slf4j-impl:${log4j_version}" diff --git a/node/src/integration-test/kotlin/net/corda/node/services/network/NetworkMapTest.kt b/node/src/integration-test/kotlin/net/corda/node/services/network/NetworkMapTest.kt index 2bf6d30eee..91d4299702 100644 --- a/node/src/integration-test/kotlin/net/corda/node/services/network/NetworkMapTest.kt +++ b/node/src/integration-test/kotlin/net/corda/node/services/network/NetworkMapTest.kt @@ -1,6 +1,5 @@ package net.corda.node.services.network -import net.corda.cordform.CordformNode import net.corda.core.concurrent.CordaFuture import net.corda.core.crypto.random63BitValue import net.corda.core.identity.CordaX500Name @@ -12,6 +11,7 @@ import net.corda.core.serialization.serialize import net.corda.core.utilities.getOrThrow import net.corda.core.utilities.seconds import net.corda.node.services.config.configureDevKeyAndTrustStores +import net.corda.nodeapi.internal.NODE_INFO_DIRECTORY import net.corda.nodeapi.internal.config.NodeSSLConfiguration import net.corda.nodeapi.internal.network.NETWORK_PARAMS_FILE_NAME import net.corda.nodeapi.internal.network.NETWORK_PARAMS_UPDATE_FILE_NAME @@ -235,7 +235,7 @@ class NetworkMapTest(var initFunc: (URL, NetworkMapServer) -> CompatibilityZoneP private fun NodeHandle.onlySees(vararg nodes: NodeInfo) { // Make sure the nodes aren't getting the node infos from their additional directories - val nodeInfosDir = baseDirectory / CordformNode.NODE_INFO_DIRECTORY + val nodeInfosDir = baseDirectory / NODE_INFO_DIRECTORY if (nodeInfosDir.exists()) { assertThat(nodeInfosDir.list()).isEmpty() } diff --git a/node/src/main/kotlin/net/corda/node/services/network/NodeInfoWatcher.kt b/node/src/main/kotlin/net/corda/node/services/network/NodeInfoWatcher.kt index dacf99bdf3..cdd370ff8f 100644 --- a/node/src/main/kotlin/net/corda/node/services/network/NodeInfoWatcher.kt +++ b/node/src/main/kotlin/net/corda/node/services/network/NodeInfoWatcher.kt @@ -1,6 +1,5 @@ package net.corda.node.services.network -import net.corda.cordform.CordformNode import net.corda.core.crypto.SecureHash import net.corda.core.internal.* import net.corda.core.node.NodeInfo @@ -11,6 +10,7 @@ import net.corda.core.utilities.contextLogger import net.corda.core.utilities.debug import net.corda.core.utilities.seconds import net.corda.node.serialization.amqp.AMQPServerSerializationScheme +import net.corda.nodeapi.internal.NODE_INFO_DIRECTORY import net.corda.nodeapi.internal.NodeInfoAndSigned import net.corda.nodeapi.internal.SignedNodeInfo import net.corda.nodeapi.internal.network.NodeInfoFilesCopier @@ -64,7 +64,8 @@ class NodeInfoWatcher(private val nodePath: Path, } internal data class NodeInfoFromFile(val nodeInfohash: SecureHash, val lastModified: FileTime) - private val nodeInfosDir = nodePath / CordformNode.NODE_INFO_DIRECTORY + + private val nodeInfosDir = nodePath / NODE_INFO_DIRECTORY private val nodeInfoFilesMap = HashMap() val processedNodeInfoHashes: Set get() = nodeInfoFilesMap.values.map { it.nodeInfohash }.toSet() @@ -74,7 +75,7 @@ class NodeInfoWatcher(private val nodePath: Path, } /** - * Read all the files contained in [nodePath] / [CordformNode.NODE_INFO_DIRECTORY] and keep watching + * Read all the files contained in [nodePath] / [NODE_INFO_DIRECTORY] and keep watching * the folder for further updates. * * We simply list the directory content every 5 seconds, the Java implementation of WatchService has been proven to diff --git a/node/src/test/kotlin/net/corda/node/services/network/NetworkMapUpdaterTest.kt b/node/src/test/kotlin/net/corda/node/services/network/NetworkMapUpdaterTest.kt index 2d3f2be0c3..ff4de39797 100644 --- a/node/src/test/kotlin/net/corda/node/services/network/NetworkMapUpdaterTest.kt +++ b/node/src/test/kotlin/net/corda/node/services/network/NetworkMapUpdaterTest.kt @@ -3,7 +3,6 @@ package net.corda.node.services.network import com.google.common.jimfs.Configuration.unix import com.google.common.jimfs.Jimfs import com.nhaarman.mockito_kotlin.* -import net.corda.cordform.CordformNode.NODE_INFO_DIRECTORY import net.corda.core.crypto.Crypto import net.corda.core.crypto.SecureHash import net.corda.core.crypto.sign @@ -15,6 +14,7 @@ import net.corda.core.node.NodeInfo import net.corda.core.serialization.serialize import net.corda.core.utilities.millis import net.corda.node.services.api.NetworkMapCacheInternal +import net.corda.nodeapi.internal.NODE_INFO_DIRECTORY import net.corda.nodeapi.internal.NodeInfoAndSigned import net.corda.nodeapi.internal.network.NETWORK_PARAMS_UPDATE_FILE_NAME import net.corda.nodeapi.internal.network.NodeInfoFilesCopier diff --git a/node/src/test/kotlin/net/corda/node/services/network/NodeInfoWatcherTest.kt b/node/src/test/kotlin/net/corda/node/services/network/NodeInfoWatcherTest.kt index 1b7a1d8ab9..6fc7abc537 100644 --- a/node/src/test/kotlin/net/corda/node/services/network/NodeInfoWatcherTest.kt +++ b/node/src/test/kotlin/net/corda/node/services/network/NodeInfoWatcherTest.kt @@ -2,11 +2,11 @@ package net.corda.node.services.network import com.google.common.jimfs.Configuration import com.google.common.jimfs.Jimfs -import net.corda.cordform.CordformNode import net.corda.core.internal.createDirectories import net.corda.core.internal.div import net.corda.core.internal.size import net.corda.core.node.services.KeyManagementService +import net.corda.nodeapi.internal.NODE_INFO_DIRECTORY import net.corda.nodeapi.internal.NodeInfoAndSigned import net.corda.nodeapi.internal.network.NodeInfoFilesCopier import net.corda.testing.core.ALICE_NAME @@ -51,7 +51,7 @@ class NodeInfoWatcherTest { val identityService = makeTestIdentityService() keyManagementService = MockKeyManagementService(identityService) nodeInfoWatcher = NodeInfoWatcher(tempFolder.root.toPath(), scheduler) - nodeInfoPath = tempFolder.root.toPath() / CordformNode.NODE_INFO_DIRECTORY + nodeInfoPath = tempFolder.root.toPath() / NODE_INFO_DIRECTORY } @Test diff --git a/samples/bank-of-corda-demo/build.gradle b/samples/bank-of-corda-demo/build.gradle index 56cc8172f8..c05f0172e3 100644 --- a/samples/bank-of-corda-demo/build.gradle +++ b/samples/bank-of-corda-demo/build.gradle @@ -7,21 +7,6 @@ apply plugin: 'net.corda.plugins.cordapp' apply plugin: 'net.corda.plugins.cordformation' apply plugin: 'maven-publish' -sourceSets { - integrationTest { - kotlin { - compileClasspath += main.output + test.output - runtimeClasspath += main.output + test.output - srcDir file('src/integration-test/kotlin') - } - } -} - -configurations { - integrationTestCompile.extendsFrom testCompile - integrationTestRuntime.extendsFrom testRuntime -} - dependencies { compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" @@ -48,13 +33,46 @@ dependencies { } task deployNodes(type: net.corda.plugins.Cordform, dependsOn: ['jar']) { - // CordformationDefinition is an experimental feature - definitionClass = 'net.corda.bank.BankOfCordaCordform' -} - -task integrationTest(type: Test, dependsOn: []) { - testClassesDirs = sourceSets.integrationTest.output.classesDirs - classpath = sourceSets.integrationTest.runtimeClasspath + nodeDefaults { + cordapp project(':finance') + } + node { + name "O=Notary Service,L=Zurich,C=CH" + notary = [validating: true] + p2pPort 10002 + rpcSettings { + address "localhost:10003" + adminAddress "localhost:10004" + } + extraConfig = [h2Settings: [address: "localhost:10016"]] + } + node { + name "O=BankOfCorda,L=London,C=GB" + p2pPort 10005 + rpcSettings { + address "localhost:10006" + adminAddress "localhost:10015" + } + webPort 10007 + rpcUsers = [[user: "bankUser", password: "test", permissions: ["ALL"]]] + extraConfig = [ + custom : [issuableCurrencies: ["USD"]], + h2Settings: [address: "localhost:10017"] + ] + } + node { + name "O=BigCorporation,L=New York,C=US" + p2pPort 10008 + rpcSettings { + address "localhost:10009" + adminAddress "localhost:10011" + } + webPort 10010 + rpcUsers = [[user: "bigCorpUser", password: "test", permissions: ["ALL"]]] + extraConfig = [ + h2Settings: [address: "localhost:10018"] + ] + } } idea { diff --git a/samples/bank-of-corda-demo/src/integration-test/kotlin/net/corda/bank/BankOfCordaCordformTest.kt b/samples/bank-of-corda-demo/src/integration-test/kotlin/net/corda/bank/BankOfCordaCordformTest.kt deleted file mode 100644 index beefbcfc09..0000000000 --- a/samples/bank-of-corda-demo/src/integration-test/kotlin/net/corda/bank/BankOfCordaCordformTest.kt +++ /dev/null @@ -1,32 +0,0 @@ -package net.corda.bank - -import net.corda.client.rpc.CordaRPCClient -import net.corda.core.contracts.withoutIssuer -import net.corda.core.utilities.NetworkHostAndPort -import net.corda.finance.DOLLARS -import net.corda.finance.contracts.asset.Cash -import net.corda.finance.utils.sumCash -import net.corda.testing.core.BOC_NAME -import net.corda.testing.node.internal.demorun.nodeRunner -import org.assertj.core.api.Assertions.assertThat -import org.junit.Test - -class BankOfCordaCordformTest { - @Test - fun `run demo`() { - BankOfCordaCordform().nodeRunner().scanPackages(listOf("net.corda.finance")).deployAndRunNodesAndThen { - IssueCash.requestRpcIssue(20000.DOLLARS) - CordaRPCClient(NetworkHostAndPort("localhost", BOC_RPC_PORT)).use(BOC_RPC_USER, BOC_RPC_PWD) { - assertThat(it.proxy.vaultQuery(Cash.State::class.java).states).isEmpty() // All of the issued cash is transferred - } - CordaRPCClient(NetworkHostAndPort("localhost", BIGCORP_RPC_PORT)).use(BIGCORP_RPC_USER, BIGCORP_RPC_PWD) { - val cashStates = it.proxy.vaultQuery(Cash.State::class.java).states.map { it.state.data } - val knownOwner = it.proxy.wellKnownPartyFromAnonymous(cashStates.map { it.owner }.toSet().single()) - assertThat(knownOwner?.name).isEqualTo(BIGCORP_NAME) - val totalCash = cashStates.sumCash() - assertThat(totalCash.token.issuer.party.nameOrNull()).isEqualTo(BOC_NAME) - assertThat(totalCash.withoutIssuer()).isEqualTo(20000.DOLLARS) - } - } - } -} diff --git a/samples/bank-of-corda-demo/src/main/kotlin/net/corda/bank/BankOfCordaCordform.kt b/samples/bank-of-corda-demo/src/main/kotlin/net/corda/bank/BankOfCordaCordform.kt deleted file mode 100644 index 06beee5f5f..0000000000 --- a/samples/bank-of-corda-demo/src/main/kotlin/net/corda/bank/BankOfCordaCordform.kt +++ /dev/null @@ -1,149 +0,0 @@ -package net.corda.bank - -import joptsimple.OptionParser -import net.corda.bank.api.BankOfCordaClientApi -import net.corda.bank.api.BankOfCordaWebApi.IssueRequestParams -import net.corda.cordform.CordappDependency -import net.corda.cordform.CordformContext -import net.corda.cordform.CordformDefinition -import net.corda.core.contracts.Amount -import net.corda.core.identity.CordaX500Name -import net.corda.core.internal.VisibleForTesting -import net.corda.core.transactions.SignedTransaction -import net.corda.core.utilities.NetworkHostAndPort -import net.corda.node.services.Permissions.Companion.all -import net.corda.node.services.config.NotaryConfig -import net.corda.testing.node.internal.demorun.* -import net.corda.testing.core.BOC_NAME -import net.corda.testing.node.User -import java.util.* -import kotlin.system.exitProcess - -val BIGCORP_NAME = CordaX500Name(organisation = "BigCorporation", locality = "New York", country = "US") -private val NOTARY_NAME = CordaX500Name(organisation = "Notary Service", locality = "Zurich", country = "CH") -const val BOC_RPC_PORT = 10006 -const val BIGCORP_RPC_PORT = 10009 -private const val BOC_RPC_ADMIN_PORT = 10015 -private const val BOC_WEB_PORT = 10007 - -const val BOC_RPC_USER = "bankUser" -const val BOC_RPC_PWD = "test" - -const val BIGCORP_RPC_USER = "bigCorpUser" -const val BIGCORP_RPC_PWD = "test" - -class BankOfCordaCordform : CordformDefinition() { - - init { - node { - name(NOTARY_NAME) - notary(NotaryConfig(validating = true)) - p2pPort(10002) - rpcSettings { - address("localhost:10003") - adminAddress("localhost:10004") - } - devMode(true) - extraConfig = mapOf("h2Settings" to mapOf("address" to "localhost:10016")) - } - node { - name(BOC_NAME) - extraConfig = mapOf("custom" to mapOf("issuableCurrencies" to listOf("USD")), - "h2Settings" to mapOf("address" to "localhost:10017")) - p2pPort(10005) - rpcSettings { - address("localhost:$BOC_RPC_PORT") - adminAddress("localhost:$BOC_RPC_ADMIN_PORT") - } - webPort(BOC_WEB_PORT) - rpcUsers(User(BOC_RPC_USER, BOC_RPC_PWD, setOf(all()))) - devMode(true) - } - node { - name(BIGCORP_NAME) - p2pPort(10008) - rpcSettings { - address("localhost:$BIGCORP_RPC_PORT") - adminAddress("localhost:10011") - } - webPort(10010) - rpcUsers(User(BIGCORP_RPC_USER, BIGCORP_RPC_PWD, setOf(all()))) - devMode(true) - extraConfig = mapOf("h2Settings" to mapOf("address" to "localhost:10018")) - } - } - - override fun setup(context: CordformContext) = Unit - - override fun getCordappDependencies(): List { - return listOf(CordappDependency(":finance")) - } -} - -object DeployNodes { - @JvmStatic - fun main(args: Array) { - BankOfCordaCordform().nodeRunner().scanPackages(listOf("net.corda.finance")).deployAndRunNodes() - } -} - -object IssueCash { - @JvmStatic - fun main(args: Array) { - val parser = OptionParser() - val roleArg = parser.accepts("role").withRequiredArg().ofType(Role::class.java).describedAs("[ISSUER|ISSUE_CASH_RPC|ISSUE_CASH_WEB]") - val quantity = parser.accepts("quantity").withOptionalArg().ofType(Long::class.java) - val currency = parser.accepts("currency").withOptionalArg().ofType(String::class.java).describedAs("[GBP|USD|CHF|EUR]") - val options = try { - parser.parse(*args) - } catch (e: Exception) { - println(e.message) - printHelp(parser) - exitProcess(1) - } - - val role = options.valueOf(roleArg)!! - val amount = Amount(options.valueOf(quantity), Currency.getInstance(options.valueOf(currency))) - when (role) { - Role.ISSUE_CASH_RPC -> { - println("Requesting Cash via RPC ...") - val result = requestRpcIssue(amount) - println("Success!! Your transaction receipt is ${result.tx.id}") - } - Role.ISSUE_CASH_WEB -> { - println("Requesting Cash via Web ...") - requestWebIssue(amount) - println("Successfully processed Cash Issue request") - } - } - } - - @VisibleForTesting - fun requestRpcIssue(amount: Amount): SignedTransaction { - return BankOfCordaClientApi.requestRPCIssue(NetworkHostAndPort("localhost", BOC_RPC_PORT), createParams(amount, NOTARY_NAME)) - } - - private fun requestWebIssue(amount: Amount) { - BankOfCordaClientApi.requestWebIssue(NetworkHostAndPort("localhost", BOC_WEB_PORT), createParams(amount, NOTARY_NAME)) - } - - private fun createParams(amount: Amount, notaryName: CordaX500Name): IssueRequestParams { - return IssueRequestParams(amount, BIGCORP_NAME, "1", BOC_NAME, notaryName) - } - - private fun printHelp(parser: OptionParser) { - println(""" - Usage: bank-of-corda --role ISSUER - bank-of-corda --role (ISSUE_CASH_RPC|ISSUE_CASH_WEB) --quantity --currency - - Please refer to the documentation in docs/build/index.html for more info. - - """.trimIndent()) - parser.printHelpOn(System.out) - } - - enum class Role { - ISSUE_CASH_RPC, - ISSUE_CASH_WEB, - } -} diff --git a/samples/bank-of-corda-demo/src/main/kotlin/net/corda/bank/IssueCash.kt b/samples/bank-of-corda-demo/src/main/kotlin/net/corda/bank/IssueCash.kt new file mode 100644 index 0000000000..24ac13e1d1 --- /dev/null +++ b/samples/bank-of-corda-demo/src/main/kotlin/net/corda/bank/IssueCash.kt @@ -0,0 +1,77 @@ +package net.corda.bank + +import joptsimple.OptionParser +import net.corda.bank.api.BankOfCordaClientApi +import net.corda.bank.api.BankOfCordaWebApi +import net.corda.core.contracts.Amount +import net.corda.core.identity.CordaX500Name +import net.corda.core.internal.VisibleForTesting +import net.corda.core.transactions.SignedTransaction +import net.corda.core.utilities.NetworkHostAndPort +import net.corda.testing.core.BOC_NAME +import java.util.* +import kotlin.system.exitProcess + +object IssueCash { + private val NOTARY_NAME = CordaX500Name(organisation = "Notary Service", locality = "Zurich", country = "CH") + private val BIGCORP_NAME = CordaX500Name(organisation = "BigCorporation", locality = "New York", country = "US") + private const val BOC_RPC_PORT = 10006 + private const val BOC_WEB_PORT = 10007 + + @JvmStatic + fun main(args: Array) { + val parser = OptionParser() + val roleArg = parser.accepts("role").withRequiredArg().ofType(Role::class.java).describedAs("[ISSUER|ISSUE_CASH_RPC|ISSUE_CASH_WEB]") + val quantity = parser.accepts("quantity").withOptionalArg().ofType(Long::class.java) + val currency = parser.accepts("currency").withOptionalArg().ofType(String::class.java).describedAs("[GBP|USD|CHF|EUR]") + val options = try { + parser.parse(*args) + } catch (e: Exception) { + println(e.message) + printHelp(parser) + exitProcess(1) + } + + val role = options.valueOf(roleArg)!! + val amount = Amount(options.valueOf(quantity), Currency.getInstance(options.valueOf(currency))) + when (role) { + Role.ISSUE_CASH_RPC -> { + println("Requesting Cash via RPC ...") + val result = requestRpcIssue(amount) + println("Success!! Your transaction receipt is ${result.tx.id}") + } + Role.ISSUE_CASH_WEB -> { + println("Requesting Cash via Web ...") + requestWebIssue(amount) + println("Successfully processed Cash Issue request") + } + } + } + + @VisibleForTesting + fun requestRpcIssue(amount: Amount): SignedTransaction { + return BankOfCordaClientApi.requestRPCIssue(NetworkHostAndPort("localhost", BOC_RPC_PORT), createParams(amount, NOTARY_NAME)) + } + + private fun requestWebIssue(amount: Amount) { + BankOfCordaClientApi.requestWebIssue(NetworkHostAndPort("localhost", BOC_WEB_PORT), createParams(amount, NOTARY_NAME)) + } + + private fun createParams(amount: Amount, notaryName: CordaX500Name): BankOfCordaWebApi.IssueRequestParams { + return BankOfCordaWebApi.IssueRequestParams(amount, BIGCORP_NAME, "1", BOC_NAME, notaryName) + } + + private fun printHelp(parser: OptionParser) { + println(""" + Usage: bank-of-corda --role ISSUER + bank-of-corda --role (ISSUE_CASH_RPC|ISSUE_CASH_WEB) --quantity --currency + Please refer to the documentation in docs/build/index.html for more info. + """.trimIndent()) + parser.printHelpOn(System.out) + } + + enum class Role { + ISSUE_CASH_RPC, + ISSUE_CASH_WEB, + } +} \ No newline at end of file diff --git a/samples/bank-of-corda-demo/src/main/kotlin/net/corda/bank/api/BankOfCordaClientApi.kt b/samples/bank-of-corda-demo/src/main/kotlin/net/corda/bank/api/BankOfCordaClientApi.kt index 3daf76c8f7..dd79412e77 100644 --- a/samples/bank-of-corda-demo/src/main/kotlin/net/corda/bank/api/BankOfCordaClientApi.kt +++ b/samples/bank-of-corda-demo/src/main/kotlin/net/corda/bank/api/BankOfCordaClientApi.kt @@ -1,7 +1,5 @@ package net.corda.bank.api -import net.corda.bank.BOC_RPC_PWD -import net.corda.bank.BOC_RPC_USER import net.corda.bank.api.BankOfCordaWebApi.IssueRequestParams import net.corda.client.rpc.CordaRPCClient import net.corda.core.messaging.startFlow @@ -16,6 +14,9 @@ import net.corda.testing.http.HttpApi * Interface for communicating with Bank of Corda node */ object BankOfCordaClientApi { + const val BOC_RPC_USER = "bankUser" + const val BOC_RPC_PWD = "test" + /** * HTTP API */ @@ -40,7 +41,8 @@ object BankOfCordaClientApi { // Resolve parties via RPC val issueToParty = rpc.wellKnownPartyFromX500Name(params.issueToPartyName) ?: throw IllegalStateException("Unable to locate ${params.issueToPartyName} in Network Map Service") - val notaryLegalIdentity = rpc.notaryIdentities().firstOrNull { it.name == params.notaryName } ?: throw IllegalStateException("Couldn't locate notary ${params.notaryName} in NetworkMapCache") + val notaryLegalIdentity = rpc.notaryIdentities().firstOrNull { it.name == params.notaryName } + ?: throw IllegalStateException("Couldn't locate notary ${params.notaryName} in NetworkMapCache") val anonymous = true val issuerBankPartyRef = OpaqueBytes.of(params.issuerBankPartyRef.toByte()) diff --git a/samples/notary-demo/build.gradle b/samples/notary-demo/build.gradle index 5012912a8c..081546b3ff 100644 --- a/samples/notary-demo/build.gradle +++ b/samples/notary-demo/build.gradle @@ -49,19 +49,229 @@ publishing { task deployNodes(dependsOn: ['deployNodesSingle', 'deployNodesRaft', 'deployNodesBFT', 'deployNodesCustom']) task deployNodesSingle(type: Cordform, dependsOn: 'jar') { - definitionClass = 'net.corda.notarydemo.SingleNotaryCordform' + directory file("$buildDir/nodes/nodesSingle") + nodeDefaults { + extraConfig = [h2Settings: [address: "localhost:0"]] + } + node { + name "O=Alice Corp,L=Madrid,C=ES" + p2pPort 10002 + rpcSettings { + address "localhost:10003" + adminAddress "localhost:10103" + } + rpcUsers = [[user: "demou", password: "demop", permissions: ["ALL"]]] + } + node { + name "O=Bob Plc,L=Rome,C=IT" + p2pPort 10005 + rpcSettings { + address "localhost:10006" + adminAddress "localhost:10106" + } + } + node { + name "O=Notary Service,L=Zurich,C=CH" + p2pPort 10009 + rpcSettings { + address "localhost:10010" + adminAddress "localhost:10110" + } + notary = [validating: true] + } } task deployNodesCustom(type: Cordform, dependsOn: 'jar') { - definitionClass = 'net.corda.notarydemo.CustomNotaryCordform' + directory file("$buildDir/nodes/nodesCustom") + nodeDefaults { + extraConfig = [h2Settings: [address: "localhost:0"]] + } + node { + name "O=Alice Corp,L=Madrid,C=ES" + p2pPort 10002 + rpcSettings { + address "localhost:10003" + adminAddress "localhost:10103" + } + rpcUsers = [[user: "demou", password: "demop", permissions: ["ALL"]]] + } + node { + name "O=Bob Plc,L=Rome,C=IT" + p2pPort 10005 + rpcSettings { + address "localhost:10006" + adminAddress "localhost:10106" + } + } + node { + name "O=Notary Service,L=Zurich,C=CH" + p2pPort 10009 + rpcSettings { + address "localhost:10010" + adminAddress "localhost:10110" + } + notary = [validating: true, "custom": true] + } } task deployNodesRaft(type: Cordform, dependsOn: 'jar') { - definitionClass = 'net.corda.notarydemo.RaftNotaryCordform' + directory file("$buildDir/nodes/nodesRaft") + nodeDefaults { + extraConfig = [h2Settings: [address: "localhost:0"]] + } + node { + name "O=Alice Corp,L=Madrid,C=ES" + p2pPort 10002 + rpcSettings { + address "localhost:10003" + adminAddress "localhost:10103" + } + rpcUsers = [[user: "demou", password: "demop", permissions: ["ALL"]]] + } + node { + name "O=Bob Plc,L=Rome,C=IT" + p2pPort 10005 + rpcSettings { + address "localhost:10006" + adminAddress "localhost:10106" + } + } + node { + name "O=Notary Service 0,L=Zurich,C=CH" + p2pPort 10009 + rpcSettings { + address "localhost:10010" + adminAddress "localhost:10110" + } + notary = [ + validating: true, + serviceLegalName: "O=Raft,L=Zurich,C=CH", + raft: [ + nodeAddress: "localhost:10008" + ] + ] + } + node { + name "O=Notary Service 1,L=Zurich,C=CH" + p2pPort 10013 + rpcSettings { + address "localhost:10014" + adminAddress "localhost:10114" + } + notary = [ + validating: true, + serviceLegalName: "O=Raft,L=Zurich,C=CH", + raft: [ + nodeAddress: "localhost:10012", + clusterAddresses: ["localhost:10008"] + ] + ] + } + node { + name "O=Notary Service 2,L=Zurich,C=CH" + p2pPort 10017 + rpcSettings { + address "localhost:10018" + adminAddress "localhost:10118" + } + notary = [ + validating: true, + serviceLegalName: "O=Raft,L=Zurich,C=CH", + raft: [ + nodeAddress: "localhost:10016", + clusterAddresses: ["localhost:10008"] + ] + ] + } } task deployNodesBFT(type: Cordform, dependsOn: 'jar') { - definitionClass = 'net.corda.notarydemo.BFTNotaryCordform' + def clusterAddresses = ["localhost:11000", "localhost:11010", "localhost:11020", "localhost:11030"] + directory file("$buildDir/nodes/nodesBFT") + nodeDefaults { + extraConfig = [h2Settings: [address: "localhost:0"]] + } + node { + name "O=Alice Corp,L=Madrid,C=ES" + p2pPort 10002 + rpcSettings { + address "localhost:10003" + adminAddress "localhost:10103" + } + rpcUsers = [[user: "demou", password: "demop", permissions: ["ALL"]]] + } + node { + name "O=Bob Plc,L=Rome,C=IT" + p2pPort 10005 + rpcSettings { + address "localhost:10006" + adminAddress "localhost:10106" + } + } + node { + name "O=Notary Service 0,L=Zurich,C=CH" + p2pPort 10009 + rpcSettings { + address "localhost:10010" + adminAddress "localhost:10110" + } + notary = [ + validating: false, + serviceLegalName: "O=BFT,L=Zurich,C=CH", + bftSMaRt: [ + replicaId: 0, + clusterAddresses: clusterAddresses + ] + ] + } + node { + name "O=Notary Service 1,L=Zurich,C=CH" + p2pPort 10013 + rpcSettings { + address "localhost:10014" + adminAddress "localhost:10114" + } + notary = [ + validating: false, + serviceLegalName: "O=BFT,L=Zurich,C=CH", + bftSMaRt: [ + replicaId: 0, + clusterAddresses: clusterAddresses + ] + ] + } + node { + name "O=Notary Service 2,L=Zurich,C=CH" + p2pPort 10017 + rpcSettings { + address "localhost:10018" + adminAddress "localhost:10118" + } + notary = [ + validating: false, + serviceLegalName: "O=BFT,L=Zurich,C=CH", + bftSMaRt: [ + replicaId: 0, + clusterAddresses: clusterAddresses + ] + ] + } + node { + name "O=Notary Service 3,L=Zurich,C=CH" + p2pPort 10021 + rpcSettings { + address "localhost:10022" + adminAddress "localhost:10122" + } + notary = [ + validating: false, + serviceLegalName: "O=BFT,L=Zurich,C=CH", + bftSMaRt: [ + replicaId: 0, + clusterAddresses: clusterAddresses + ] + ] + } } task notarise(type: JavaExec) { diff --git a/samples/notary-demo/src/main/kotlin/net/corda/notarydemo/BFTNotaryCordform.kt b/samples/notary-demo/src/main/kotlin/net/corda/notarydemo/BFTNotaryCordform.kt deleted file mode 100644 index 04e045c115..0000000000 --- a/samples/notary-demo/src/main/kotlin/net/corda/notarydemo/BFTNotaryCordform.kt +++ /dev/null @@ -1,93 +0,0 @@ -package net.corda.notarydemo - -import net.corda.cordform.CordformContext -import net.corda.cordform.CordformDefinition -import net.corda.cordform.CordformNode -import net.corda.core.identity.CordaX500Name -import net.corda.core.utilities.NetworkHostAndPort -import net.corda.node.services.config.BFTSMaRtConfiguration -import net.corda.node.services.config.NotaryConfig -import net.corda.node.services.transactions.minCorrectReplicas -import net.corda.nodeapi.internal.DevIdentityGenerator -import net.corda.testing.node.internal.demorun.* -import net.corda.testing.core.ALICE_NAME -import net.corda.testing.core.BOB_NAME -import java.nio.file.Paths - -fun main(args: Array) = BFTNotaryCordform().nodeRunner().deployAndRunNodes() - -private const val clusterSize = 4 // Minimum size that tolerates a faulty replica. -private val notaryNames = createNotaryNames(clusterSize) - -// This is not the intended final design for how to use CordformDefinition, please treat this as experimental and DO -// NOT use this as a design to copy. -class BFTNotaryCordform : CordformDefinition() { - private val clusterName = CordaX500Name("BFT", "Zurich", "CH") - - init { - nodesDirectory = Paths.get("build", "nodes", "nodesBFT") - node { - name(ALICE_NAME) - p2pPort(10002) - rpcSettings { - address("localhost:10003") - adminAddress("localhost:10103") - } - rpcUsers(notaryDemoUser) - devMode(true) - extraConfig = mapOf("h2Settings" to mapOf("address" to "localhost:0")) - } - node { - name(BOB_NAME) - p2pPort(10005) - rpcSettings { - address("localhost:10006") - adminAddress("localhost:10106") - } - devMode(true) - extraConfig = mapOf("h2Settings" to mapOf("address" to "localhost:0")) - } - val clusterAddresses = (0 until clusterSize).map { NetworkHostAndPort("localhost", 11000 + it * 10) } - fun notaryNode(replicaId: Int, configure: CordformNode.() -> Unit) = node { - name(notaryNames[replicaId]) - notary(NotaryConfig(validating = false, serviceLegalName = clusterName, bftSMaRt = BFTSMaRtConfiguration(replicaId, clusterAddresses))) - extraConfig = mapOf("h2Settings" to mapOf("address" to "localhost:0")) - configure() - } - notaryNode(0) { - p2pPort(10009) - rpcSettings { - address("localhost:10010") - adminAddress("localhost:10110") - } - devMode(true) - } - notaryNode(1) { - p2pPort(10013) - rpcSettings { - address("localhost:10014") - adminAddress("localhost:10114") - } - devMode(true) - } - notaryNode(2) { - p2pPort(10017) - rpcSettings { - address("localhost:10018") - adminAddress("localhost:10118") - } - devMode(true) - } - notaryNode(3) { - p2pPort(10021) - rpcSettings { - address("localhost:10022") - adminAddress("localhost:10122") - } - devMode(true) - } - } - - override fun setup(context: CordformContext) { - } -} diff --git a/samples/notary-demo/src/main/kotlin/net/corda/notarydemo/Clean.kt b/samples/notary-demo/src/main/kotlin/net/corda/notarydemo/Clean.kt deleted file mode 100644 index 2fbba77b26..0000000000 --- a/samples/notary-demo/src/main/kotlin/net/corda/notarydemo/Clean.kt +++ /dev/null @@ -1,9 +0,0 @@ -package net.corda.notarydemo - -import net.corda.testing.node.internal.demorun.nodeRunner - -fun main(args: Array) { - listOf(SingleNotaryCordform(), RaftNotaryCordform(), BFTNotaryCordform()).map { it.nodeRunner() }.forEach { - it.clean() - } -} diff --git a/samples/notary-demo/src/main/kotlin/net/corda/notarydemo/CustomNotaryCordform.kt b/samples/notary-demo/src/main/kotlin/net/corda/notarydemo/CustomNotaryCordform.kt deleted file mode 100644 index 21e87c5650..0000000000 --- a/samples/notary-demo/src/main/kotlin/net/corda/notarydemo/CustomNotaryCordform.kt +++ /dev/null @@ -1,52 +0,0 @@ -package net.corda.notarydemo - -import net.corda.cordform.CordformContext -import net.corda.cordform.CordformDefinition -import net.corda.node.services.config.NotaryConfig -import net.corda.testing.node.internal.demorun.* -import net.corda.testing.core.ALICE_NAME -import net.corda.testing.core.BOB_NAME -import net.corda.testing.core.DUMMY_NOTARY_NAME -import java.nio.file.Paths - -fun main(args: Array) = CustomNotaryCordform().nodeRunner().deployAndRunNodes() - -class CustomNotaryCordform : CordformDefinition() { - init { - nodesDirectory = Paths.get("build", "nodes", "nodesCustom") - node { - name(ALICE_NAME) - p2pPort(10002) - rpcSettings { - address("localhost:10003") - adminAddress("localhost:10103") - } - rpcUsers(notaryDemoUser) - devMode(true) - extraConfig = mapOf("h2Settings" to mapOf("address" to "localhost:0")) - } - node { - name(BOB_NAME) - p2pPort(10005) - rpcSettings { - address("localhost:10006") - adminAddress("localhost:10106") - } - devMode(true) - extraConfig = mapOf("h2Settings" to mapOf("address" to "localhost:0")) - } - node { - name(DUMMY_NOTARY_NAME) - p2pPort(10009) - rpcSettings { - address("localhost:10010") - adminAddress("localhost:10110") - } - notary(NotaryConfig(validating = true, custom = true)) - devMode(true) - extraConfig = mapOf("h2Settings" to mapOf("address" to "localhost:0")) - } - } - - override fun setup(context: CordformContext) {} -} \ No newline at end of file diff --git a/samples/notary-demo/src/main/kotlin/net/corda/notarydemo/Notarise.kt b/samples/notary-demo/src/main/kotlin/net/corda/notarydemo/Notarise.kt index 25a320a1a9..1de2b92219 100644 --- a/samples/notary-demo/src/main/kotlin/net/corda/notarydemo/Notarise.kt +++ b/samples/notary-demo/src/main/kotlin/net/corda/notarydemo/Notarise.kt @@ -17,7 +17,7 @@ import java.util.concurrent.Future fun main(args: Array) { val address = NetworkHostAndPort("localhost", 10003) println("Connecting to the recipient node ($address)") - CordaRPCClient(address).start(notaryDemoUser.username, notaryDemoUser.password).use { + CordaRPCClient(address).start("demou", "demop").use { NotaryDemoClientApi(it.proxy).notarise(10) } } diff --git a/samples/notary-demo/src/main/kotlin/net/corda/notarydemo/RaftNotaryCordform.kt b/samples/notary-demo/src/main/kotlin/net/corda/notarydemo/RaftNotaryCordform.kt deleted file mode 100644 index 6de371c3e6..0000000000 --- a/samples/notary-demo/src/main/kotlin/net/corda/notarydemo/RaftNotaryCordform.kt +++ /dev/null @@ -1,86 +0,0 @@ -package net.corda.notarydemo - -import net.corda.cordform.CordformContext -import net.corda.cordform.CordformDefinition -import net.corda.cordform.CordformNode -import net.corda.core.identity.CordaX500Name -import net.corda.core.utilities.NetworkHostAndPort -import net.corda.node.services.config.NotaryConfig -import net.corda.node.services.config.RaftConfig -import net.corda.nodeapi.internal.DevIdentityGenerator -import net.corda.testing.node.internal.demorun.* -import net.corda.testing.core.ALICE_NAME -import net.corda.testing.core.BOB_NAME -import java.nio.file.Paths - -fun main(args: Array) = RaftNotaryCordform().nodeRunner().deployAndRunNodes() - -internal fun createNotaryNames(clusterSize: Int) = (0 until clusterSize).map { CordaX500Name("Notary Service $it", "Zurich", "CH") } - -private val notaryNames = createNotaryNames(3) - -// This is not the intended final design for how to use CordformDefinition, please treat this as experimental and DO -// NOT use this as a design to copy. -class RaftNotaryCordform : CordformDefinition() { - private val clusterName = CordaX500Name("Raft", "Zurich", "CH") - - init { - nodesDirectory = Paths.get("build", "nodes", "nodesRaft") - node { - name(ALICE_NAME) - p2pPort(10002) - rpcSettings { - address("localhost:10003") - adminAddress("localhost:10103") - } - rpcUsers(notaryDemoUser) - devMode(true) - extraConfig = mapOf("h2Settings" to mapOf("address" to "localhost:0")) - } - node { - name(BOB_NAME) - p2pPort(10005) - rpcSettings { - address("localhost:10006") - adminAddress("localhost:10106") - } - devMode(true) - extraConfig = mapOf("h2Settings" to mapOf("address" to "localhost:0")) - } - fun notaryNode(index: Int, nodePort: Int, clusterPort: Int? = null, configure: CordformNode.() -> Unit) = node { - name(notaryNames[index]) - val clusterAddresses = if (clusterPort != null) listOf(NetworkHostAndPort("localhost", clusterPort)) else emptyList() - notary(NotaryConfig(validating = true, serviceLegalName = clusterName, raft = RaftConfig(NetworkHostAndPort("localhost", nodePort), clusterAddresses))) - extraConfig = mapOf("h2Settings" to mapOf("address" to "localhost:0")) - configure() - devMode(true) - } - notaryNode(0, 10008) { - p2pPort(10009) - rpcSettings { - address("localhost:10010") - adminAddress("localhost:10110") - } - devMode(true) - } - notaryNode(1, 10012, 10008) { - p2pPort(10013) - rpcSettings { - address("localhost:10014") - adminAddress("localhost:10114") - } - devMode(true) - } - notaryNode(2, 10016, 10008) { - p2pPort(10017) - rpcSettings { - address("localhost:10018") - adminAddress("localhost:10118") - } - devMode(true) - } - } - - override fun setup(context: CordformContext) { - } -} diff --git a/samples/notary-demo/src/main/kotlin/net/corda/notarydemo/SingleNotaryCordform.kt b/samples/notary-demo/src/main/kotlin/net/corda/notarydemo/SingleNotaryCordform.kt deleted file mode 100644 index b2ebaac841..0000000000 --- a/samples/notary-demo/src/main/kotlin/net/corda/notarydemo/SingleNotaryCordform.kt +++ /dev/null @@ -1,58 +0,0 @@ -package net.corda.notarydemo - -import net.corda.cordform.CordformContext -import net.corda.cordform.CordformDefinition -import net.corda.node.services.Permissions.Companion.all -import net.corda.node.services.config.NotaryConfig -import net.corda.testing.core.ALICE_NAME -import net.corda.testing.core.BOB_NAME -import net.corda.testing.core.DUMMY_NOTARY_NAME -import net.corda.testing.node.User -import net.corda.testing.node.internal.demorun.* -import java.nio.file.Paths - -fun main(args: Array) = SingleNotaryCordform().nodeRunner().deployAndRunNodes() - -val notaryDemoUser = User("demou", "demop", setOf(all())) - -// This is not the intended final design for how to use CordformDefinition, please treat this as experimental and DO -// NOT use this as a design to copy. -class SingleNotaryCordform : CordformDefinition() { - init { - nodesDirectory = Paths.get("build", "nodes", "nodesSingle") - node { - name(ALICE_NAME) - p2pPort(10002) - rpcSettings { - address("localhost:10003") - adminAddress("localhost:10103") - } - rpcUsers(notaryDemoUser) - devMode(true) - extraConfig = mapOf("h2Settings" to mapOf("address" to "localhost:0")) - } - node { - name(BOB_NAME) - p2pPort(10005) - rpcSettings { - address("localhost:10006") - adminAddress("localhost:10106") - } - devMode(true) - extraConfig = mapOf("h2Settings" to mapOf("address" to "localhost:0")) - } - node { - name(DUMMY_NOTARY_NAME) - p2pPort(10009) - rpcSettings { - address("localhost:10010") - adminAddress("localhost:10110") - } - notary(NotaryConfig(validating = true)) - devMode(true) - extraConfig = mapOf("h2Settings" to mapOf("address" to "localhost:0")) - } - } - - override fun setup(context: CordformContext) {} -} diff --git a/testing/node-driver/build.gradle b/testing/node-driver/build.gradle index 90f551c4aa..102249761e 100644 --- a/testing/node-driver/build.gradle +++ b/testing/node-driver/build.gradle @@ -26,7 +26,6 @@ sourceSets { dependencies { compile project(':test-utils') - compile "net.corda.plugins:cordform-common:$gradle_plugins_version" // Integration test helpers testCompile "org.assertj:assertj-core:$assertj_version" diff --git a/testing/node-driver/src/main/kotlin/net/corda/testing/node/internal/DriverDSLImpl.kt b/testing/node-driver/src/main/kotlin/net/corda/testing/node/internal/DriverDSLImpl.kt index 4d5cfce1aa..10f6392bd1 100644 --- a/testing/node-driver/src/main/kotlin/net/corda/testing/node/internal/DriverDSLImpl.kt +++ b/testing/node-driver/src/main/kotlin/net/corda/testing/node/internal/DriverDSLImpl.kt @@ -1,14 +1,11 @@ package net.corda.testing.node.internal -import com.google.common.collect.HashMultimap import com.google.common.util.concurrent.ThreadFactoryBuilder import com.typesafe.config.Config import com.typesafe.config.ConfigFactory import com.typesafe.config.ConfigRenderOptions import com.typesafe.config.ConfigValueFactory import net.corda.client.rpc.internal.createCordaRPCClientWithInternalSslAndClassLoader -import net.corda.cordform.CordformContext -import net.corda.cordform.CordformNode import net.corda.core.concurrent.CordaFuture import net.corda.core.concurrent.firstOf import net.corda.core.identity.CordaX500Name @@ -33,7 +30,6 @@ import net.corda.node.utilities.registration.NodeRegistrationHelper import net.corda.nodeapi.internal.DevIdentityGenerator import net.corda.nodeapi.internal.SignedNodeInfo import net.corda.nodeapi.internal.addShutdownHook -import net.corda.nodeapi.internal.config.parseAs import net.corda.nodeapi.internal.config.toConfig import net.corda.nodeapi.internal.crypto.X509KeyStore import net.corda.nodeapi.internal.crypto.X509Utilities @@ -52,8 +48,6 @@ import net.corda.testing.internal.setGlobalSerialization import net.corda.testing.node.ClusterSpec import net.corda.testing.node.NotarySpec import net.corda.testing.node.User -import net.corda.testing.node.internal.DriverDSLImpl.ClusterType.NON_VALIDATING_RAFT -import net.corda.testing.node.internal.DriverDSLImpl.ClusterType.VALIDATING_RAFT import net.corda.testing.node.internal.DriverDSLImpl.Companion.cordappsInCurrentAndAdditionalPackages import okhttp3.OkHttpClient import okhttp3.Request @@ -309,97 +303,6 @@ class DriverDSLImpl( NON_VALIDATING_BFT(false, CordaX500Name("BFT", "Zurich", "CH")) } - // TODO remove this - internal fun startCordformNodes(cordforms: List): CordaFuture<*> { - check(notarySpecs.isEmpty()) { "Specify notaries in the CordformDefinition" } - check(compatibilityZone == null) { "Cordform nodes cannot be run with compatibilityZoneURL" } - - val clusterNodes = HashMultimap.create() - val notaryInfos = ArrayList() - - // Go though the node definitions and pick out the notaries so that we can generate their identities to be used - // in the network parameters - for (cordform in cordforms) { - if (cordform.notary == null) continue - val name = CordaX500Name.parse(cordform.name) - val notaryConfig = ConfigFactory.parseMap(cordform.notary).parseAs() - // We need to first group the nodes that form part of a cluster. We assume for simplicity that nodes of the - // same cluster type and validating flag are part of the same cluster. - when { - notaryConfig.raft != null -> { - val key = if (notaryConfig.validating) VALIDATING_RAFT else NON_VALIDATING_RAFT - clusterNodes.put(key, name) - } - notaryConfig.bftSMaRt != null -> clusterNodes.put(ClusterType.NON_VALIDATING_BFT, name) - else -> { - // We have all we need here to generate the identity for single node notaries - val identity = DevIdentityGenerator.installKeyStoreWithNodeIdentity(baseDirectory(name), legalName = name) - notaryInfos += NotaryInfo(identity, notaryConfig.validating) - } - } - } - - clusterNodes.asMap().forEach { type, nodeNames -> - val identity = if (type == ClusterType.NON_VALIDATING_RAFT || type == ClusterType.VALIDATING_RAFT) { - DevIdentityGenerator.generateDistributedNotarySingularIdentity( - dirs = nodeNames.map { baseDirectory(it) }, - notaryName = type.clusterName - ) - } else { - DevIdentityGenerator.generateDistributedNotaryCompositeIdentity( - dirs = nodeNames.map { baseDirectory(it) }, - notaryName = type.clusterName - ) - } - notaryInfos += NotaryInfo(identity, type.validating) - } - - val localNetworkMap = LocalNetworkMap(notaryInfos) - - return cordforms.map { - val startedNode = startCordformNode(it, localNetworkMap) - if (it.webAddress != null) { - // Start a webserver if an address for it was specified - startedNode.flatMap { startWebserver(it) } - } else { - startedNode - } - }.transpose() - } - - // TODO remove this - private fun startCordformNode(cordform: CordformNode, localNetworkMap: LocalNetworkMap): CordaFuture { - val name = CordaX500Name.parse(cordform.name) - // TODO We shouldn't have to allocate an RPC or web address if they're not specified. We're having to do this because of startNodeInternal - val rpcAddress = if (cordform.rpcAddress == null) { - val overrides = mutableMapOf("rpcSettings.address" to portAllocation.nextHostAndPort().toString()) - cordform.config.apply { - overrides += "rpcSettings.adminAddress" to portAllocation.nextHostAndPort().toString() - } - overrides - } else { - val overrides = mutableMapOf() - cordform.config.apply { - overrides += "rpcSettings.adminAddress" to portAllocation.nextHostAndPort().toString() - } - overrides - } - val webAddress = cordform.webAddress?.let { NetworkHostAndPort.parse(it) } ?: portAllocation.nextHostAndPort() - val notary = if (cordform.notary != null) mapOf("notary" to cordform.notary) else emptyMap() - val rpcUsers = cordform.rpcUsers - - val rawConfig = cordform.config + rpcAddress + notary + mapOf( - "rpcUsers" to if (rpcUsers.isEmpty()) defaultRpcUserList else rpcUsers - ) - val typesafe = ConfigHelper.loadConfig( - baseDirectory = baseDirectory(name), - allowMissingConfig = true, - configOverrides = rawConfig.toNodeOnly() - ) - val config = NodeConfig(typesafe).checkAndOverrideForInMemoryDB() - return startNodeInternal(config, webAddress, null, "512m", localNetworkMap, emptySet()) - } - @Suppress("DEPRECATION") private fun queryWebserver(handle: NodeHandle, process: Process): WebserverHandle { val protocol = if ((handle as NodeHandleInternal).useHTTPS) "https://" else "http://" @@ -993,7 +896,7 @@ private class NetworkVisibilityController { } } -interface InternalDriverDSL : DriverDSL, CordformContext { +interface InternalDriverDSL : DriverDSL { private companion object { private val DEFAULT_POLL_INTERVAL = 500.millis private const val DEFAULT_WARN_COUNT = 120 @@ -1001,7 +904,7 @@ interface InternalDriverDSL : DriverDSL, CordformContext { val shutdownManager: ShutdownManager - override fun baseDirectory(nodeName: String): Path = baseDirectory(CordaX500Name.parse(nodeName)) + fun baseDirectory(nodeName: String): Path = baseDirectory(CordaX500Name.parse(nodeName)) /** * Polls a function until it returns a non-null value. Note that there is no timeout on the polling. @@ -1205,4 +1108,5 @@ private fun Config.toNodeOnly(): Config { return if (hasPath("webAddress")) withoutPath("webAddress").withoutPath("useHTTPS") else this } -internal fun DriverParameters.cordappsForAllNodes(): Set = cordappsForAllNodes ?: cordappsInCurrentAndAdditionalPackages(extraCordappPackagesToScan) \ No newline at end of file +internal fun DriverParameters.cordappsForAllNodes(): Set = cordappsForAllNodes + ?: cordappsInCurrentAndAdditionalPackages(extraCordappPackagesToScan) \ No newline at end of file diff --git a/testing/node-driver/src/main/kotlin/net/corda/testing/node/internal/demorun/CordformNodeRunner.kt b/testing/node-driver/src/main/kotlin/net/corda/testing/node/internal/demorun/CordformNodeRunner.kt deleted file mode 100644 index c023e7cf46..0000000000 --- a/testing/node-driver/src/main/kotlin/net/corda/testing/node/internal/demorun/CordformNodeRunner.kt +++ /dev/null @@ -1,78 +0,0 @@ -package net.corda.testing.node.internal.demorun - -import net.corda.cordform.CordformDefinition -import net.corda.cordform.CordformNode -import net.corda.core.internal.deleteRecursively -import net.corda.core.utilities.NetworkHostAndPort -import net.corda.core.utilities.getOrThrow -import net.corda.testing.driver.JmxPolicy -import net.corda.testing.driver.PortAllocation -import net.corda.testing.node.internal.DriverDSLImpl.Companion.cordappsInCurrentAndAdditionalPackages -import net.corda.testing.node.internal.internalDriver - -/** - * Creates a demo runner for this cordform definition - */ -fun CordformDefinition.nodeRunner() = CordformNodeRunner(this) - -/** - * A node runner creates and runs nodes for a given [[CordformDefinition]]. - */ -class CordformNodeRunner(private val cordformDefinition: CordformDefinition) { - private var extraPackagesToScan = emptyList() - - /** - * Builder method to sets the extra cordapp scan packages - */ - fun scanPackages(packages: List): CordformNodeRunner { - extraPackagesToScan = packages - return this - } - - fun clean() { - System.err.println("Deleting: ${cordformDefinition.nodesDirectory}") - cordformDefinition.nodesDirectory.deleteRecursively() - } - - /** - * Deploy the nodes specified in the given [CordformDefinition]. This will block until all the nodes and webservers - * have terminated. - */ - fun deployAndRunNodes() { - runNodes(waitForAllNodesToFinish = true) { } - } - - /** - * Deploy the nodes specified in the given [CordformDefinition] and then execute the given [block] once all the nodes - * and webservers are up. After execution all these processes will be terminated. - */ - fun deployAndRunNodesAndThen(block: () -> Unit) { - runNodes(waitForAllNodesToFinish = false, block = block) - } - - private fun runNodes(waitForAllNodesToFinish: Boolean, block: () -> Unit) { - clean() - val nodes = cordformDefinition.nodeConfigurers.map { configurer -> CordformNode().also { configurer.accept(it) } } - val maxPort = nodes - .flatMap { listOf(it.p2pAddress, it.rpcAddress, it.webAddress) } - .mapNotNull { address -> address?.let { NetworkHostAndPort.parse(it).port } } - .max()!! - internalDriver( - jmxPolicy = JmxPolicy(true), - driverDirectory = cordformDefinition.nodesDirectory, - // Notaries are manually specified in Cordform so we don't want the driver automatically starting any - notarySpecs = emptyList(), - // Start from after the largest port used to prevent port clash - portAllocation = PortAllocation.Incremental(maxPort + 1), - waitForAllNodesToFinish = waitForAllNodesToFinish, - cordappsForAllNodes = cordappsInCurrentAndAdditionalPackages(extraPackagesToScan) - ) { - cordformDefinition.setup(this) - startCordformNodes(nodes).getOrThrow() // Only proceed once everything is up and running - println("All nodes and webservers are ready...") - block() - } - } -} - - diff --git a/testing/node-driver/src/main/kotlin/net/corda/testing/node/internal/demorun/CordformUtils.kt b/testing/node-driver/src/main/kotlin/net/corda/testing/node/internal/demorun/CordformUtils.kt deleted file mode 100644 index b40b1695e2..0000000000 --- a/testing/node-driver/src/main/kotlin/net/corda/testing/node/internal/demorun/CordformUtils.kt +++ /dev/null @@ -1,34 +0,0 @@ -@file:JvmName("CordformUtils") - -package net.corda.testing.node.internal.demorun - -import net.corda.cordform.CordformDefinition -import net.corda.cordform.CordformNode -import net.corda.cordform.RpcSettings -import net.corda.cordform.SslOptions -import net.corda.core.identity.CordaX500Name -import net.corda.node.services.config.NotaryConfig -import net.corda.nodeapi.internal.config.toConfig -import net.corda.testing.node.User - -fun CordformDefinition.node(configure: CordformNode.() -> Unit) { - addNode { cordformNode -> cordformNode.configure() } -} - -fun CordformNode.name(name: CordaX500Name) = name(name.toString()) - -fun CordformNode.rpcUsers(vararg users: User) { - rpcUsers = users.map { it.toConfig().root().unwrapped() } -} - -fun CordformNode.notary(notaryConfig: NotaryConfig) { - notary = notaryConfig.toConfig().root().unwrapped() -} - -fun CordformNode.rpcSettings(configure: RpcSettings.() -> Unit) { - RpcSettings().also(configure).also(this::rpcSettings) -} - -fun RpcSettings.ssl(configure: SslOptions.() -> Unit) { - SslOptions().also(configure).also(this::ssl) -} \ No newline at end of file diff --git a/tools/demobench/build.gradle b/tools/demobench/build.gradle index 9083d042b0..d62249294a 100644 --- a/tools/demobench/build.gradle +++ b/tools/demobench/build.gradle @@ -56,8 +56,6 @@ dependencies { // Controls FX: more java FX components http://fxexperience.com/controlsfx/ compile "org.controlsfx:controlsfx:$controlsfx_version" - compile "net.corda.plugins:cordform-common:$gradle_plugins_version" - compile project(':client:rpc') compile project(':finance') From bc330bd9890d41904bbeea6e579f5fc4438872b6 Mon Sep 17 00:00:00 2001 From: Christian Sailer Date: Fri, 24 Aug 2018 17:17:22 +0100 Subject: [PATCH 5/6] ENT-2414 Named caches (#3848) * Add named caches and apply to NonInvalidingUnboundCache and all usages. * Add named caches and apply to NonInvalidingCache and all usages. * Add named caches and apply to NonInvalidingWeightBasedCache and all usages. * Move NamedCache to core/internal * Remove type `NamedCache` and `NamedLoadingCache` * Suppressed 'name not used' warning, added comment, and fixed generic parameters on the buildNamed functions. * Use `buildNamed` in all caffeine instances in production code. Not using it for caches that are created in test code. * Add checks for the cache name * Formatting * Minor code review revisions --- .idea/compiler.xml | 4 +- .../client/jfx/model/NetworkIdentityModel.kt | 3 +- .../rpc/internal/RPCClientProxyHandler.kt | 9 +--- core/build.gradle | 3 ++ .../net/corda/core/internal/NamedCache.kt | 41 +++++++++++++++++++ .../net/corda/core/internal/NamedCacheTest.kt | 24 +++++++++++ .../nodeapi/internal/DeduplicationChecker.kt | 5 ++- .../persistence/HibernateConfiguration.kt | 3 +- .../security/RPCSecurityManagerImpl.kt | 3 +- .../identity/PersistentIdentityService.kt | 2 + .../keys/PersistentKeyManagementService.kt | 1 + .../messaging/P2PMessageDeduplicator.kt | 1 + .../node/services/messaging/RPCServer.kt | 3 +- .../network/PersistentNetworkMapCache.kt | 8 +++- .../persistence/DBTransactionStorage.kt | 1 + .../persistence/NodeAttachmentService.kt | 5 ++- .../NodePropertiesPersistentStore.kt | 1 + .../BFTNonValidatingNotaryService.kt | 1 + .../PersistentUniquenessProvider.kt | 1 + .../transactions/RaftUniquenessProvider.kt | 1 + .../upgrade/ContractUpgradeServiceImpl.kt | 1 + .../node/utilities/AppendOnlyPersistentMap.kt | 4 ++ .../node/utilities/NonInvalidatingCache.kt | 17 ++++---- .../utilities/NonInvalidatingUnboundCache.kt | 9 ++-- .../net/corda/node/utilities/PersistentMap.kt | 2 + .../AppendOnlyPersistentMapTest.kt | 1 + .../node/utilities/PersistentMapTests.kt | 1 + .../internal/SerializationScheme.kt | 3 +- .../explorer/identicon/IdenticonRenderer.kt | 3 +- 29 files changed, 130 insertions(+), 31 deletions(-) create mode 100644 core/src/main/kotlin/net/corda/core/internal/NamedCache.kt create mode 100644 core/src/test/kotlin/net/corda/core/internal/NamedCacheTest.kt diff --git a/.idea/compiler.xml b/.idea/compiler.xml index 7e061003e1..ef6407f0b3 100644 --- a/.idea/compiler.xml +++ b/.idea/compiler.xml @@ -24,6 +24,8 @@ + + @@ -233,4 +235,4 @@ - + \ No newline at end of file diff --git a/client/jfx/src/main/kotlin/net/corda/client/jfx/model/NetworkIdentityModel.kt b/client/jfx/src/main/kotlin/net/corda/client/jfx/model/NetworkIdentityModel.kt index 610e5129f8..0b09957678 100644 --- a/client/jfx/src/main/kotlin/net/corda/client/jfx/model/NetworkIdentityModel.kt +++ b/client/jfx/src/main/kotlin/net/corda/client/jfx/model/NetworkIdentityModel.kt @@ -6,6 +6,7 @@ import javafx.collections.FXCollections import javafx.collections.ObservableList import net.corda.client.jfx.utils.* import net.corda.core.identity.AnonymousParty +import net.corda.core.internal.buildNamed import net.corda.core.node.NodeInfo import net.corda.core.node.services.NetworkMapCache.MapChange import java.security.PublicKey @@ -30,7 +31,7 @@ class NetworkIdentityModel { private val rpcProxy by observableValue(NodeMonitorModel::proxyObservable) private val identityCache = Caffeine.newBuilder() - .build>({ publicKey -> + .buildNamed>("NetworkIdentityModel_identity", { publicKey -> publicKey.let { rpcProxy.map { it?.cordaRPCOps?.nodeInfoFromParty(AnonymousParty(publicKey)) } } }) val notaries = ChosenList(rpcProxy.map { FXCollections.observableList(it?.cordaRPCOps?.notaryIdentities() ?: emptyList()) }, "notaries") diff --git a/client/rpc/src/main/kotlin/net/corda/client/rpc/internal/RPCClientProxyHandler.kt b/client/rpc/src/main/kotlin/net/corda/client/rpc/internal/RPCClientProxyHandler.kt index 8b45999554..f10607ad97 100644 --- a/client/rpc/src/main/kotlin/net/corda/client/rpc/internal/RPCClientProxyHandler.kt +++ b/client/rpc/src/main/kotlin/net/corda/client/rpc/internal/RPCClientProxyHandler.kt @@ -14,10 +14,7 @@ import net.corda.client.rpc.internal.serialization.amqp.RpcClientObservableDeSer import net.corda.core.context.Actor import net.corda.core.context.Trace import net.corda.core.context.Trace.InvocationId -import net.corda.core.internal.LazyStickyPool -import net.corda.core.internal.LifeCycle -import net.corda.core.internal.ThreadBox -import net.corda.core.internal.times +import net.corda.core.internal.* import net.corda.core.messaging.RPCOps import net.corda.core.serialization.SerializationContext import net.corda.core.serialization.serialize @@ -162,9 +159,7 @@ class RPCClientProxyHandler( observablesToReap.locked { observables.add(observableId) } } return Caffeine.newBuilder(). - weakValues(). - removalListener(onObservableRemove).executor(SameThreadExecutor.getExecutor()). - build() + weakValues().removalListener(onObservableRemove).executor(SameThreadExecutor.getExecutor()).buildNamed("RpcClientProxyHandler_rpcObservable") } private var sessionFactory: ClientSessionFactory? = null diff --git a/core/build.gradle b/core/build.gradle index 0039fa25af..671b7b616d 100644 --- a/core/build.gradle +++ b/core/build.gradle @@ -84,6 +84,9 @@ dependencies { // Guava: Google utilities library. testCompile "com.google.guava:guava:$guava_version" + // For caches rather than guava + compile "com.github.ben-manes.caffeine:caffeine:$caffeine_version" + // Smoke tests do NOT have any Node code on the classpath! smokeTestCompile project(':smoke-test-utils') smokeTestCompile "org.assertj:assertj-core:${assertj_version}" diff --git a/core/src/main/kotlin/net/corda/core/internal/NamedCache.kt b/core/src/main/kotlin/net/corda/core/internal/NamedCache.kt new file mode 100644 index 0000000000..7b54b6ceb4 --- /dev/null +++ b/core/src/main/kotlin/net/corda/core/internal/NamedCache.kt @@ -0,0 +1,41 @@ +package net.corda.core.internal + +import com.github.benmanes.caffeine.cache.Cache +import com.github.benmanes.caffeine.cache.CacheLoader +import com.github.benmanes.caffeine.cache.Caffeine +import com.github.benmanes.caffeine.cache.LoadingCache + +/** + * Restrict the allowed characters of a cache name - this ensures that each cache has a name, and that + * the name can be used to create a file name or a metric name. + */ +internal fun checkCacheName(name: String) { + require(!name.isBlank()) + require(allowedChars.matches(name)) +} + +private val allowedChars = Regex("^[0-9A-Za-z_.]*\$") + +/* buildNamed is the central helper method to build caffeine caches in Corda. + * This allows to easily add tweaks to all caches built in Corda, and also forces + * cache users to give their cache a (meaningful) name that can be used e.g. for + * capturing cache traces etc. + * + * Currently it is not used in this version of CORDA, but there are plans to do so. + */ + +fun Caffeine.buildNamed(name: String): Cache { + checkCacheName(name) + return this.build() +} + +fun Caffeine.buildNamed(name: String, loadFunc: (K) -> V): LoadingCache { + checkCacheName(name) + return this.build(loadFunc) +} + + +fun Caffeine.buildNamed(name: String, loader: CacheLoader): LoadingCache { + checkCacheName(name) + return this.build(loader) +} diff --git a/core/src/test/kotlin/net/corda/core/internal/NamedCacheTest.kt b/core/src/test/kotlin/net/corda/core/internal/NamedCacheTest.kt new file mode 100644 index 0000000000..3358696bce --- /dev/null +++ b/core/src/test/kotlin/net/corda/core/internal/NamedCacheTest.kt @@ -0,0 +1,24 @@ +package net.corda.core.internal + +import org.junit.Test +import kotlin.test.assertEquals + +class NamedCacheTest { + fun checkNameHelper(name: String, throws: Boolean) { + var exceptionThrown = false + try { + checkCacheName(name) + } catch (e: Exception) { + exceptionThrown = true + } + assertEquals(throws, exceptionThrown) + } + + @Test + fun TestCheckCacheName() { + checkNameHelper("abc_123.234", false) + checkNameHelper("", true) + checkNameHelper("abc 123", true) + checkNameHelper("abc/323", true) + } +} \ No newline at end of file diff --git a/node-api/src/main/kotlin/net/corda/nodeapi/internal/DeduplicationChecker.kt b/node-api/src/main/kotlin/net/corda/nodeapi/internal/DeduplicationChecker.kt index 86742c6325..71d99e0fec 100644 --- a/node-api/src/main/kotlin/net/corda/nodeapi/internal/DeduplicationChecker.kt +++ b/node-api/src/main/kotlin/net/corda/nodeapi/internal/DeduplicationChecker.kt @@ -2,6 +2,7 @@ package net.corda.nodeapi.internal import com.github.benmanes.caffeine.cache.CacheLoader import com.github.benmanes.caffeine.cache.Caffeine +import net.corda.core.internal.buildNamed import java.time.Duration import java.util.concurrent.TimeUnit import java.util.concurrent.atomic.AtomicLong @@ -9,11 +10,11 @@ import java.util.concurrent.atomic.AtomicLong /** * A class allowing the deduplication of a strictly incrementing sequence number. */ -class DeduplicationChecker(cacheExpiry: Duration) { +class DeduplicationChecker(cacheExpiry: Duration, name: String = "DeduplicationChecker") { // dedupe identity -> watermark cache private val watermarkCache = Caffeine.newBuilder() .expireAfterAccess(cacheExpiry.toNanos(), TimeUnit.NANOSECONDS) - .build(WatermarkCacheLoader) + .buildNamed("${name}_watermark", WatermarkCacheLoader) private object WatermarkCacheLoader : CacheLoader { override fun load(key: Any) = AtomicLong(-1) diff --git a/node-api/src/main/kotlin/net/corda/nodeapi/internal/persistence/HibernateConfiguration.kt b/node-api/src/main/kotlin/net/corda/nodeapi/internal/persistence/HibernateConfiguration.kt index 2b809e1ce9..5afeb3fe8d 100644 --- a/node-api/src/main/kotlin/net/corda/nodeapi/internal/persistence/HibernateConfiguration.kt +++ b/node-api/src/main/kotlin/net/corda/nodeapi/internal/persistence/HibernateConfiguration.kt @@ -1,6 +1,7 @@ package net.corda.nodeapi.internal.persistence import com.github.benmanes.caffeine.cache.Caffeine +import net.corda.core.internal.buildNamed import net.corda.core.internal.castIfPossible import net.corda.core.schemas.MappedSchema import net.corda.core.utilities.contextLogger @@ -57,7 +58,7 @@ class HibernateConfiguration( } } - private val sessionFactories = Caffeine.newBuilder().maximumSize(databaseConfig.mappedSchemaCacheSize).build, SessionFactory>() + private val sessionFactories = Caffeine.newBuilder().maximumSize(databaseConfig.mappedSchemaCacheSize).buildNamed, SessionFactory>("HibernateConfiguration_sessionFactories") val sessionFactoryForRegisteredSchemas = schemas.let { logger.info("Init HibernateConfiguration for schemas: $it") diff --git a/node/src/main/kotlin/net/corda/node/internal/security/RPCSecurityManagerImpl.kt b/node/src/main/kotlin/net/corda/node/internal/security/RPCSecurityManagerImpl.kt index a3e788721a..bd7fcb9f72 100644 --- a/node/src/main/kotlin/net/corda/node/internal/security/RPCSecurityManagerImpl.kt +++ b/node/src/main/kotlin/net/corda/node/internal/security/RPCSecurityManagerImpl.kt @@ -5,6 +5,7 @@ import com.github.benmanes.caffeine.cache.Cache import com.github.benmanes.caffeine.cache.Caffeine import com.google.common.primitives.Ints import net.corda.core.context.AuthServiceId +import net.corda.core.internal.buildNamed import net.corda.core.internal.uncheckedCast import net.corda.core.utilities.loggerFor import net.corda.node.internal.DataSourceFactory @@ -308,7 +309,7 @@ private class CaffeineCacheManager(val maxSize: Long, return Caffeine.newBuilder() .expireAfterWrite(timeToLiveSeconds, TimeUnit.SECONDS) .maximumSize(maxSize) - .build() + .buildNamed("RPCSecurityManagerShiroCache_$name") .toShiroCache() } diff --git a/node/src/main/kotlin/net/corda/node/services/identity/PersistentIdentityService.kt b/node/src/main/kotlin/net/corda/node/services/identity/PersistentIdentityService.kt index 764a6be6cd..8ed683b8bf 100644 --- a/node/src/main/kotlin/net/corda/node/services/identity/PersistentIdentityService.kt +++ b/node/src/main/kotlin/net/corda/node/services/identity/PersistentIdentityService.kt @@ -35,6 +35,7 @@ class PersistentIdentityService : SingletonSerializeAsToken(), IdentityServiceIn fun createPKMap(): AppendOnlyPersistentMap { return AppendOnlyPersistentMap( + "PersistentIdentityService_partyByKey", toPersistentEntityKey = { it.toString() }, fromPersistentEntity = { Pair( @@ -51,6 +52,7 @@ class PersistentIdentityService : SingletonSerializeAsToken(), IdentityServiceIn fun createX500Map(): AppendOnlyPersistentMap { return AppendOnlyPersistentMap( + "PersistentIdentityService_partyByName", toPersistentEntityKey = { it.toString() }, fromPersistentEntity = { Pair(CordaX500Name.parse(it.name), SecureHash.parse(it.publicKeyHash)) }, toPersistentEntity = { key: CordaX500Name, value: SecureHash -> diff --git a/node/src/main/kotlin/net/corda/node/services/keys/PersistentKeyManagementService.kt b/node/src/main/kotlin/net/corda/node/services/keys/PersistentKeyManagementService.kt index 14c659f74f..fe9107a5b1 100644 --- a/node/src/main/kotlin/net/corda/node/services/keys/PersistentKeyManagementService.kt +++ b/node/src/main/kotlin/net/corda/node/services/keys/PersistentKeyManagementService.kt @@ -49,6 +49,7 @@ class PersistentKeyManagementService(val identityService: PersistentIdentityServ private companion object { fun createKeyMap(): AppendOnlyPersistentMap { return AppendOnlyPersistentMap( + "PersistentKeyManagementService_keys", toPersistentEntityKey = { it.toStringShort() }, fromPersistentEntity = { Pair(Crypto.decodePublicKey(it.publicKey), Crypto.decodePrivateKey( it.privateKey)) }, diff --git a/node/src/main/kotlin/net/corda/node/services/messaging/P2PMessageDeduplicator.kt b/node/src/main/kotlin/net/corda/node/services/messaging/P2PMessageDeduplicator.kt index ddcb02a80d..fcf89d2177 100644 --- a/node/src/main/kotlin/net/corda/node/services/messaging/P2PMessageDeduplicator.kt +++ b/node/src/main/kotlin/net/corda/node/services/messaging/P2PMessageDeduplicator.kt @@ -25,6 +25,7 @@ class P2PMessageDeduplicator(private val database: CordaPersistence) { private fun createProcessedMessages(): AppendOnlyPersistentMap { return AppendOnlyPersistentMap( + "P2PMessageDeduplicator_processedMessages", toPersistentEntityKey = { it.toString }, fromPersistentEntity = { Pair(DeduplicationId(it.id), MessageMeta(it.insertionTime, it.hash, it.seqNo)) }, toPersistentEntity = { key: DeduplicationId, value: MessageMeta -> diff --git a/node/src/main/kotlin/net/corda/node/services/messaging/RPCServer.kt b/node/src/main/kotlin/net/corda/node/services/messaging/RPCServer.kt index 9fcb4a83f0..f47f97dc7b 100644 --- a/node/src/main/kotlin/net/corda/node/services/messaging/RPCServer.kt +++ b/node/src/main/kotlin/net/corda/node/services/messaging/RPCServer.kt @@ -13,6 +13,7 @@ import net.corda.core.context.Trace import net.corda.core.context.Trace.InvocationId import net.corda.core.identity.CordaX500Name import net.corda.core.internal.LifeCycle +import net.corda.core.internal.buildNamed import net.corda.core.messaging.RPCOps import net.corda.core.serialization.SerializationContext import net.corda.core.serialization.SerializationDefaults @@ -153,7 +154,7 @@ class RPCServer( log.debug { "Unsubscribing from Observable with id $key because of $cause" } value!!.subscription.unsubscribe() } - return Caffeine.newBuilder().removalListener(onObservableRemove).executor(SameThreadExecutor.getExecutor()).build() + return Caffeine.newBuilder().removalListener(onObservableRemove).executor(SameThreadExecutor.getExecutor()).buildNamed("RPCServer_observableSubscription") } fun start(activeMqServerControl: ActiveMQServerControl) { diff --git a/node/src/main/kotlin/net/corda/node/services/network/PersistentNetworkMapCache.kt b/node/src/main/kotlin/net/corda/node/services/network/PersistentNetworkMapCache.kt index 8c77573259..c2fbf40dac 100644 --- a/node/src/main/kotlin/net/corda/node/services/network/PersistentNetworkMapCache.kt +++ b/node/src/main/kotlin/net/corda/node/services/network/PersistentNetworkMapCache.kt @@ -122,7 +122,9 @@ open class PersistentNetworkMapCache(private val database: CordaPersistence, override fun getNodesByLegalIdentityKey(identityKey: PublicKey): List = nodesByKeyCache[identityKey]!! - private val nodesByKeyCache = NonInvalidatingCache>(1024) { key -> + private val nodesByKeyCache = NonInvalidatingCache>( + "PersistentNetworkMap_nodesByKey", + 1024) { key -> database.transaction { queryByIdentityKey(session, key) } } @@ -140,7 +142,9 @@ open class PersistentNetworkMapCache(private val database: CordaPersistence, return identityByLegalNameCache.get(name)!!.orElse(null) } - private val identityByLegalNameCache = NonInvalidatingCache>(1024) { name -> + private val identityByLegalNameCache = NonInvalidatingCache>( + "PersistentNetworkMap_idByLegalName", + 1024) { name -> Optional.ofNullable(database.transaction { queryIdentityByLegalName(session, name) }) } diff --git a/node/src/main/kotlin/net/corda/node/services/persistence/DBTransactionStorage.kt b/node/src/main/kotlin/net/corda/node/services/persistence/DBTransactionStorage.kt index 9d958870c4..1fe72c50a9 100644 --- a/node/src/main/kotlin/net/corda/node/services/persistence/DBTransactionStorage.kt +++ b/node/src/main/kotlin/net/corda/node/services/persistence/DBTransactionStorage.kt @@ -52,6 +52,7 @@ class DBTransactionStorage(cacheSizeBytes: Long, private val database: CordaPers fun createTransactionsMap(maxSizeInBytes: Long) : AppendOnlyPersistentMapBase { return WeightBasedAppendOnlyPersistentMap( + name = "DBTransactionStorage_transactions", toPersistentEntityKey = { it.toString() }, fromPersistentEntity = { Pair(SecureHash.parse(it.txId), diff --git a/node/src/main/kotlin/net/corda/node/services/persistence/NodeAttachmentService.kt b/node/src/main/kotlin/net/corda/node/services/persistence/NodeAttachmentService.kt index 93a8753616..78a62f2149 100644 --- a/node/src/main/kotlin/net/corda/node/services/persistence/NodeAttachmentService.kt +++ b/node/src/main/kotlin/net/corda/node/services/persistence/NodeAttachmentService.kt @@ -206,6 +206,7 @@ class NodeAttachmentService( // a problem somewhere else or this needs to be revisited. private val attachmentContentCache = NonInvalidatingWeightBasedCache( + name = "NodeAttachmentService_attachmentContent", maxWeight = attachmentContentCacheSize, weigher = Weigher>> { key, value -> key.size + if (value.isPresent) value.get().second.size else 0 }, loadFunction = { Optional.ofNullable(loadAttachmentContent(it)) } @@ -226,7 +227,9 @@ class NodeAttachmentService( } } - private val attachmentCache = NonInvalidatingCache>(attachmentCacheBound) { key -> + private val attachmentCache = NonInvalidatingCache>( + "NodeAttachmentService_attachemnt", + attachmentCacheBound) { key -> Optional.ofNullable(createAttachment(key)) } diff --git a/node/src/main/kotlin/net/corda/node/services/persistence/NodePropertiesPersistentStore.kt b/node/src/main/kotlin/net/corda/node/services/persistence/NodePropertiesPersistentStore.kt index cc6720c0ed..ae10d94435 100644 --- a/node/src/main/kotlin/net/corda/node/services/persistence/NodePropertiesPersistentStore.kt +++ b/node/src/main/kotlin/net/corda/node/services/persistence/NodePropertiesPersistentStore.kt @@ -48,6 +48,7 @@ class FlowsDrainingModeOperationsImpl(readPhysicalNodeId: () -> String, private } internal val map = PersistentMap( + "FlowDrainingMode_nodeProperties", { key -> key }, { entity -> entity.key to entity.value!! }, NodePropertiesPersistentStore::DBNodeProperty, diff --git a/node/src/main/kotlin/net/corda/node/services/transactions/BFTNonValidatingNotaryService.kt b/node/src/main/kotlin/net/corda/node/services/transactions/BFTNonValidatingNotaryService.kt index b2aaac22b1..d6963e7130 100644 --- a/node/src/main/kotlin/net/corda/node/services/transactions/BFTNonValidatingNotaryService.kt +++ b/node/src/main/kotlin/net/corda/node/services/transactions/BFTNonValidatingNotaryService.kt @@ -102,6 +102,7 @@ class BFTNonValidatingNotaryService( private fun createMap(): AppendOnlyPersistentMap { return AppendOnlyPersistentMap( + "BFTNonValidatingNotaryService_transactions", toPersistentEntityKey = { PersistentStateRef(it.txhash.toString(), it.index) }, fromPersistentEntity = { //TODO null check will become obsolete after making DB/JPA columns not nullable diff --git a/node/src/main/kotlin/net/corda/node/services/transactions/PersistentUniquenessProvider.kt b/node/src/main/kotlin/net/corda/node/services/transactions/PersistentUniquenessProvider.kt index a6d8eaa207..e0ab98b9e5 100644 --- a/node/src/main/kotlin/net/corda/node/services/transactions/PersistentUniquenessProvider.kt +++ b/node/src/main/kotlin/net/corda/node/services/transactions/PersistentUniquenessProvider.kt @@ -77,6 +77,7 @@ class PersistentUniquenessProvider(val clock: Clock) : UniquenessProvider, Singl private val log = contextLogger() fun createMap(): AppendOnlyPersistentMap = AppendOnlyPersistentMap( + "PersistentUniquenessProvider_transactions", toPersistentEntityKey = { PersistentStateRef(it.txhash.toString(), it.index) }, fromPersistentEntity = { //TODO null check will become obsolete after making DB/JPA columns not nullable diff --git a/node/src/main/kotlin/net/corda/node/services/transactions/RaftUniquenessProvider.kt b/node/src/main/kotlin/net/corda/node/services/transactions/RaftUniquenessProvider.kt index 0065ada6b9..1e5c46d28b 100644 --- a/node/src/main/kotlin/net/corda/node/services/transactions/RaftUniquenessProvider.kt +++ b/node/src/main/kotlin/net/corda/node/services/transactions/RaftUniquenessProvider.kt @@ -61,6 +61,7 @@ class RaftUniquenessProvider( private val log = contextLogger() fun createMap(): AppendOnlyPersistentMap, CommittedState, PersistentStateRef> = AppendOnlyPersistentMap( + "RaftUniquenessProvider_transactions", toPersistentEntityKey = { PersistentStateRef(it) }, fromPersistentEntity = { val txId = it.id.txId diff --git a/node/src/main/kotlin/net/corda/node/services/upgrade/ContractUpgradeServiceImpl.kt b/node/src/main/kotlin/net/corda/node/services/upgrade/ContractUpgradeServiceImpl.kt index 5d1e95f9d7..e6924dd3c7 100644 --- a/node/src/main/kotlin/net/corda/node/services/upgrade/ContractUpgradeServiceImpl.kt +++ b/node/src/main/kotlin/net/corda/node/services/upgrade/ContractUpgradeServiceImpl.kt @@ -28,6 +28,7 @@ class ContractUpgradeServiceImpl : ContractUpgradeService, SingletonSerializeAsT private companion object { fun createContractUpgradesMap(): PersistentMap { return PersistentMap( + "ContractUpgradeService_upgrades", toPersistentEntityKey = { it }, fromPersistentEntity = { Pair(it.stateRef, it.upgradedContractClassName ?: "") }, toPersistentEntity = { key: String, value: String -> diff --git a/node/src/main/kotlin/net/corda/node/utilities/AppendOnlyPersistentMap.kt b/node/src/main/kotlin/net/corda/node/utilities/AppendOnlyPersistentMap.kt index 549c2d2486..274ceb6c5a 100644 --- a/node/src/main/kotlin/net/corda/node/utilities/AppendOnlyPersistentMap.kt +++ b/node/src/main/kotlin/net/corda/node/utilities/AppendOnlyPersistentMap.kt @@ -309,6 +309,7 @@ abstract class AppendOnlyPersistentMapBase( // Open for tests to override open class AppendOnlyPersistentMap( + name: String, toPersistentEntityKey: (K) -> EK, fromPersistentEntity: (E) -> Pair, toPersistentEntity: (key: K, value: V) -> E, @@ -321,6 +322,7 @@ open class AppendOnlyPersistentMap( persistentEntityClass) { //TODO determine cacheBound based on entity class later or with node config allowing tuning, or using some heuristic based on heap size override val cache = NonInvalidatingCache( + name = name, bound = cacheBound, loadFunction = { key: K -> // This gets called if a value is read and the cache has no Transactional for this key yet. @@ -353,6 +355,7 @@ open class AppendOnlyPersistentMap( // Same as above, but with weighted values (e.g. memory footprint sensitive). class WeightBasedAppendOnlyPersistentMap( + name: String, toPersistentEntityKey: (K) -> EK, fromPersistentEntity: (E) -> Pair, toPersistentEntity: (key: K, value: V) -> E, @@ -365,6 +368,7 @@ class WeightBasedAppendOnlyPersistentMap( toPersistentEntity, persistentEntityClass) { override val cache = NonInvalidatingWeightBasedCache( + name, maxWeight = maxWeight, weigher = Weigher { key, value -> weighingFunc(key, value) }, loadFunction = { key: K -> diff --git a/node/src/main/kotlin/net/corda/node/utilities/NonInvalidatingCache.kt b/node/src/main/kotlin/net/corda/node/utilities/NonInvalidatingCache.kt index 5de030ddf8..814ef0102e 100644 --- a/node/src/main/kotlin/net/corda/node/utilities/NonInvalidatingCache.kt +++ b/node/src/main/kotlin/net/corda/node/utilities/NonInvalidatingCache.kt @@ -4,18 +4,19 @@ import com.github.benmanes.caffeine.cache.CacheLoader import com.github.benmanes.caffeine.cache.Caffeine import com.github.benmanes.caffeine.cache.LoadingCache import com.github.benmanes.caffeine.cache.Weigher +import net.corda.core.internal.buildNamed class NonInvalidatingCache private constructor( val cache: LoadingCache ) : LoadingCache by cache { - constructor(bound: Long, loadFunction: (K) -> V) : - this(buildCache(bound, loadFunction)) + constructor(name: String, bound: Long, loadFunction: (K) -> V) : + this(buildCache(name, bound, loadFunction)) private companion object { - private fun buildCache(bound: Long, loadFunction: (K) -> V): LoadingCache { + private fun buildCache(name: String, bound: Long, loadFunction: (K) -> V): LoadingCache { val builder = Caffeine.newBuilder().maximumSize(bound) - return builder.build(NonInvalidatingCacheLoader(loadFunction)) + return builder.buildNamed(name, NonInvalidatingCacheLoader(loadFunction)) } } @@ -32,13 +33,13 @@ class NonInvalidatingCache private constructor( class NonInvalidatingWeightBasedCache private constructor( val cache: LoadingCache ) : LoadingCache by cache { - constructor (maxWeight: Long, weigher: Weigher, loadFunction: (K) -> V) : - this(buildCache(maxWeight, weigher, loadFunction)) + constructor (name: String, maxWeight: Long, weigher: Weigher, loadFunction: (K) -> V) : + this(buildCache(name, maxWeight, weigher, loadFunction)) private companion object { - private fun buildCache(maxWeight: Long, weigher: Weigher, loadFunction: (K) -> V): LoadingCache { + private fun buildCache(name: String, maxWeight: Long, weigher: Weigher, loadFunction: (K) -> V): LoadingCache { val builder = Caffeine.newBuilder().maximumWeight(maxWeight).weigher(weigher) - return builder.build(NonInvalidatingCache.NonInvalidatingCacheLoader(loadFunction)) + return builder.buildNamed(name, NonInvalidatingCache.NonInvalidatingCacheLoader(loadFunction)) } } } \ No newline at end of file diff --git a/node/src/main/kotlin/net/corda/node/utilities/NonInvalidatingUnboundCache.kt b/node/src/main/kotlin/net/corda/node/utilities/NonInvalidatingUnboundCache.kt index 601825feaf..f16ec74f8f 100644 --- a/node/src/main/kotlin/net/corda/node/utilities/NonInvalidatingUnboundCache.kt +++ b/node/src/main/kotlin/net/corda/node/utilities/NonInvalidatingUnboundCache.kt @@ -5,20 +5,21 @@ import com.github.benmanes.caffeine.cache.CacheLoader import com.github.benmanes.caffeine.cache.Caffeine import com.github.benmanes.caffeine.cache.LoadingCache import com.github.benmanes.caffeine.cache.RemovalListener +import net.corda.core.internal.buildNamed class NonInvalidatingUnboundCache private constructor( val cache: LoadingCache ) : LoadingCache by cache { - constructor(loadFunction: (K) -> V, removalListener: RemovalListener = RemovalListener { _, _, _ -> }, + constructor(name: String, loadFunction: (K) -> V, removalListener: RemovalListener = RemovalListener { _, _, _ -> }, keysToPreload: () -> Iterable = { emptyList() }) : - this(buildCache(loadFunction, removalListener, keysToPreload)) + this(buildCache(name, loadFunction, removalListener, keysToPreload)) private companion object { - private fun buildCache(loadFunction: (K) -> V, removalListener: RemovalListener, + private fun buildCache(name: String, loadFunction: (K) -> V, removalListener: RemovalListener, keysToPreload: () -> Iterable): LoadingCache { val builder = Caffeine.newBuilder().removalListener(removalListener).executor(SameThreadExecutor.getExecutor()) - return builder.build(NonInvalidatingCacheLoader(loadFunction)).apply { + return builder.buildNamed(name, NonInvalidatingCacheLoader(loadFunction)).apply { getAll(keysToPreload()) } } diff --git a/node/src/main/kotlin/net/corda/node/utilities/PersistentMap.kt b/node/src/main/kotlin/net/corda/node/utilities/PersistentMap.kt index 8e60880eae..2f04ea7bbe 100644 --- a/node/src/main/kotlin/net/corda/node/utilities/PersistentMap.kt +++ b/node/src/main/kotlin/net/corda/node/utilities/PersistentMap.kt @@ -10,6 +10,7 @@ import java.util.* * Implements an unbound caching layer on top of a table accessed via Hibernate mapping. */ class PersistentMap( + name: String, val toPersistentEntityKey: (K) -> EK, val fromPersistentEntity: (E) -> Pair, val toPersistentEntity: (key: K, value: V) -> E, @@ -21,6 +22,7 @@ class PersistentMap( } private val cache = NonInvalidatingUnboundCache( + name, loadFunction = { key -> Optional.ofNullable(loadValue(key)) }, removalListener = ExplicitRemoval(toPersistentEntityKey, persistentEntityClass) ) diff --git a/node/src/test/kotlin/net/corda/node/services/persistence/AppendOnlyPersistentMapTest.kt b/node/src/test/kotlin/net/corda/node/services/persistence/AppendOnlyPersistentMapTest.kt index b6ec99f77d..69646a6ccc 100644 --- a/node/src/test/kotlin/net/corda/node/services/persistence/AppendOnlyPersistentMapTest.kt +++ b/node/src/test/kotlin/net/corda/node/services/persistence/AppendOnlyPersistentMapTest.kt @@ -271,6 +271,7 @@ class AppendOnlyPersistentMapTest(var scenario: Scenario) { ) class TestMap : AppendOnlyPersistentMap( + "ApoendOnlyPersistentMap_test", toPersistentEntityKey = { it }, fromPersistentEntity = { Pair(it.key, it.value) }, toPersistentEntity = { key: Long, value: String -> diff --git a/node/src/test/kotlin/net/corda/node/utilities/PersistentMapTests.kt b/node/src/test/kotlin/net/corda/node/utilities/PersistentMapTests.kt index c8180e7e7e..baaf99a34f 100644 --- a/node/src/test/kotlin/net/corda/node/utilities/PersistentMapTests.kt +++ b/node/src/test/kotlin/net/corda/node/utilities/PersistentMapTests.kt @@ -16,6 +16,7 @@ class PersistentMapTests { //create a test map using an existing db table private fun createTestMap(): PersistentMap { return PersistentMap( + "Test_test", toPersistentEntityKey = { it }, fromPersistentEntity = { Pair(it.stateRef, it.upgradedContractClassName ?: "") }, toPersistentEntity = { key: String, value: String -> diff --git a/serialization/src/main/kotlin/net/corda/serialization/internal/SerializationScheme.kt b/serialization/src/main/kotlin/net/corda/serialization/internal/SerializationScheme.kt index 9c78e01926..e94e2b95b4 100644 --- a/serialization/src/main/kotlin/net/corda/serialization/internal/SerializationScheme.kt +++ b/serialization/src/main/kotlin/net/corda/serialization/internal/SerializationScheme.kt @@ -6,6 +6,7 @@ import net.corda.core.DeleteForDJVM import net.corda.core.KeepForDJVM import net.corda.core.contracts.Attachment import net.corda.core.crypto.SecureHash +import net.corda.core.internal.buildNamed import net.corda.core.internal.copyBytes import net.corda.core.serialization.* import net.corda.core.utilities.ByteSequence @@ -76,7 +77,7 @@ data class SerializationContextImpl @JvmOverloads constructor(override val prefe */ @DeleteForDJVM internal class AttachmentsClassLoaderBuilder(private val properties: Map, private val deserializationClassLoader: ClassLoader) { - private val cache: Cache, AttachmentsClassLoader> = Caffeine.newBuilder().weakValues().maximumSize(1024).build() + private val cache: Cache, AttachmentsClassLoader> = Caffeine.newBuilder().weakValues().maximumSize(1024).buildNamed("SerializationScheme_attachmentClassloader") fun build(attachmentHashes: List): AttachmentsClassLoader? { val serializationContext = properties[serializationContextKey] as? SerializeAsTokenContext ?: return null // Some tests don't set one. diff --git a/tools/explorer/src/main/kotlin/net/corda/explorer/identicon/IdenticonRenderer.kt b/tools/explorer/src/main/kotlin/net/corda/explorer/identicon/IdenticonRenderer.kt index 97a8549688..db17fc7749 100644 --- a/tools/explorer/src/main/kotlin/net/corda/explorer/identicon/IdenticonRenderer.kt +++ b/tools/explorer/src/main/kotlin/net/corda/explorer/identicon/IdenticonRenderer.kt @@ -14,6 +14,7 @@ import javafx.scene.image.WritableImage import javafx.scene.paint.Color import javafx.scene.text.TextAlignment import net.corda.core.crypto.SecureHash +import net.corda.core.internal.buildNamed /** * (The MIT License) @@ -75,7 +76,7 @@ object IdenticonRenderer { private const val renderingSize = 30.0 - private val cache = Caffeine.newBuilder().build(CacheLoader { key -> + private val cache = Caffeine.newBuilder().buildNamed("IdentIconRenderer_image", CacheLoader { key -> key.let { render(key.hashCode(), renderingSize) } }) From fa51dd35d4ede6f5ca17425411b2611938f9385d Mon Sep 17 00:00:00 2001 From: Christian Sailer Date: Tue, 28 Aug 2018 13:59:16 +0100 Subject: [PATCH 6/6] Comment out Cordform for tools/notarytest. This needs to be converted to groovy/gradle (see https://r3-cev.atlassian.net/browse/ENT-2460) --- .../corda/notarytest/JDBCNotaryCordform.kt | 179 +++++++++--------- .../main/kotlin/net/corda/notarytest/Main.kt | 4 + 2 files changed, 91 insertions(+), 92 deletions(-) diff --git a/tools/notarytest/src/main/kotlin/net/corda/notarytest/JDBCNotaryCordform.kt b/tools/notarytest/src/main/kotlin/net/corda/notarytest/JDBCNotaryCordform.kt index aeed45e07f..9afc8ebd30 100644 --- a/tools/notarytest/src/main/kotlin/net/corda/notarytest/JDBCNotaryCordform.kt +++ b/tools/notarytest/src/main/kotlin/net/corda/notarytest/JDBCNotaryCordform.kt @@ -1,92 +1,87 @@ -/* - * R3 Proprietary and Confidential - * - * Copyright (c) 2018 R3 Limited. All rights reserved. - * - * The intellectual and technical concepts contained herein are proprietary to R3 and its suppliers and are protected by trade secret law. - * - * Distribution of this file or any portion thereof via any medium without the express permission of R3 is strictly prohibited. - */ - -package net.corda.notarytest - -import net.corda.cordform.CordformContext -import net.corda.cordform.CordformDefinition -import net.corda.cordform.CordformNode -import net.corda.core.identity.CordaX500Name -import net.corda.node.services.Permissions -import net.corda.node.services.config.NotaryConfig -import net.corda.nodeapi.internal.DevIdentityGenerator -import net.corda.testing.node.User -import net.corda.testing.node.internal.demorun.* - -fun main(args: Array) = JDBCNotaryCordform().nodeRunner().deployAndRunNodes() - -internal val notaryDemoUser = User("demou", "demop", setOf(Permissions.all())) - -class JDBCNotaryCordform : CordformDefinition() { - private val clusterName = CordaX500Name("Mysql Notary", "Zurich", "CH") - private val notaryNames = createNotaryNames(3) - - private fun createNotaryNames(clusterSize: Int) = (0 until clusterSize).map { - CordaX500Name("Notary Service $it", "Zurich", "CH") - } - - init { - fun notaryNode(index: Int, configure: CordformNode.() -> Unit) = node { - name(notaryNames[index]) - notary( - NotaryConfig( - validating = true, - custom = true - ) - ) - extraConfig = mapOf("custom" to - mapOf( - "mysql" to mapOf( - "dataSource" to mapOf( - // Update the db address/port accordingly - "jdbcUrl" to "jdbc:mysql://localhost:330${6 + index}/corda?rewriteBatchedStatements=true&useSSL=false&failOverReadOnly=false", - "username" to "corda", - "password" to "awesome", - "autoCommit" to "false") - ), - "graphiteAddress" to "performance-metrics.northeurope.cloudapp.azure.com:2004" - ) - ) - configure() - } - - notaryNode(0) { - p2pPort(10009) - rpcSettings { - address("localhost:10010") - adminAddress("localhost:10110") - } - rpcUsers(notaryDemoUser) - } - notaryNode(1) { - p2pPort(10013) - rpcSettings { - address("localhost:10014") - adminAddress("localhost:10114") - } - rpcUsers(notaryDemoUser) - } - notaryNode(2) { - p2pPort(10017) - rpcSettings { - address("localhost:10018") - adminAddress("localhost:10118") - } - rpcUsers(notaryDemoUser) - } - } - - override fun setup(context: CordformContext) { - DevIdentityGenerator.generateDistributedNotarySingularIdentity( - notaryNames.map { context.baseDirectory(it.toString()) }, - clusterName - ) - } -} \ No newline at end of file +///* +// * R3 Proprietary and Confidential +// * +// * Copyright (c) 2018 R3 Limited. All rights reserved. +// * +// * The intellectual and technical concepts contained herein are proprietary to R3 and its suppliers and are protected by trade secret law. +// * +// * Distribution of this file or any portion thereof via any medium without the express permission of R3 is strictly prohibited. +// */ +// +//package net.corda.notarytest +// +//import net.corda.cordform.CordformContext +//import net.corda.cordform.CordformDefinition +//import net.corda.cordform.CordformNode +//import net.corda.core.identity.CordaX500Name +//import net.corda.node.services.config.NotaryConfig +//import net.corda.nodeapi.internal.DevIdentityGenerator +// +//fun main(args: Array) = JDBCNotaryCordform().nodeRunner().deployAndRunNodes() +// +//class JDBCNotaryCordform : CordformDefinition() { +// private val clusterName = CordaX500Name("Mysql Notary", "Zurich", "CH") +// private val notaryNames = createNotaryNames(3) +// +// private fun createNotaryNames(clusterSize: Int) = (0 until clusterSize).map { +// CordaX500Name("Notary Service $it", "Zurich", "CH") +// } +// +// init { +// fun notaryNode(index: Int, configure: CordformNode.() -> Unit) = node { +// name(notaryNames[index]) +// notary( +// NotaryConfig( +// validating = true, +// custom = true +// ) +// ) +// extraConfig = mapOf("custom" to +// mapOf( +// "mysql" to mapOf( +// "dataSource" to mapOf( +// // Update the db address/port accordingly +// "jdbcUrl" to "jdbc:mysql://localhost:330${6 + index}/corda?rewriteBatchedStatements=true&useSSL=false&failOverReadOnly=false", +// "username" to "corda", +// "password" to "awesome", +// "autoCommit" to "false") +// ), +// "graphiteAddress" to "performance-metrics.northeurope.cloudapp.azure.com:2004" +// ) +// ) +// configure() +// } +// +// notaryNode(0) { +// p2pPort(10009) +// rpcSettings { +// address("localhost:10010") +// adminAddress("localhost:10110") +// } +// rpcUsers(notaryDemoUser) +// } +// notaryNode(1) { +// p2pPort(10013) +// rpcSettings { +// address("localhost:10014") +// adminAddress("localhost:10114") +// } +// rpcUsers(notaryDemoUser) +// } +// notaryNode(2) { +// p2pPort(10017) +// rpcSettings { +// address("localhost:10018") +// adminAddress("localhost:10118") +// } +// rpcUsers(notaryDemoUser) +// } +// } +// +// override fun setup(context: CordformContext) { +// DevIdentityGenerator.generateDistributedNotarySingularIdentity( +// notaryNames.map { context.baseDirectory(it.toString()) }, +// clusterName +// ) +// } +//} \ No newline at end of file diff --git a/tools/notarytest/src/main/kotlin/net/corda/notarytest/Main.kt b/tools/notarytest/src/main/kotlin/net/corda/notarytest/Main.kt index 90e93a18bf..ceab87d4ab 100644 --- a/tools/notarytest/src/main/kotlin/net/corda/notarytest/Main.kt +++ b/tools/notarytest/src/main/kotlin/net/corda/notarytest/Main.kt @@ -15,7 +15,9 @@ import net.corda.client.rpc.CordaRPCClient import net.corda.core.messaging.CordaRPCOps import net.corda.core.messaging.startFlow import net.corda.core.utilities.NetworkHostAndPort +import net.corda.node.services.Permissions import net.corda.notarytest.service.JDBCLoadTestFlow +import net.corda.testing.node.User import java.util.concurrent.TimeUnit /** The number of test flows to run on each notary node */ @@ -62,3 +64,5 @@ private fun run(rpc: CordaRPCOps, inputStateCount: Int? = null): List { flowDuration } } + +internal val notaryDemoUser = User("demou", "demop", setOf(Permissions.all())) \ No newline at end of file