public void run ( ) { while ( running ) { try { LOG . info ( "FileFixer continuing to run..." ) ; doFindFiles ( ) ; } catch ( Exception e ) { LOG . error ( StringUtils . stringifyException ( e ) ) ; } catch ( Error err ) { LOG . error ( "Exiting after encountering " + StringUtils . stringifyException ( err ) ) ; shutdown ( ) ; throw err ; } try { // Sleep before proceeding to fix more files. Thread . sleep ( blockFixInterval ) ; } catch ( InterruptedException ie ) { LOG . error ( "Encountering InturruptedException " + StringUtils . stringifyException ( ie ) ) ; } } }
A singleton thread that finds corrupted files and then schedules blocks to be copied . This thread talks only to NameNodes and does not talk to any datanodes .