You are viewing a plain text version of this content. The canonical link for it is here.
Posted to common-issues@hadoop.apache.org by "Hadoop QA (JIRA)" <ji...@apache.org> on 2015/05/02 06:28:07 UTC
[jira] [Commented] (HADOOP-7614) Reloading configuration when using
imputstream resources results in org.xml.sax.SAXParseException
[ https://issues.apache.org/jira/browse/HADOOP-7614?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14524631#comment-14524631 ]
Hadoop QA commented on HADOOP-7614:
-----------------------------------
\\
\\
| (x) *{color:red}-1 overall{color}* |
\\
\\
|| Vote || Subsystem || Runtime || Comment ||
| {color:red}-1{color} | patch | 0m 0s | The patch command could not apply the patch during dryrun. |
\\
\\
|| Subsystem || Report/Notes ||
| Patch URL | http://issues.apache.org/jira/secure/attachment/12493327/HADOOP-7614-v2.patch |
| Optional Tests | javadoc javac unit findbugs checkstyle |
| git revision | trunk / f1a152c |
| Console output | https://builds.apache.org/job/PreCommit-HADOOP-Build/6277/console |
This message was automatically generated.
> Reloading configuration when using imputstream resources results in org.xml.sax.SAXParseException
> -------------------------------------------------------------------------------------------------
>
> Key: HADOOP-7614
> URL: https://issues.apache.org/jira/browse/HADOOP-7614
> Project: Hadoop Common
> Issue Type: Bug
> Components: conf
> Affects Versions: 0.21.0
> Reporter: Ferdy Galema
> Priority: Minor
> Attachments: HADOOP-7614-v1.patch, HADOOP-7614-v2.patch
>
>
> When using an inputstream as a resource for configuration, reloading this configuration will throw the following exception:
> Exception in thread "main" java.lang.RuntimeException: org.xml.sax.SAXParseException: Premature end of file.
> at org.apache.hadoop.conf.Configuration.loadResource(Configuration.java:1576)
> at org.apache.hadoop.conf.Configuration.loadResources(Configuration.java:1445)
> at org.apache.hadoop.conf.Configuration.getProps(Configuration.java:1381)
> at org.apache.hadoop.conf.Configuration.get(Configuration.java:569)
> ...
> Caused by: org.xml.sax.SAXParseException: Premature end of file.
> at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:249)
> at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:284)
> at javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:124)
> at org.apache.hadoop.conf.Configuration.loadResource(Configuration.java:1504)
> ... 4 more
> To reproduce see following testcode:
> Configuration conf = new Configuration();
> ByteArrayInputStream bais = new ByteArrayInputStream("<configuration></configuration>".getBytes());
> conf.addResource(bais);
> System.out.println(conf.get("blah"));
> conf.addResource("core-site.xml"); //just add a named resource, doesn't matter which one
> System.out.println(conf.get("blah"));
> Allowing inputstream resources is flexible, but in cases such as this in can lead to difficult to debug problems.
> What do you think is the best solution? We could:
> A) reset the inputstream after it is read instead of closing it (but what to do when the stream does not support marking?)
> B) leave it up to the client (for example make sure you implement close() so that it resets the steam)
> C) when reading the inputstream for the first time, cache or wrap the contents somehow so that is can be read multiple times (let's at least document it)
> D) remove inputstream method altogether
> e) something else?
> For now I have attached a patch for solution A.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)