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. David
