[ 
https://issues.apache.org/jira/browse/HBASE-14391?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14876151#comment-14876151
 ] 

Jerry He commented on HBASE-14391:
----------------------------------

Continue from my last comment. In theory, it looks like deleting the logDir 
should be done at the WALFactory level since it knows all Providers are closed 
and will do a final cleanup for what is shared by the WALFactory.
But it does not make logical sense for the WALFactory to go down to the FSHLog 
level and know the FS layout in this case. 
There are still holes in the the abstraction work for WALFactory and 
WALProvider.

Maybe [~busbey] has some insight suggestion.

> Empty regionserver WAL will never be deleted although the coresponding 
> regionserver has been stale
> --------------------------------------------------------------------------------------------------
>
>                 Key: HBASE-14391
>                 URL: https://issues.apache.org/jira/browse/HBASE-14391
>             Project: HBase
>          Issue Type: Bug
>          Components: wal
>    Affects Versions: 1.0.2
>            Reporter: Qianxi Zhang
>            Assignee: Qianxi Zhang
>         Attachments: HBASE-14391-master-v3.patch, HBASE_14391_trunk_v1.patch, 
> HBASE_14391_trunk_v2.patch, WALs-leftover-dir.txt
>
>
> When I restarted the hbase cluster in which there was few data, I found there 
> are two directories for one host with different timestamp which indicates 
> that the old regionserver wal directory is not deleted.
> FHLog#989
> {code}
>  @Override
>   public void close() throws IOException {
>     shutdown();
>     final FileStatus[] files = getFiles();
>     if (null != files && 0 != files.length) {
>       for (FileStatus file : files) {
>         Path p = getWALArchivePath(this.fullPathArchiveDir, file.getPath());
>         // Tell our listeners that a log is going to be archived.
>         if (!this.listeners.isEmpty()) {
>           for (WALActionsListener i : this.listeners) {
>             i.preLogArchive(file.getPath(), p);
>           }
>         }
>         if (!FSUtils.renameAndSetModifyTime(fs, file.getPath(), p)) {
>           throw new IOException("Unable to rename " + file.getPath() + " to " 
> + p);
>         }
>         // Tell our listeners that a log was archived.
>         if (!this.listeners.isEmpty()) {
>           for (WALActionsListener i : this.listeners) {
>             i.postLogArchive(file.getPath(), p);
>           }
>         }
>       }
>       LOG.debug("Moved " + files.length + " WAL file(s) to " +
>         FSUtils.getPath(this.fullPathArchiveDir));
>     }
>     LOG.info("Closed WAL: " + toString());
>   }
> {code}
> When regionserver is stopped, the hlog will be archived, so wal/regionserver 
> is empty in hdfs.
> MasterFileSystem#252
> {code}
>         if (curLogFiles == null || curLogFiles.length == 0) {
>             // Empty log folder. No recovery needed
>             continue;
>           }
> {code}
> The regionserver directory will be not splitted, it makes sense. But it will 
> be not deleted.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to