[
https://issues.apache.org/jira/browse/HADOOP-12962?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Xiao Chen updated HADOOP-12962:
-------------------------------
Attachment: HADOOP-12962.01.patch
Patch 1 to fix the encoding.
Previously when creating URI, the key name string is directly concatenated,
leaving the special characters unescaped. This patch uses jersey
[UriBuilder|https://jersey.java.net/apidocs/2.0/jersey/javax/ws/rs/core/UriBuilder.html]
to do this.
Also trivially refactored the {{getKeyURI}} so that the 2 places currently
building URI share the method.
> KMS key names are correctly encoded when creating key
> -----------------------------------------------------
>
> Key: HADOOP-12962
> URL: https://issues.apache.org/jira/browse/HADOOP-12962
> Project: Hadoop Common
> Issue Type: Bug
> Reporter: Xiao Chen
> Assignee: Xiao Chen
> Attachments: HADOOP-12962.01.patch
>
>
> Creating a key that contains special character(s) in its name will result in
> failure when creating, while that key is in fact created ok on the underlying
> key provider.
> E.g.
> {noformat}
> $hadoop key create "key name"
> key name has not been created. java.io.IOException: HTTP status [500],
> exception [java.net.URISyntaxException], message [Illegal character in path
> at index 11: /v1/key/key name]
> java.io.IOException: HTTP status [500], exception
> [java.net.URISyntaxException], message [Illegal character in path at index
> 11: /v1/key/key name]
> at
> org.apache.hadoop.util.HttpExceptionUtils.validateResponse(HttpExceptionUtils.java:159)
> at
> org.apache.hadoop.crypto.key.kms.KMSClientProvider.call(KMSClientProvider.java:548)
> at
> org.apache.hadoop.crypto.key.kms.KMSClientProvider.call(KMSClientProvider.java:506)
> at
> org.apache.hadoop.crypto.key.kms.KMSClientProvider.createKeyInternal(KMSClientProvider.java:672)
> at
> org.apache.hadoop.crypto.key.kms.KMSClientProvider.createKey(KMSClientProvider.java:680)
> at
> org.apache.hadoop.crypto.key.KeyShell$CreateCommand.execute(KeyShell.java:483)
> at org.apache.hadoop.crypto.key.KeyShell.run(KeyShell.java:79)
> at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)
> at org.apache.hadoop.crypto.key.KeyShell.main(KeyShell.java:515)
> {noformat}
> but
> {noformat}
> $ hadoop key list
> Listing keys for KeyProvider:
> KMSClientProvider[https://hostname:16000/kms/v1/]
> key name
> {noformat}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)