The worker thread will no longer exit.
However, we still need to deal with bad files.
HLog can handle zero length log files in splitLog.
HStoreFile still needs to be made more robust. There are up to 3 files in each HStoreFile:
- the mapFile
- the infoFile
- bloomFilter file (optional)
For this immediate problem, HStore.loadHStoreFiles should throw an error if one of these files does not exist or is zero length (ignoring the bloomFilter file if the column is not configured with one). This would be caught by the worker thread, which would mark the region offline in the meta (so the master won't try to reassign it) and the region server should tell the master about the bad region. The master (and/or) region server needs to notify the user (How? People complain about stuff like this only being in the logs. In the web ui? On stdout?)
Moving forward, the user should be directed to run HBase-fsck (or whatever it will be called).
Additionally, if we are going to create our own 'mapFile' format, why not combine all of these into a single file? Seems kind of silly to have those little info files around, and there is no reason that a bloom filter couldn't be stored in the same file as well.