[ https://issues.apache.org/jira/browse/HADOOP-12726?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15119895#comment-15119895 ]
Steve Loughran commented on HADOOP-12726: ----------------------------------------- bq. I'd also balk at creating Frankenstein's exception. see {{java.io.InterruptedIOException}} as evidence our strategy is legitmate bq. Is your concern that some bits of the system are catching IOException with the expectation that they will also catch unsupported operations? Yes, I am confident that some apps will be doing just that. Indeed, I'd use your KMS patch as an example. bq. I think it should be pretty reasonable to go through the code to find all cases of calls to potentially unsupported operations Which code are we talking about here? FileSystem is a public API, tagged as stable. To see how these things get used, you can't just look at Hadoop-core, you need HBase, accumulo, spark, hive, ... etc in your IDE. I know, I've been there. The exception model is part of its semantics. Now, looking at what coverage there is of the [FS API|https://hadoop.apache.org/docs/stable2/hadoop-project-dist/hadoop-common/filesystem/fsdatainputstream.html], it does say that seek can throw UnsupportedOperationException, indeed, it's implied its preferred to an IOE. {code} supported(FSDIS, Seekable.seek) else raise [UnsupportedOperationException, IOException] {code} Which meant when I was rummaging around the implementations of seek(), some must do this -looks like {{CompressionInputStream}} is one of them. So, if you can show that other implementations of various unsupported operations are actually throwing {{UnsupportedOperationException}} then you can make the case that changing the exception is not incompatible, just making things more consistent. You get to be the one who looks through all the methods though > Unsupported operations should throw UnsupportedOperationException > ----------------------------------------------------------------- > > Key: HADOOP-12726 > URL: https://issues.apache.org/jira/browse/HADOOP-12726 > Project: Hadoop Common > Issue Type: Improvement > Components: fs > Affects Versions: 2.7.1 > Reporter: Daniel Templeton > Assignee: Daniel Templeton > > In the {{FileSystem}} implementation classes, unsupported operations throw > {{new IOException("Not supported")}}, which makes it needlessly difficult to > distinguish an actual error from an unsupported operation. They should > instead throw {{new UnsupportedOperationException()}}. > It's possible that this anti-idiom is used elsewhere in the code base. This > JIRA should include finding and cleaning up those instances as well. -- This message was sent by Atlassian JIRA (v6.3.4#6332)