[
https://issues.apache.org/jira/browse/HADOOP-5307?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12681555#action_12681555
]
Chris Douglas commented on HADOOP-5307:
---------------------------------------
# bq. I believe that *using a pragmatical value for representing nulls, [...],
does not introduce a backward incompatibility at all*.
# bq. As for escaping literal instances of "\_\_null\_\_", *we can introduce an
escaping mechanism, however it will not be backwards compatible*, since "any"
form of escaping the value will result in some literal matching the value which
was not set by StringUtils#arrayToStrings().
These read as mutually exclusive statements. If escaping "\_\_null\_\_" is
backwards-incompatible, then escaping {{null}} is, too. That any escape
sequence needs a way to represent itself literally isn't controversial.
Further, the change is to a public utility class: even if we defined
"incompatible" statistically, the frequency of either case is unknown since its
domain is undefined.
I'm a little confused about why StringUtils needs its own escape for a null
reference. Converting an array of String with a null reference to a String with
a special symbol for null is odd. It's cleaner to throw from StringUtils if it
gets {{null}} and require callers to handle escaping.
bq. The issue occurs in the context of storing/restoring an array(with possible
null values) in the configuration. The specific use case arose after
HADOOP-4955 [...]
HADOOP-4955 probably should not have been committed to 0.19.1. It reads as an
improvement, not a fix to a regression.
That said, if HADOOP-4955 is the cause, then this _is_ a regression in 0.19.1.
I'm not sure what to do about this. Since the regression is in DBOutputFormat,
wouldn't it make sense to fix this there?
Other:
* What was committed didn't match the patch posted here. There was a conflict
in the imports for StringUtils.
* One of the cases added in testArrayToStringToArray (nullArr3) doesn't have a
corresponding test.
> Fix null value handling in StringUtils#arrayToString() and #getStrings()
> ------------------------------------------------------------------------
>
> Key: HADOOP-5307
> URL: https://issues.apache.org/jira/browse/HADOOP-5307
> Project: Hadoop Core
> Issue Type: Bug
> Components: util
> Affects Versions: 0.21.0
> Reporter: Enis Soztutar
> Assignee: Enis Soztutar
> Attachments: h5307_v1.patch
>
>
> StringUtils#arrayToString() converts String array to a String of comma
> separated elements. If the String array includes null values, these are
> recovered as "null" (literal) from getStrings() method, which eventually
> causes configuration issues.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.