From 198fb4f2648ccc5d8802b74b2d66fdbd347c9f63 Mon Sep 17 00:00:00 2001 From: Katelyn Baker Date: Thu, 8 Mar 2018 23:07:41 +0000 Subject: [PATCH] CORDA-1192 - Quieten message when reflecting on a builtin Kotlin type (#2767) * CORDA-1192 - Quieten message when reflecting on a builtin Kotlin type * review comments --- .../serialization/amqp/PropertySerializers.kt | 15 +++++++++++++-- .../amqp/SerializationOutputTests.kt | 9 +++++++++ 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/node-api/src/main/kotlin/net/corda/nodeapi/internal/serialization/amqp/PropertySerializers.kt b/node-api/src/main/kotlin/net/corda/nodeapi/internal/serialization/amqp/PropertySerializers.kt index 9029dd171b..4687c1173b 100644 --- a/node-api/src/main/kotlin/net/corda/nodeapi/internal/serialization/amqp/PropertySerializers.kt +++ b/node-api/src/main/kotlin/net/corda/nodeapi/internal/serialization/amqp/PropertySerializers.kt @@ -34,7 +34,12 @@ class PublicPropertyReader(private val readMethod: Method?) : PropertyReader() { // is: https://youtrack.jetbrains.com/issue/KT-13077 // TODO: Revisit this when Kotlin issue is fixed. - loggerFor().error("Unexpected internal Kotlin error", e) + // So this used to report as an error, but given we serialise exceptions all the time it + // provides for very scary log files so move this to trace level + loggerFor().let { logger -> + logger.trace("Using kotlin introspection on internal type ${this.declaringClass}") + logger.trace("Unexpected internal Kotlin error", e) + } return true } } @@ -70,7 +75,13 @@ class PrivatePropertyReader(val field: Field, parentType: Type) : PropertyReader // This might happen for some types, e.g. kotlin.Throwable? - the root cause of the issue // is: https://youtrack.jetbrains.com/issue/KT-13077 // TODO: Revisit this when Kotlin issue is fixed. - loggerFor().error("Unexpected internal Kotlin error", e) + + // So this used to report as an error, but given we serialise exceptions all the time it + // provides for very scary log files so move this to trace level + loggerFor().let { logger -> + logger.trace("Using kotlin introspection on internal type ${field}") + logger.trace("Unexpected internal Kotlin error", e) + } true } } diff --git a/node-api/src/test/kotlin/net/corda/nodeapi/internal/serialization/amqp/SerializationOutputTests.kt b/node-api/src/test/kotlin/net/corda/nodeapi/internal/serialization/amqp/SerializationOutputTests.kt index e69a949dbd..5fc4359e88 100644 --- a/node-api/src/test/kotlin/net/corda/nodeapi/internal/serialization/amqp/SerializationOutputTests.kt +++ b/node-api/src/test/kotlin/net/corda/nodeapi/internal/serialization/amqp/SerializationOutputTests.kt @@ -5,6 +5,7 @@ package net.corda.nodeapi.internal.serialization.amqp import com.nhaarman.mockito_kotlin.doReturn import com.nhaarman.mockito_kotlin.whenever import net.corda.client.rpc.RPCException +import net.corda.core.CordaException import net.corda.core.CordaRuntimeException import net.corda.core.contracts.* import net.corda.core.crypto.SecureHash @@ -1177,5 +1178,13 @@ class SerializationOutputTests(private val compression: CordaSerializationEncodi PrivateAckWrapper.serialize() } + @Test + fun throwable() { + class TestException(message: String?, cause: Throwable?) : CordaException(message, cause) + val testExcp = TestException("hello", Throwable().apply { stackTrace = Thread.currentThread().stackTrace } ) + val factory = testDefaultFactoryNoEvolution() + SerializationOutput(factory).serialize(testExcp) + + } }