zookeeper-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "ASF GitHub Bot (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (ZOOKEEPER-2763) Utils.toCsvBuffer() omits leading 0 for bytes < 0x10
Date Tue, 06 Jun 2017 21:03:18 GMT

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

Mime
View raw message