ENT-3504 Do not throw exception for missing fiber and log instead - OS version (#5292)

Change to `SingleThreadedStateMachineManager`.

Instead of throwing an exception when a flow's fiber cannot be found,
just log the message at info level.
This commit is contained in:
Dan Newton 2019-07-16 11:31:37 +01:00 committed by Shams Asari
parent 8962d930d4
commit 70b2a94fda

View File

@ -448,12 +448,12 @@ class SingleThreadedStateMachineManager(
} }
} else { } else {
// It happens when flows restart and the old sessions messages still arrive from a peer. // It happens when flows restart and the old sessions messages still arrive from a peer.
logger.info("Cannot find flow corresponding to session ID $recipientId.") logger.info("Cannot find flow corresponding to session ID - $recipientId.")
} }
} else { } else {
val flow = mutex.locked { flows[flowId] } mutex.locked { flows[flowId] }?.run {
?: throw IllegalStateException("Cannot find fiber corresponding to ID $flowId") fiber.scheduleEvent(Event.DeliverSessionMessage(sessionMessage, deduplicationHandler, sender))
flow.fiber.scheduleEvent(Event.DeliverSessionMessage(sessionMessage, deduplicationHandler, sender)) } ?: logger.info("Cannot find fiber corresponding to flow ID $flowId")
} }
} catch (exception: Exception) { } catch (exception: Exception) {
logger.error("Exception while routing $sessionMessage", exception) logger.error("Exception while routing $sessionMessage", exception)