Currently, Jackrabbit sessions are somewhat synchronized, but not completely (for example it's still possible to concurrently read and update data). There were some problems because of that, and probably there still are.
I believe it's better to synchronize all methods in the session (on the session object). This includes methods on nodes and properties and so on. If this does turn out to be a performance problem, we can remove synchronization where required (and where it can safely be removed) or change the implementation (use immutable objects or safe data structures). This is more conservative, but I think the impact on performance will be minimal. Of course performance is important, however I think data consistency is more important than the possible gain of a few percents of (read-) performance. Regards, Thomas