[ https://issues.apache.org/jira/browse/HDFS-3579?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Colin Patrick McCabe updated HDFS-3579: --------------------------------------- Description: libhdfs does not consistently handle exceptions. Sometimes we don't free the memory associated with them (memory leak). Sometimes we invoke JNI functions that are not supposed to be invoked when an exception is active. Running a libhdfs test program with -Xcheck:jni shows the latter problem clearly: {code} WARNING in native method: JNI call made with exception pending WARNING in native method: JNI call made with exception pending WARNING in native method: JNI call made with exception pending WARNING in native method: JNI call made with exception pending WARNING in native method: JNI call made with exception pending Exception in thread "main" java.io.IOException: ... {code} was: Running a libhdfs test program with -Xcheck:jni reveals some problems. {code} WARNING in native method: JNI call made with exception pending WARNING in native method: JNI call made with exception pending WARNING in native method: JNI call made with exception pending WARNING in native method: JNI call made with exception pending WARNING in native method: JNI call made with exception pending Exception in thread "main" java.io.IOException: ... {code} The problem seems to be that in errnoFromException, we are calling classNameOfObject and some other JNI methods prior to clearing the pending exception. It should be simple enough to avoid doing this. Priority: Major (was: Minor) Target Version/s: 2.2.0-alpha Affects Version/s: (was: 2.1.0-alpha) 2.0.1-alpha Fix Version/s: (was: 2.1.0-alpha) Summary: libhdfs: fix exception handling (was: libhdfs: fix "WARNING in native method: JNI call made with exception pending" in errnoFromException) > libhdfs: fix exception handling > ------------------------------- > > Key: HDFS-3579 > URL: https://issues.apache.org/jira/browse/HDFS-3579 > Project: Hadoop HDFS > Issue Type: Bug > Components: libhdfs > Affects Versions: 2.0.1-alpha > Reporter: Colin Patrick McCabe > Assignee: Colin Patrick McCabe > Attachments: HDFS-3579.004.patch, HDFS-3579.005.patch > > > libhdfs does not consistently handle exceptions. Sometimes we don't free the > memory associated with them (memory leak). Sometimes we invoke JNI functions > that are not supposed to be invoked when an exception is active. > Running a libhdfs test program with -Xcheck:jni shows the latter problem > clearly: > {code} > WARNING in native method: JNI call made with exception pending > WARNING in native method: JNI call made with exception pending > WARNING in native method: JNI call made with exception pending > WARNING in native method: JNI call made with exception pending > WARNING in native method: JNI call made with exception pending > Exception in thread "main" java.io.IOException: ... > {code} -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa For more information on JIRA, see: http://www.atlassian.com/software/jira