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

Colin Patrick McCabe commented on HDFS-6232:
--------------------------------------------

It looks like you are trying to make {{XMLUtils#addSaxString}} treat a {{null}} 
value as equal to the empty string.  This seems confusing to me, since when we 
read the XML file and create edits again, we can't distinguish between null and 
the empty string.

While it's possible that null and empty really are interchangeable here, I 
would rather leave it to the caller to make this determination.  Why not just 
do the simple thing and fix the ACL code so it doesn't pass {{null}} to this 
function?

bq. I tried to use org.apache.xml.serialize.XMLSerializer in Apache Xerces, but 
it was deprecated. I'm thinking we should use another library or write our own 
code.

Yeah.  The deprecation warnings aren't relevant to this JIRA.  Check out 
HDFS-4629 if you're interested in a solution to that.

> OfflineEditsViewer throws a NPE on edits containing ACL modifications
> ---------------------------------------------------------------------
>
>                 Key: HDFS-6232
>                 URL: https://issues.apache.org/jira/browse/HDFS-6232
>             Project: Hadoop HDFS
>          Issue Type: Bug
>          Components: tools
>    Affects Versions: 3.0.0, 2.4.0
>            Reporter: Stephen Chu
>            Assignee: Akira AJISAKA
>         Attachments: HDFS-6232.patch
>
>
> The OfflineEditsViewer using the XML parser will through a NPE when using an 
> edit with a SET_ACL op.
> {code}
> [root@hdfs-nfs current]# hdfs oev -i 
> edits_0000000000000000001-0000000000000000007 -o fsedits.out
> 14/04/10 14:14:18 ERROR offlineEditsViewer.OfflineEditsBinaryLoader: Got 
> RuntimeException at position 505
> Encountered exception. Exiting: null
> java.lang.NullPointerException
>       at 
> org.apache.hadoop.hdfs.util.XMLUtils.mangleXmlString(XMLUtils.java:122)
>       at org.apache.hadoop.hdfs.util.XMLUtils.addSaxString(XMLUtils.java:193)
>       at 
> org.apache.hadoop.hdfs.server.namenode.FSEditLogOp.appendAclEntriesToXml(FSEditLogOp.java:4085)
>       at 
> org.apache.hadoop.hdfs.server.namenode.FSEditLogOp.access$3300(FSEditLogOp.java:132)
>       at 
> org.apache.hadoop.hdfs.server.namenode.FSEditLogOp$SetAclOp.toXml(FSEditLogOp.java:3528)
>       at 
> org.apache.hadoop.hdfs.server.namenode.FSEditLogOp.outputToXml(FSEditLogOp.java:3928)
>       at 
> org.apache.hadoop.hdfs.tools.offlineEditsViewer.XmlEditsVisitor.visitOp(XmlEditsVisitor.java:116)
>       at 
> org.apache.hadoop.hdfs.tools.offlineEditsViewer.OfflineEditsBinaryLoader.loadEdits(OfflineEditsBinaryLoader.java:80)
>       at 
> org.apache.hadoop.hdfs.tools.offlineEditsViewer.OfflineEditsViewer.go(OfflineEditsViewer.java:142)
>       at 
> org.apache.hadoop.hdfs.tools.offlineEditsViewer.OfflineEditsViewer.run(OfflineEditsViewer.java:228)
>       at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)
>       at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:84)
>       at 
> org.apache.hadoop.hdfs.tools.offlineEditsViewer.OfflineEditsViewer.main(OfflineEditsViewer.java:237)
> [root@hdfs-nfs current]# 
> {code}
> This is reproducible by setting an acl on a file and then running the OEV on 
> the editsinprogress file.
> The stats and binary parsers run OK.



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Reply via email to