From 95010a41fcea6ecf5dfd46d6e6f6f38c8b3e2a66 Mon Sep 17 00:00:00 2001 From: sdeka Date: Thu, 29 Aug 2019 21:23:50 +0530 Subject: [PATCH] HDDS-2057. Incorrect Default OM Port in Ozone FS URI Error Message. Signed-off-by: Anu Engineer --- .../hadoop/fs/ozone/BasicOzoneFileSystem.java | 26 +++++++++++++------ 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/hadoop-ozone/ozonefs/src/main/java/org/apache/hadoop/fs/ozone/BasicOzoneFileSystem.java b/hadoop-ozone/ozonefs/src/main/java/org/apache/hadoop/fs/ozone/BasicOzoneFileSystem.java index 4d7bfd98c6..06eedbafe7 100644 --- a/hadoop-ozone/ozonefs/src/main/java/org/apache/hadoop/fs/ozone/BasicOzoneFileSystem.java +++ b/hadoop-ozone/ozonefs/src/main/java/org/apache/hadoop/fs/ozone/BasicOzoneFileSystem.java @@ -43,6 +43,7 @@ import org.apache.hadoop.fs.Path; import org.apache.hadoop.fs.PathIsNotEmptyDirectoryException; import org.apache.hadoop.fs.permission.FsPermission; +import org.apache.hadoop.hdds.conf.OzoneConfiguration; import org.apache.hadoop.ozone.OmUtils; import org.apache.hadoop.ozone.om.exceptions.OMException; import org.apache.hadoop.security.UserGroupInformation; @@ -87,11 +88,20 @@ public class BasicOzoneFileSystem extends FileSystem { private static final Pattern URL_SCHEMA_PATTERN = Pattern.compile("([^\\.]+)\\.([^\\.]+)\\.{0,1}(.*)"); - private static final String URI_EXCEPTION_TEXT = "Ozone file system URL " + - "should be one of the following formats: " + - "o3fs://bucket.volume/key OR " + - "o3fs://bucket.volume.om-host.example.com/key OR " + - "o3fs://bucket.volume.om-host.example.com:5678/key"; + private OzoneConfiguration getOzoneConf(Configuration conf) { + + return (conf instanceof OzoneConfiguration) ? + (OzoneConfiguration) conf : new OzoneConfiguration(conf); + } + + private String getUriExceptionText(Configuration conf) { + + return "Ozone file system URL should be one of the following formats: " + + "o3fs://bucket.volume/key OR " + + "o3fs://bucket.volume.om-host.example.com/key OR " + + "o3fs://bucket.volume.om-host.example.com:" + + OmUtils.getOmRpcPort(getOzoneConf(conf)) + "/key"; + } @Override public void initialize(URI name, Configuration conf) throws IOException { @@ -106,7 +116,7 @@ public void initialize(URI name, Configuration conf) throws IOException { Matcher matcher = URL_SCHEMA_PATTERN.matcher(authority); if (!matcher.matches()) { - throw new IllegalArgumentException(URI_EXCEPTION_TEXT); + throw new IllegalArgumentException(getUriExceptionText(conf)); } String bucketStr = matcher.group(1); String volumeStr = matcher.group(2); @@ -118,14 +128,14 @@ public void initialize(URI name, Configuration conf) throws IOException { String[] parts = remaining.split(":"); // Array length should be either 1(host) or 2(host:port) if (parts.length > 2) { - throw new IllegalArgumentException(URI_EXCEPTION_TEXT); + throw new IllegalArgumentException(getUriExceptionText(conf)); } omHost = parts[0]; if (parts.length == 2) { try { omPort = Integer.parseInt(parts[1]); } catch (NumberFormatException e) { - throw new IllegalArgumentException(URI_EXCEPTION_TEXT); + throw new IllegalArgumentException(getUriExceptionText(conf)); } } else { // If port number is not specified, read it from config