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

Vladimir Rodionov commented on HBASE-16529:
-------------------------------------------

Quick code scan finds a lot of places, where this requirement does not hold. 
Usual pattern, call to FileSystem, catch IOException, return default (usually) 
false. Bad, Bad, Bad. Not allowed to swallow exceptions, should propagate them 
up.

> PathFilter accept implementations must be exception free
> --------------------------------------------------------
>
>                 Key: HBASE-16529
>                 URL: https://issues.apache.org/jira/browse/HBASE-16529
>             Project: HBase
>          Issue Type: Umbrella
>            Reporter: Vladimir Rodionov
>
> As an example of a wrong PathFilter implementation:
> FSUtils.ReferenceFileFilter
> {code}
>     @Override
>     protected boolean accept(Path p, @CheckForNull Boolean isDir) {
>       if (!StoreFileInfo.isReference(p)) {
>         return false;
>       }
>       try {
>         // only files can be references.
>         return isFile(fs, isDir, p);
>       } catch (IOException ioe) {
>         // Maybe the file was moved or the fs was disconnected.
>         LOG.warn("Skipping file " + p +" due to IOException", ioe);
>         return false;
>       }
>     }
> {code}
> That is wrong. We can't say if path passes the filter or not if Exception is 
> thrown. The general rule: DO NOT USE ANY CALLS WHICH MAY THROW EXCEPTION 
> INSIDE ACCEPT METHOD IMPLEMENTATION.
> See HBASE-16527.
> FSUtils contains several path filters for starter.



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

Reply via email to