Disable caching for JarURLConnection to avoid sharing JarFile with other users when loading resource from URL in Configuration class. Contributed by Zhihai Xu

(cherry picked from commit e690a32e57)
This commit is contained in:
Zhihai Xu 2015-09-18 08:24:03 -07:00
parent 6641ab83eb
commit 7576b4247b
2 changed files with 14 additions and 1 deletions

View File

@ -270,6 +270,10 @@ Release 2.8.0 - UNRELEASED
HADOOP-12413. AccessControlList should avoid calling getGroupNames in
isUserInList with empty groups. (Zhihai Xu via cnauroth)
HADOOP-12404. Disable caching for JarURLConnection to avoid sharing
JarFile with other users when loading resource from URL in Configuration
class. (zxu)
OPTIMIZATIONS
HADOOP-11785. Reduce the number of listStatus operation in distcp

View File

@ -34,7 +34,9 @@ import java.io.Reader;
import java.io.Writer;
import java.lang.ref.WeakReference;
import java.net.InetSocketAddress;
import java.net.JarURLConnection;
import java.net.URL;
import java.net.URLConnection;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
@ -2467,7 +2469,14 @@ public class Configuration implements Iterable<Map.Entry<String,String>>,
if (url == null) {
return null;
}
return parse(builder, url.openStream(), url.toString());
URLConnection connection = url.openConnection();
if (connection instanceof JarURLConnection) {
// Disable caching for JarURLConnection to avoid sharing JarFile
// with other users.
connection.setUseCaches(false);
}
return parse(builder, connection.getInputStream(), url.toString());
}
private Document parse(DocumentBuilder builder, InputStream is,