]
Galder Zamarreno commented on JBCACHE-1357:
-------------------------------------------
Not thought of this yet. I've got an EAP deadline coming up and
I'm gonna be away for a fair bit of June so not sure whether I'll
have time to look into this before beginning of July.
Root nodes of marshalled regions won't be loaded correclty from
cache loaders
-----------------------------------------------------------------------------
Key: JBCACHE-1357
URL:
http://jira.jboss.com/jira/browse/JBCACHE-1357
Project: JBoss Cache
Issue Type: Bug
Security Level: Public(Everyone can see)
Components: Cache loaders
Affects Versions: 1.4.1.SP9
Reporter: Galder Zamarreno
Assigned To: Galder Zamarreno
Fix For: 1.4.X
Yesterday while looking at a support case, I discovered an awkward
behavior when it came to root region based marshalling nodes and
cache loaders.
Let's say you have a cache configured with a cache loader and have
a region marshaled called starting at /me. I have created an MBean
so that I can register/unregister classloader and activate/deactivate
the region upon deployment/undeployment of the classes I wanna
put under /me.
Now, let's say that I put a k,v in /me which will get stored in the cache
loader. If I know touch the deployment archive to force a redeployment
and check the contents of the cache, they're empty. If I try to get the k I
put under /me, it'll return nothing. Why?
Simple: The cache instance is configured to preload from root (/) but
when the region is activated, /me node is created. When the preloading
phase comes, a check is made to see whether the node needs to be
loaded:
private boolean mustLoad(DataNode n, Object key)
{
if (log.isTraceEnabled())
{
log.trace("mustLoad called with key=" + key + " and
datanode=" + n);
}
return n == null ||
(n.containsKey(TreeCache.UNINITIALIZED) && (key == null ||
!n.containsKey(key)));
}
The problem is that nothing will be preloaded for at least the /me node,
because the node is not null, and it's not TreeCache.UNINITIALIZED. Any
child nodes under the region node do not have issues like this.
This is likely a bug: maybe when the region is activated, the node should
probably be created as TreeCache.UNINITIALIZED? I think this would work).
It's true that you could say that putting data at the root node of the region is
not a good idea regardless, but I think deep down this is a bug.
p.s. This is at least present in 1.4.x, need to check trunk.
Manik: I agree this is a bug. Could you raise a JIRA for this? Also agree with
your solution, that when a region is activated and if a node needs to be
created, it should be uninitialized.
If you create a unit test, could you add it to trunk as well?
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: