This is a shortcoming of Hadoop RPC. Ideally exceptions thrown on the
server would be re-thrown on the client, but the concern is that their
class might not exist there, so we instead transmit the just class name
and the error string and do not attempt to re-throw the original
exception and instead throw a RemoteException. HDFS could patch around
this, but it would really be best to fix it in the RPC layer.
Doug
Olga Natkovich wrote:
> Hi,
>
> In my code, I want to be able to differentiate access control problems
> and give a meaningful message to the users. I noticed that in this case
> org.apache.hadoop.fs.permission.AccessControlException is thrown but
> then it gets wrapped into other exceptions such as java.io.IOException
> or org.apache.hadoop.ipc.RemoteException.
>
> One way to figure it out is to recursively check for the cause of the
> exception to be of type
> org.apache.hadoop.fs.permission.AccessControlException. Is this the
> right/best way to go about it?
>
> Thanks,
>
> Olga
>
|