[
https://issues.apache.org/jira/browse/ZOOKEEPER-2763?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16039634#comment-16039634
]
ASF GitHub Bot commented on ZOOKEEPER-2763:
-------------------------------------------
Github user afine commented on a diff in the pull request:
https://github.com/apache/zookeeper/pull/238#discussion_r120479760
--- Diff: src/java/main/org/apache/jute/Utils.java ---
@@ -190,19 +190,32 @@ static String fromCSVString(String s) throws
IOException {
}
/**
+ * convert byte array to a string in hex format
*
- * @param s
- * @return
+ * @param barr
+ * @return
*/
- static String toXMLBuffer(byte barr[]) {
--- End diff --
Hi @alburthoffman -
I have been trying to reproduce the issue that you described. A stack trace
would be helpful here. Do you know exactly which test was failing for you (as I
don't think the logs for any relevant jenkins job still exists)? I was able to
get the whole test suite to pass with `DatatypeConverter.printHexBinary`.
Although, if I do not add null check I can get `testJuteToString` to fail.
```
java.lang.NullPointerException
at
javax.xml.bind.DatatypeConverterImpl.printHexBinary(DatatypeConverterImpl.java:479)
at
javax.xml.bind.DatatypeConverter.printHexBinary(DatatypeConverter.java:626)
at org.apache.jute.Utils.toHexString(Utils.java:203)
at org.apache.jute.Utils.toCSVBuffer(Utils.java:242)
at
org.apache.jute.CsvOutputArchive.writeBuffer(CsvOutputArchive.java:100)
at
org.apache.zookeeper.proto.SetDataRequest.toString(SetDataRequest.java:77)
at
org.apache.zookeeper.server.ToStringTest.testJuteToString(ToStringTest.java:36)
```
I was able to remedy this with a null check before the javax call.
```
private static String toHexString(byte barr[]) {
if (barr == null) {
return "";
}
return javax.xml.bind.DatatypeConverter.printHexBinary(barr);
}
```
Thanks for your patience on this.
Abe
> Utils.toCsvBuffer() omits leading 0 for bytes < 0x10
> ----------------------------------------------------
>
> Key: ZOOKEEPER-2763
> URL: https://issues.apache.org/jira/browse/ZOOKEEPER-2763
> Project: ZooKeeper
> Issue Type: Bug
> Components: jute
> Affects Versions: 3.5.2
> Reporter: Brandon Berg
> Assignee: Alburt Hoffman
> Priority: Minor
>
> org.apache.jute.Utils.toCsvBuffer(), which converts a byte array to a string
> containing the hex representation of that byte array, omits the leading zero
> for any byte less than 0x10, due to its use of Integer.toHexString, which has
> the same behavior.
> https://github.com/apache/zookeeper/blob/master/src/java/main/org/apache/jute/Utils.java#L234
> One consequence of this is that the hex strings printed by
> ClientCnxn.Packet.toString(), used in the debug logging for
> ClientCnxn.readResponse(), cannot be parsed to determine the result of a
> Zookeeper request from client debug logs.
> Utils.toXmlBuffer() appears to have the same issue.
> {code}
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)