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
1 changed files with 18 additions and 8 deletions

View File

@ -43,6 +43,7 @@ import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path; import org.apache.hadoop.fs.Path;
import org.apache.hadoop.fs.PathIsNotEmptyDirectoryException; import org.apache.hadoop.fs.PathIsNotEmptyDirectoryException;
import org.apache.hadoop.fs.permission.FsPermission; 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.OmUtils;
import org.apache.hadoop.ozone.om.exceptions.OMException; import org.apache.hadoop.ozone.om.exceptions.OMException;
import org.apache.hadoop.security.UserGroupInformation; import org.apache.hadoop.security.UserGroupInformation;
@ -87,11 +88,20 @@ public class BasicOzoneFileSystem extends FileSystem {
private static final Pattern URL_SCHEMA_PATTERN = private static final Pattern URL_SCHEMA_PATTERN =
Pattern.compile("([^\\.]+)\\.([^\\.]+)\\.{0,1}(.*)"); Pattern.compile("([^\\.]+)\\.([^\\.]+)\\.{0,1}(.*)");
private static final String URI_EXCEPTION_TEXT = "Ozone file system URL " + private OzoneConfiguration getOzoneConf(Configuration conf) {
"should be one of the following formats: " +
"o3fs://bucket.volume/key OR " + return (conf instanceof OzoneConfiguration) ?
"o3fs://bucket.volume.om-host.example.com/key OR " + (OzoneConfiguration) conf : new OzoneConfiguration(conf);
"o3fs://bucket.volume.om-host.example.com:5678/key"; }
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 @Override
public void initialize(URI name, Configuration conf) throws IOException { public void initialize(URI name, Configuration conf) throws IOException {
@ -106,7 +116,7 @@ public class BasicOzoneFileSystem extends FileSystem {
Matcher matcher = URL_SCHEMA_PATTERN.matcher(authority); Matcher matcher = URL_SCHEMA_PATTERN.matcher(authority);
if (!matcher.matches()) { if (!matcher.matches()) {
throw new IllegalArgumentException(URI_EXCEPTION_TEXT); throw new IllegalArgumentException(getUriExceptionText(conf));
} }
String bucketStr = matcher.group(1); String bucketStr = matcher.group(1);
String volumeStr = matcher.group(2); String volumeStr = matcher.group(2);
@ -118,14 +128,14 @@ public class BasicOzoneFileSystem extends FileSystem {
String[] parts = remaining.split(":"); String[] parts = remaining.split(":");
// Array length should be either 1(host) or 2(host:port) // Array length should be either 1(host) or 2(host:port)
if (parts.length > 2) { if (parts.length > 2) {
throw new IllegalArgumentException(URI_EXCEPTION_TEXT); throw new IllegalArgumentException(getUriExceptionText(conf));
} }
omHost = parts[0]; omHost = parts[0];
if (parts.length == 2) { if (parts.length == 2) {
try { try {
omPort = Integer.parseInt(parts[1]); omPort = Integer.parseInt(parts[1]);
} catch (NumberFormatException e) { } catch (NumberFormatException e) {
throw new IllegalArgumentException(URI_EXCEPTION_TEXT); throw new IllegalArgumentException(getUriExceptionText(conf));
} }
} else { } else {
// If port number is not specified, read it from config // If port number is not specified, read it from config