> Is FileSystemException a subclass of IOException?
Yes FileSystemException is a subclass of IOException.
> Add UnsupportedOperationException as a subclass of FileSystemException.
I agree to add this one.
> Throw java.io.InterruptedIOException instead of InterruptedException.
We thought of InterruptedException to capture interrupts to any thread and not just threads busy with IO.
> why we have two different sub-types of exceptions?
FileSystemException is thrown when FS is in such a state that the requested operation cannot proceed for example if filesystem is in safemode, we can throw FileSystemNotReadyException which is a subtype of FileSystemException. The other IOExceptions are thrown when there are inconsistencies in the user inputs and operation cannot succees for example creating a file that already exists.
> If it is java.nio.file.FileSystemException then it will appear only in java 7.
FileSystemException is inspired by java.nio.file.FileSystemException but we will implement it because it is not in java 6.
> What is IsDirectoryException? Sounds more like a method name.
IsDirectoryException is inspired by Unix error code EISDIR, which means that expected input was a file but a directory is being passed. We can rename it to DirectoryNotAllowedException.
> Should QuotaExceededException be a subclass of IOException, same as AccessDeniedException?
All the exceptions except Interrupted exceptions are subclasses of IOException.
> Do you plan to unwrap ALL RemoteExceptions in DFSClient?
Yes all these exceptions will be unwrapped. But that implementation is not part of this jira.