Hi,
Re:
https://issues.jboss.org/browse/ISPN-1384
I've had a look to this and this race condition could, in theory, be resolved by
making InboundInvocationHandlerImpl.handle() waiting for cache not only to be defined, but
to be started. Otherwise there'll always be a potential race condition like the one
showed in the log.
In this particular case, this is clustered get command being received from a clustered
cache loader, which is arriving in the cache before this is started (and the cache loader
has been created, hence the NPE).
Another question, is there any reason why CacheLoader is not a named cache component which
can be initalised with a corresponding factory and to which other components can be
injected (i.e. marshaller, cache...etc)?
In this particular case, this would also resolve the issue because
ClusterCacheLoader.start() does nothing, so all the interceptor needs is a proper instance
of ClusterCacheLoader available. The factory makes these available bejore inject.
Thoughts?
Cheers,
p.s. Dan, I am aware of
https://issues.jboss.org/browse/ISPN-1324, maybe you're
solving this indirectly with the work for that JIRA?
--
Galder Zamarreño
Sr. Software Engineer
Infinispan, JBoss Cache