]
Galder Zamarreño resolved ISPN-696.
-----------------------------------
Fix Version/s: 4.2.0.BETA1
Resolution: Done
NPE during state transfer after restarting cache
------------------------------------------------
Key: ISPN-696
URL:
https://jira.jboss.org/browse/ISPN-696
Project: Infinispan
Issue Type: Bug
Components: State transfer
Affects Versions: 4.2.0.ALPHA2
Reporter: Paul Ferraro
Assignee: Galder Zamarreño
Fix For: 4.2.0.BETA1
When a named cache is restarted, and fetchInMemoryState = true, the state transfer
initiated in StateTransferManager.start() causes a NPE, because the cache's
ComponentRegistry does not get reregistered with the GlobalComponentRegistry.
The NPE comes from InboundInvocationHandlerImpl:
public void applyState(String cacheName, InputStream i) throws StateTransferException
{
getStateTransferManager(cacheName).applyState(i);
}
private StateTransferManager getStateTransferManager(String cacheName) throws
StateTransferException {
ComponentRegistry cr = gcr.getNamedComponentRegistry(cacheName);
if (cr == null) {
return null;
}
return cr.getComponent(StateTransferManager.class);
}
A quick glance at ComponentRegistry indicates that the registry is registered with the
GlobalComponentRegistry in the constructor and unregistered in stop(). Because of the
unbalanced logic, when the stopped component registry is restarted, it never gets
re-registered with the GlobalComponentRegistry, hence the NPE during state transfer the
second time around.
This specific regression was introduced in revision 2384. Rolling back
ComponentRegistry.java to revision 2273 resolves the issue.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: