Avoid races in MessageCache::replace()