-
Bug
-
Resolution: Done
-
Major
-
9.2.2.Final, 9.3.0.Final
-
Sprint 9.4.0.Beta1, Sprint 9.4.0.CR1, Sprint 9.4.0.CR3, Sprint 9.4.0.Final
PerCacheInboundInvocationHandler.handle() may be called before the component was started, because GlobalInboundInvocationHandler fetches it from the component registry without any checks. CommandsFactoryImpl.initializeReplicableCommand() doesn't wait for the components that it injects into remote commands to be started, either.
This started causing random test failures in ConcurrentStartForkChannelTest after ISPN-8515, which moved most initialization work from init() methods to start() methods. Because StateProviderImpl starts after StateTransferManagerImpl, it's possible for a node to receive a StateRequestCommand before StateProviderImpl has initialized:
16:15:09,549 TRACE (remote-thread-Test-NodeB-p51957-t2:[org.infinispan.CONFIG]) [StateProviderImpl] Starting outbound transfer to node Test-NodeA for cache null, topology id 2, segments {0-255} 16:15:09,551 WARN (remote-thread-Test-NodeB-p51957-t2:[]) [NonTotalOrderPerCacheInboundInvocationHandler] ISPN000071: Caught exception when handling command StateRequestCommand{cache=org.infinispan.CONFIG, origin=Test-NodeA, type=START_STATE_TRANSFER, topologyId=2, segments={0-255}} java.lang.IllegalArgumentException: chunkSize must be greater than 0 at org.infinispan.statetransfer.OutboundTransferTask.<init>(OutboundTransferTask.java:114) ~[classes/:?] at org.infinispan.statetransfer.StateProviderImpl.startOutboundTransfer(StateProviderImpl.java:273) ~[classes/:?] at org.infinispan.statetransfer.StateRequestCommand.invokeAsync(StateRequestCommand.java:101) ~[classes/:?] at org.infinispan.remoting.inboundhandler.BasePerCacheInboundInvocationHandler.invokeCommand(BasePerCacheInboundInvocationHandler.java:94) ~[classes/:?]
- incorporates
-
ISPN-2735 The global component registry sometimes fails to start components injected on the fly
- Closed
-
ISPN-2876 AbstractComponentRegistry.getComponent can return an incomplete component
- Closed
- is related to
-
ISPN-9541 Module initialization is not thread-safe
- Closed
- relates to
-
ISPN-9198 Node X left the cluster - SuspectException: ISPN000400: Node X was suspected
- Closed
-
ISPN-9497 Deadlock when starting clustered servers
- Closed
-
ISPN-5353 CacheNotifierImpl component is started/stopped twice because it is both a CacheNotifier and a ClusterCacheNotifier component
- Closed