Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
0.5.2
-
None
-
None
Description
TEZ-1664 (0.5.2) introduced loading of tez-api-version-info.properties which is packaged within the tez-api.jar. Its using the current context classloader to load it:
Thread.currentThread().getContextClassLoader()
.getResourceAsStream(versionInfoFile);
In our environment we load the tez code as a plugin. Our context classloader doesn't have any reference to the Tez code. Thus when instantiating the tez client there is this exception:
WARN [2014-12-03 17:30:30.971] (VersionInfo.java:60) - Could not read 'tez-api-version-info.properties', java.io.IOException: Resource not found
java.io.IOException: Resource not found
at org.apache.tez.common.VersionInfo.<init>(VersionInfo.java:56)
at org.apache.tez.client.TezApiVersionInfo.<init>(TezApiVersionInfo.java:26)
at org.apache.tez.client.TezClient.<init>(TezClient.java:137)
at org.apache.tez.client.TezClient.create(TezClient.java:213)
....
Is there any specific reason the context classloader is used to load the file ?
Since the properties file is usually bundled within the jar would TezApiVersionInfo.class.getResourceAsStream() not be a better fit ?