We encountered a problem in our cluster:
1. Cluster has many snapshots, cause the archive directory is too big.
2. We delete some snapshots, but the cleaner runs slowly because this is a race in synchronized method of SnapshotHFileCleaner.
3. We delete all snapshots, and disable snapshot feature(hbase.snapshot.enabled=false), so the cleaner will skip the synchronized method in SnapshotHFileCleaner.
4. After cleaner runs, some back reference and data files under archive directory are deleted, but they are still used by some restored tables. This does not meet expectations.
One solution is add HFileLinkCleaner even if snapshot is disabled.