<div>Worse, validity of the cache changes whether it has a barrier (in debug mode) or not. I would prefer to avoid calling PetscCommDuplicate() because it is fewer key lookups and then we can make PetscCommGetThreadComm explicitly NOT collective. Any objections?</div>