mirror of
https://github.com/corda/corda.git
synced 2025-06-18 07:08:15 +00:00
Adding hint on how to fix the 'not instrumented' error message (#1274)
* Adding hint on how to fix the 'not instrumented' error message * Addressing review comments
This commit is contained in:
@ -2,6 +2,7 @@ package net.corda.node.services.statemachine
|
|||||||
|
|
||||||
import co.paralleluniverse.fibers.Fiber
|
import co.paralleluniverse.fibers.Fiber
|
||||||
import co.paralleluniverse.fibers.FiberExecutorScheduler
|
import co.paralleluniverse.fibers.FiberExecutorScheduler
|
||||||
|
import co.paralleluniverse.fibers.instrument.SuspendableHelper
|
||||||
import co.paralleluniverse.strands.Strand
|
import co.paralleluniverse.strands.Strand
|
||||||
import com.codahale.metrics.Gauge
|
import com.codahale.metrics.Gauge
|
||||||
import com.esotericsoftware.kryo.KryoException
|
import com.esotericsoftware.kryo.KryoException
|
||||||
@ -166,11 +167,19 @@ class StateMachineManager(val serviceHub: ServiceHubInternal,
|
|||||||
val changes: Observable<Change> = mutex.content.changesPublisher.wrapWithDatabaseTransaction()
|
val changes: Observable<Change> = mutex.content.changesPublisher.wrapWithDatabaseTransaction()
|
||||||
|
|
||||||
fun start() {
|
fun start() {
|
||||||
|
checkQuasarJavaAgentPresence()
|
||||||
restoreFibersFromCheckpoints()
|
restoreFibersFromCheckpoints()
|
||||||
listenToLedgerTransactions()
|
listenToLedgerTransactions()
|
||||||
serviceHub.networkMapCache.mapServiceRegistered.then { executor.execute(this::resumeRestoredFibers) }
|
serviceHub.networkMapCache.mapServiceRegistered.then { executor.execute(this::resumeRestoredFibers) }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun checkQuasarJavaAgentPresence() {
|
||||||
|
check(SuspendableHelper.isJavaAgentActive(), {
|
||||||
|
"""Missing the '-javaagent' JVM argument. Make sure you run the tests with the Quasar java agent attached to your JVM.
|
||||||
|
#See https://docs.corda.net/troubleshooting.html - 'Fiber classes not instrumented' for more details.""".trimMargin("#")
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
private fun listenToLedgerTransactions() {
|
private fun listenToLedgerTransactions() {
|
||||||
// Observe the stream of committed, validated transactions and resume fibers that are waiting for them.
|
// Observe the stream of committed, validated transactions and resume fibers that are waiting for them.
|
||||||
serviceHub.validatedTransactions.updates.subscribe { stx ->
|
serviceHub.validatedTransactions.updates.subscribe { stx ->
|
||||||
|
@ -26,12 +26,10 @@ import net.corda.core.node.services.ServiceType
|
|||||||
import net.corda.core.utilities.*
|
import net.corda.core.utilities.*
|
||||||
import net.corda.node.internal.Node
|
import net.corda.node.internal.Node
|
||||||
import net.corda.node.internal.NodeStartup
|
import net.corda.node.internal.NodeStartup
|
||||||
import net.corda.node.serialization.NodeClock
|
|
||||||
import net.corda.node.services.config.*
|
import net.corda.node.services.config.*
|
||||||
import net.corda.node.services.network.NetworkMapService
|
import net.corda.node.services.network.NetworkMapService
|
||||||
import net.corda.node.services.transactions.RaftValidatingNotaryService
|
import net.corda.node.services.transactions.RaftValidatingNotaryService
|
||||||
import net.corda.node.utilities.ServiceIdentityGenerator
|
import net.corda.node.utilities.ServiceIdentityGenerator
|
||||||
import net.corda.node.utilities.TestClock
|
|
||||||
import net.corda.nodeapi.ArtemisMessagingComponent
|
import net.corda.nodeapi.ArtemisMessagingComponent
|
||||||
import net.corda.nodeapi.User
|
import net.corda.nodeapi.User
|
||||||
import net.corda.nodeapi.config.SSLConfiguration
|
import net.corda.nodeapi.config.SSLConfiguration
|
||||||
@ -47,7 +45,6 @@ import java.io.File
|
|||||||
import java.net.*
|
import java.net.*
|
||||||
import java.nio.file.Path
|
import java.nio.file.Path
|
||||||
import java.nio.file.Paths
|
import java.nio.file.Paths
|
||||||
import java.time.Clock
|
|
||||||
import java.time.Duration
|
import java.time.Duration
|
||||||
import java.time.Instant
|
import java.time.Instant
|
||||||
import java.time.ZoneOffset.UTC
|
import java.time.ZoneOffset.UTC
|
||||||
|
Reference in New Issue
Block a user