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

Ted Yu edited comment on HBASE-10029 at 11/26/13 3:33 AM:
----------------------------------------------------------

>From createReorderingProxy():
{code}
    return (ClientProtocol) Proxy.newProxyInstance
        (cp.getClass().getClassLoader(),
            new Class[]{ClientProtocol.class, Closeable.class},
{code}

What I don't understand is why IllegalArgumentException wasn't thrown from 
Proxy.newProxyInstance() in createReorderingProxy() if the proxy doesn't 
implement Closeable.
See line 369 here:
http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/java/lang/reflect/Proxy.java#Proxy.getProxyClass%28java.lang.ClassLoader%2Cjava.lang.Class%5B%5D%29


was (Author: [email protected]):
What I don't understand is why IllegalArgumentException wasn't thrown from 
Proxy.newProxyInstance() if the proxy doesn't implement Closeable.
See line 369 here:
http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/java/lang/reflect/Proxy.java#Proxy.getProxyClass%28java.lang.ClassLoader%2Cjava.lang.Class%5B%5D%29

> Proxy created by HFileSystem#createReorderingProxy() should implement 
> Closeable when connect to HA namenode
> -----------------------------------------------------------------------------------------------------------
>
>                 Key: HBASE-10029
>                 URL: https://issues.apache.org/jira/browse/HBASE-10029
>             Project: HBase
>          Issue Type: Bug
>          Components: hadoop2
>    Affects Versions: 0.96.0
>            Reporter: Henry Hung
>
> HA namenode with QJM created from 
> org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider 
> should implement Closeable.
> [Mail 
> Archive|https://drive.google.com/file/d/0B22pkxoqCdvWSGFIaEpfR3lnT2M/edit?usp=sharing]
> {code}
> 13/11/26 09:55:55 ERROR ipc.RPC: RPC.stopProxy called on non proxy.
> java.lang.IllegalArgumentException: object is not an instance of declaring 
> class
>         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>         at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>         at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>         at java.lang.reflect.Method.invoke(Method.java:597)
>         at 
> org.apache.hadoop.hbase.fs.HFileSystem$1.invoke(HFileSystem.java:266)
>         at $Proxy16.close(Unknown Source)
>         at org.apache.hadoop.ipc.RPC.stopProxy(RPC.java:621)
>         at 
> org.apache.hadoop.hdfs.DFSClient.closeConnectionToNamenode(DFSClient.java:738)
>         at org.apache.hadoop.hdfs.DFSClient.close(DFSClient.java:794)
>         at 
> org.apache.hadoop.hdfs.DistributedFileSystem.close(DistributedFileSystem.java:847)
>         at 
> org.apache.hadoop.fs.FileSystem$Cache.closeAll(FileSystem.java:2524)
>         at 
> org.apache.hadoop.fs.FileSystem$Cache$ClientFinalizer.run(FileSystem.java:2541)
>         at 
> org.apache.hadoop.util.ShutdownHookManager$1.run(ShutdownHookManager.java:54)
> 13/11/26 09:55:55 WARN util.ShutdownHookManager: ShutdownHook 
> 'ClientFinalizer' failed, org.apache.hadoop.HadoopIllegalArgumentException: 
> Cannot close proxy - is not Closeable or does not provide closeable 
> invocation handler class $Proxy16
> org.apache.hadoop.HadoopIllegalArgumentException: Cannot close proxy - is not 
> Closeable or does not provide closeable invocation handler class $Proxy16
>         at org.apache.hadoop.ipc.RPC.stopProxy(RPC.java:639)
>         at 
> org.apache.hadoop.hdfs.DFSClient.closeConnectionToNamenode(DFSClient.java:738)
>         at org.apache.hadoop.hdfs.DFSClient.close(DFSClient.java:794)
>         at 
> org.apache.hadoop.hdfs.DistributedFileSystem.close(DistributedFileSystem.java:847)
>         at 
> org.apache.hadoop.fs.FileSystem$Cache.closeAll(FileSystem.java:2524)
>         at 
> org.apache.hadoop.fs.FileSystem$Cache$ClientFinalizer.run(FileSystem.java:2541)
>         at 
> org.apache.hadoop.util.ShutdownHookManager$1.run(ShutdownHookManager.java:54)
> {code}



--
This message was sent by Atlassian JIRA
(v6.1#6144)

Reply via email to