Details
Description
Trash emptier is designed to auto trigger at UTC 00:00, however I am confused all the time that it usually triggers at a few minutes even half a hour after UTC 00:00 actually in our production cluster.
The main reason is default policy emptier thread sleep more time than as expect, since it does not consider the delete operation time cost itself. especially for a large cluster, auto trash cleaner may cost dozens of minutes.
The right way is that gets current time now before calculate end time.
long now = Time.now(); while (true) { end = ceiling(now, emptierInterval); try { // sleep for interval Thread.sleep(end - now); } catch (InterruptedException e) { break; // exit on interrupt } try { now = Time.now(); ...... // delete trash checkpoint } catch (Exception e) { LOG.warn("RuntimeException during Trash.Emptier.run(): ", e); } }
Attachments
Attachments
Issue Links
- relates to
-
HDFS-14586 Trash missing delete the folder which near timeout checkpoint
- Patch Available