[ 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)