I have a question about the GC process. It seems the garbage collection for a range is done via Raft: https://github.com/cockroachdb/cockroach/blob/master/pkg/storage/gc_queue.go#L526
It collects keys to be GC’ed and sends requests to instruct replicas to GC same set of keys.
I’m curious on why this is preferred compared to the (lighter-weight) approach of each replica doing GC independently (but according to same GC policy). It is because it’s also GC’ing intents and abort caches and resolving intents and pushing txns should be done by the leader lease holder only? If so, can the user data (non-intents) be GC’ed independently?