HDDS-2057. Incorrect Default OM Port in Ozone FS URI Error Message.

Signed-off-by: Anu Engineer <aengineer@apache.org>
This commit is contained in:
sdeka 2019-08-29 21:23:50 +05:30 committed by Anu Engineer
parent 39e82acc48
commit 95010a41fc

View File

@ -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