mirror of
https://github.com/corda/corda.git
synced 2025-01-31 00:24:59 +00:00
Some integration tests seem to be getting exceptions that suggest the ArtemisMQ session has been closed down already. Looking at the client code it is clear two threads can call stop and interfere with each other. Therefore this fixes the running flag logic.
This commit is contained in:
parent
ea3c63e023
commit
eb8510e7cc
@ -252,20 +252,25 @@ class ArtemisMessagingClient(directory: Path,
|
||||
// Ignore it: this can happen if the server has gone away before we do.
|
||||
}
|
||||
consumer = null
|
||||
running
|
||||
val prevRunning = running
|
||||
running = false
|
||||
prevRunning
|
||||
}
|
||||
if (running && !executor.isOnThread) {
|
||||
// Wait for the main loop to notice the consumer has gone and finish up.
|
||||
shutdownLatch.await()
|
||||
}
|
||||
state.locked {
|
||||
producer?.close()
|
||||
producer = null
|
||||
// Ensure any trailing messages are committed to the journal
|
||||
session!!.commit()
|
||||
// Closing the factory closes all the sessions it produced as well.
|
||||
clientFactory!!.close()
|
||||
clientFactory = null
|
||||
// Only first caller to gets running true to protect against double stop, which seems to happen in some integration tests.
|
||||
if (running) {
|
||||
state.locked {
|
||||
producer?.close()
|
||||
producer = null
|
||||
// Ensure any trailing messages are committed to the journal
|
||||
session!!.commit()
|
||||
// Closing the factory closes all the sessions it produced as well.
|
||||
clientFactory!!.close()
|
||||
clientFactory = null
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user