David Rauschenbach wrote:
I wanted to pass this finding along, just to get it out there.

After JCR2SPI submits a batch with a new node, it performs a getItemInfos, 
presumably to refresh the node and see what server-side items might have been 
assigned. This ItemInfo response, by definition, as a NodeInfo at element 0, 
containing the primaryType of the node.

If the target server, for whatever reason, opts to NOT include a PropertyInfo 
for the jcr:primaryType of the added node, JCR2SPI asks for it by invoking 
getPropertyInfo. It should not do so, because the primary type was returned in 
the NodeInfo.

In summary, this is more like a design strategy in JCR2SPI. Deteremining a 
primary type should be done using the mandatory part of a getItemInfos response 
(the node info), instead of using the optional part of a getItemInfos response, 
which could cause additional I/O for no good reason.

+0.5.

I'm not too concerned about write performance (yet).

However, I also see calls to getPropertyInfo for primarytype/mixintypes/uuid, when the JCR client just calls getProperties().

This really should be avoided; I'd even say that when JCR2SPI already has the NodeInfo, getPropertyInfo should never be called for the properties defined on nt:base, and optimally also not for jcr:uuid when the NodeInfo can already provide it.

Is there a particular reason why JCR2SPI doesn't do that yet? It would require some additional code building properties, but I think it would be worth it.

BR, Julian

Reply via email to