Hernan Romer created HBASE-30499:
------------------------------------

             Summary: A bypassed SnapshotProcedure leaves its tmp working 
directory behind, which pins archived HFiles until the HMaster restarts
                 Key: HBASE-30499
                 URL: https://issues.apache.org/jira/browse/HBASE-30499
             Project: HBase
          Issue Type: Improvement
          Components: snapshots
    Affects Versions: 3.0.0, 2.6.0, 2.0.0
            Reporter: Hernan Romer


Bypassing a SnapshotProcedure before SNAPSHOT_COMPLETE_SNAPSHOT skips both the 
commit and the rollback. The directory <snapshot dir>/.tmp/<snapshot name> 
stays on disk, and nothing in the running master tracks it any more. 
list_snapshots and list_procedures don't show it, and deleteSnapshot doesn't 
remove it. The only cleanup is SnapshotManager#resetTempDir(), which only runs 
when the master starts.

Until then, SnapshotFileCache#getSnapshotsInProgress() treats the directory as 
a live snapshot and keeps every HFile its manifest references. As the table 
compacts, those files pile up in the archive.

Consequence: the archive can grow to roughly the size the table had when the 
procedure was bypassed, and stays there until the master restarts. The only 
hint is CleanerChore TRACE logging not deletable according to: 
SnapshotHFileCleaner, which doesn't name the snapshot. We hit this in 
production: the master stayed up for about a month after a bypass, and the 
archive grew to about the size of the table's live data.



--
This message was sent by Atlassian Jira
(v10.3.26#10030026)

Reply via email to