[
https://issues.apache.org/jira/browse/HADOOP-18802?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
ConfX updated HADOOP-18802:
---------------------------
Description:
h2. What happened:
When manually set fs.viewfs.mounttable.default.name.key to default (the same as
default value) in HCommon, test
org.apache.hadoop.fs.viewfs.TestFcMainOperationsLocalFs#testGlobStatusWithMultipleWildCardMatches
would fail.
But the test can pass if this parameter is not manually set in the
configuration file.
h2. Where's the bug:
In the constructor of InodeTree, the tree attempts to get all the mount table
entry points set by user in the configuration and process them one by one:
{code:java}
for (Entry<String, String> si : config) {
final String key = si.getKey();
if (!key.startsWith(mountTablePrefix)) {
continue;
}
gotMountTableEntry = true;
LinkType linkType;
String src = key.substring(mountTablePrefix.length());
...
{code}
Here mountTablePrefix="fs.viewfs.mounttable.default.". However, it just so
happens that the name of the configuration users use to specify the default
mount table is fs.viewfs.mounttable.default.name.key. Thus, if a user specifies
the default mount table and uses InodeTree the name.key would be falsely parsed
as the entry point to one of the mount tables, which would cause InodeTree to
throw an exception since name.key is not a valid entry.
h2. Stack trace:
{code:java}
java.lang.RuntimeException: java.io.IOException: ViewFs: Cannot initialize:
Invalid entry in Mount table in config: name.key
at org.apache.hadoop.fs.FileContext.getFileContext(FileContext.java:470)
at
org.apache.hadoop.fs.viewfs.ViewFsTestSetup.setupForViewFsLocalFs(ViewFsTestSetup.java:88)
at
org.apache.hadoop.fs.viewfs.TestFcMainOperationsLocalFs.setUp(TestFcMainOperationsLocalFs.java:38){code}
h2. How to reproduce:
(1) Set fs.viewfs.mounttable.default.name.key to default
(2) Run test
org.apache.hadoop.fs.viewfs.TestFcMainOperationsLocalFs#testGlobStatusWithMultipleWildCardMatches
You can use the reproduce.sh in the attachment to easily reproduce the bug.
We are happy to provide a patch if this issue is confirmed.
was:
h2. What happened:
When manually set fs.viewfs.mounttable.default.name.key to default (the same as
default value) in HCommon, test
org.apache.hadoop.fs.viewfs.TestFcMainOperationsLocalFs#testGlobStatusWithMultipleWildCardMatches
would fail.
But the test can pass if this parameter is not manually set in the
configuration file.
h2. Where's the bug:
In the constructor of InodeTree, the tree attempts to get all the mount table
entry points set by user in the configuration and process them one by one:
{code:java}
for (Entry<String, String> si : config) {
final String key = si.getKey();
if (!key.startsWith(mountTablePrefix)) {
continue;
}
gotMountTableEntry = true;
LinkType linkType;
String src = key.substring(mountTablePrefix.length());
...
{code}
Here mountTablePrefix="fs.viewfs.mounttable.default.". However, it just so
happens that the name of the configuration users use to specify the default
mount table is fs.viewfs.mounttable.default.name.key. Thus, if a user specifies
the default mount table and uses InodeTree the name.key would be falsely parsed
as the entry point to one of the mount tables, which would cause InodeTree to
throw an exception since name.key is not a valid entry.
h2. Stack trace:
{code:java}
java.lang.RuntimeException: java.io.IOException: ViewFs: Cannot initialize:
Invalid entry in Mount table in config: name.key
at org.apache.hadoop.fs.FileContext.getFileContext(FileContext.java:470)
at
org.apache.hadoop.fs.viewfs.ViewFsTestSetup.setupForViewFsLocalFs(ViewFsTestSetup.java:88)
at
org.apache.hadoop.fs.viewfs.TestFcMainOperationsLocalFs.setUp(TestFcMainOperationsLocalFs.java:38){code}
h2. How to reproduce:
(1) Set fs.viewfs.mounttable.default.name.key to default
(2) Run test
org.apache.hadoop.fs.viewfs.TestFcMainOperationsLocalFs#testGlobStatusWithMultipleWildCardMatches
You can use the reproduce.sh in the attachment to easily reproduce the bug:
We are happy to provide a patch if this issue is confirmed.
> Collision of config key name fs.viewfs.mounttable.default.name.key to other
> keys that specify the entry point to mount tables
> -----------------------------------------------------------------------------------------------------------------------------
>
> Key: HADOOP-18802
> URL: https://issues.apache.org/jira/browse/HADOOP-18802
> Project: Hadoop Common
> Issue Type: Bug
> Components: common, conf, fs
> Reporter: ConfX
> Priority: Critical
> Attachments: reproduce.sh
>
>
> h2. What happened:
> When manually set fs.viewfs.mounttable.default.name.key to default (the same
> as default value) in HCommon, test
> org.apache.hadoop.fs.viewfs.TestFcMainOperationsLocalFs#testGlobStatusWithMultipleWildCardMatches
> would fail.
> But the test can pass if this parameter is not manually set in the
> configuration file.
> h2. Where's the bug:
> In the constructor of InodeTree, the tree attempts to get all the mount table
> entry points set by user in the configuration and process them one by one:
> {code:java}
> for (Entry<String, String> si : config) {
> final String key = si.getKey();
> if (!key.startsWith(mountTablePrefix)) {
> continue;
> }
>
> gotMountTableEntry = true;
> LinkType linkType;
> String src = key.substring(mountTablePrefix.length());
> ...
> {code}
> Here mountTablePrefix="fs.viewfs.mounttable.default.". However, it just so
> happens that the name of the configuration users use to specify the default
> mount table is fs.viewfs.mounttable.default.name.key. Thus, if a user
> specifies the default mount table and uses InodeTree the name.key would be
> falsely parsed as the entry point to one of the mount tables, which would
> cause InodeTree to throw an exception since name.key is not a valid entry.
> h2. Stack trace:
> {code:java}
> java.lang.RuntimeException: java.io.IOException: ViewFs: Cannot initialize:
> Invalid entry in Mount table in config: name.key
> at
> org.apache.hadoop.fs.FileContext.getFileContext(FileContext.java:470)
> at
> org.apache.hadoop.fs.viewfs.ViewFsTestSetup.setupForViewFsLocalFs(ViewFsTestSetup.java:88)
> at
> org.apache.hadoop.fs.viewfs.TestFcMainOperationsLocalFs.setUp(TestFcMainOperationsLocalFs.java:38){code}
> h2. How to reproduce:
> (1) Set fs.viewfs.mounttable.default.name.key to default
> (2) Run test
> org.apache.hadoop.fs.viewfs.TestFcMainOperationsLocalFs#testGlobStatusWithMultipleWildCardMatches
> You can use the reproduce.sh in the attachment to easily reproduce the bug.
> We are happy to provide a patch if this issue is confirmed.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]