we need it so that we don't add all sorts of random logging code in sporadic places which is very error prone and not very maintainable.   Reading the version can serve for two purposes: one is race protection, the second is logging. We may want to pass the object version that we get here to the actual delete instead of re-reading the object. Note that in most cases we don't really re-read anything as it's cached.