You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@hbase.apache.org by "Vladimir Rodionov (JIRA)" <ji...@apache.org> on 2016/08/30 04:34:20 UTC

[jira] [Comment Edited] (HBASE-16529) PathFilter accept implementations must be exception free

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

Vladimir Rodionov edited comment on HBASE-16529 at 8/30/16 4:33 AM:
--------------------------------------------------------------------

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.


was (Author: vrodionov):
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)