HDFS-16207. Remove NN logs stack trace for non-existent xattr query (#3375)
This commit is contained in:
parent
c0890e6d04
commit
bddc9bf63c
@ -0,0 +1,40 @@
|
||||
/**
|
||||
* Licensed to the Apache Software Foundation (ASF) under one
|
||||
* or more contributor license agreements. See the NOTICE file
|
||||
* distributed with this work for additional information
|
||||
* regarding copyright ownership. The ASF licenses this file
|
||||
* to you under the Apache License, Version 2.0 (the
|
||||
* "License"); you may not use this file except in compliance
|
||||
* with the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package org.apache.hadoop.hdfs.protocol;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
import org.apache.hadoop.classification.InterfaceAudience;
|
||||
import org.apache.hadoop.classification.InterfaceStability;
|
||||
|
||||
/**
|
||||
* The exception that happens when you ask to get a non existing XAttr.
|
||||
*/
|
||||
@InterfaceAudience.Private
|
||||
@InterfaceStability.Evolving
|
||||
public class XAttrNotFoundException extends IOException {
|
||||
private static final long serialVersionUID = -6506239904158794057L;
|
||||
public static final String DEFAULT_EXCEPTION_MSG =
|
||||
"At least one of the attributes provided was not found.";
|
||||
public XAttrNotFoundException() {
|
||||
this(DEFAULT_EXCEPTION_MSG);
|
||||
}
|
||||
public XAttrNotFoundException(String msg) {
|
||||
super(msg);
|
||||
}
|
||||
}
|
@ -26,6 +26,7 @@
|
||||
import org.apache.hadoop.hdfs.DFSConfigKeys;
|
||||
import org.apache.hadoop.hdfs.DFSUtil;
|
||||
import org.apache.hadoop.hdfs.XAttrHelper;
|
||||
import org.apache.hadoop.hdfs.protocol.XAttrNotFoundException;
|
||||
import org.apache.hadoop.hdfs.protocol.proto.HdfsProtos;
|
||||
import org.apache.hadoop.hdfs.protocol.proto.HdfsProtos.ReencryptionInfoProto;
|
||||
import org.apache.hadoop.hdfs.protocolPB.PBHelperClient;
|
||||
@ -116,8 +117,7 @@ static List<XAttr> getXAttrs(FSDirectory fsd, FSPermissionChecker pc,
|
||||
return filteredAll;
|
||||
}
|
||||
if (filteredAll == null || filteredAll.isEmpty()) {
|
||||
throw new IOException(
|
||||
"At least one of the attributes provided was not found.");
|
||||
throw new XAttrNotFoundException();
|
||||
}
|
||||
List<XAttr> toGet = Lists.newArrayListWithCapacity(xAttrs.size());
|
||||
for (XAttr xAttr : xAttrs) {
|
||||
@ -131,8 +131,7 @@ static List<XAttr> getXAttrs(FSDirectory fsd, FSPermissionChecker pc,
|
||||
}
|
||||
}
|
||||
if (!foundIt) {
|
||||
throw new IOException(
|
||||
"At least one of the attributes provided was not found.");
|
||||
throw new XAttrNotFoundException();
|
||||
}
|
||||
}
|
||||
return toGet;
|
||||
|
@ -125,6 +125,7 @@
|
||||
import org.apache.hadoop.hdfs.protocol.QuotaExceededException;
|
||||
import org.apache.hadoop.hdfs.protocol.RecoveryInProgressException;
|
||||
import org.apache.hadoop.hdfs.protocol.ReplicatedBlockStats;
|
||||
import org.apache.hadoop.hdfs.protocol.XAttrNotFoundException;
|
||||
import org.apache.hadoop.hdfs.protocol.ZoneReencryptionStatus;
|
||||
import org.apache.hadoop.hdfs.protocol.RollingUpgradeInfo;
|
||||
import org.apache.hadoop.hdfs.protocol.SnapshotDiffReport;
|
||||
@ -531,7 +532,8 @@ public NameNodeRpcServer(Configuration conf, NameNode nn)
|
||||
AclException.class,
|
||||
FSLimitException.PathComponentTooLongException.class,
|
||||
FSLimitException.MaxDirectoryItemsExceededException.class,
|
||||
DisallowedDatanodeException.class);
|
||||
DisallowedDatanodeException.class,
|
||||
XAttrNotFoundException.class);
|
||||
|
||||
clientRpcServer.addSuppressedLoggingExceptions(StandbyException.class,
|
||||
UnresolvedPathException.class);
|
||||
|
@ -37,6 +37,7 @@
|
||||
import org.apache.hadoop.fs.permission.FsPermission;
|
||||
import org.apache.hadoop.fs.permission.PermissionStatus;
|
||||
import org.apache.hadoop.hdfs.XAttrHelper;
|
||||
import org.apache.hadoop.hdfs.protocol.XAttrNotFoundException;
|
||||
import org.apache.hadoop.hdfs.protocol.proto.HdfsProtos;
|
||||
import org.apache.hadoop.hdfs.server.namenode.FSImageFormatPBINode;
|
||||
import org.apache.hadoop.hdfs.server.namenode.FSImageFormatProtobuf;
|
||||
@ -452,8 +453,7 @@ String getXAttrs(String path, List<String> names, String encoder)
|
||||
}
|
||||
|
||||
if (!found) {
|
||||
throw new IOException(
|
||||
"At least one of the attributes provided was not found.");
|
||||
throw new XAttrNotFoundException();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -37,6 +37,7 @@
|
||||
import java.util.function.Supplier;
|
||||
|
||||
import org.apache.commons.lang3.RandomStringUtils;
|
||||
import org.apache.hadoop.hdfs.protocol.XAttrNotFoundException;
|
||||
import org.apache.hadoop.util.Lists;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
@ -3438,7 +3439,7 @@ public Object run() throws Exception {
|
||||
String str = out.toString();
|
||||
assertTrue("xattr value was incorrectly returned",
|
||||
str.indexOf(
|
||||
"getfattr: At least one of the attributes provided was not found")
|
||||
"getfattr: " + XAttrNotFoundException.DEFAULT_EXCEPTION_MSG)
|
||||
>= 0);
|
||||
out.reset();
|
||||
}
|
||||
|
@ -36,6 +36,7 @@
|
||||
import org.apache.hadoop.hdfs.DistributedFileSystem;
|
||||
import org.apache.hadoop.hdfs.HdfsConfiguration;
|
||||
import org.apache.hadoop.hdfs.MiniDFSCluster;
|
||||
import org.apache.hadoop.hdfs.protocol.XAttrNotFoundException;
|
||||
import org.apache.hadoop.io.IOUtils;
|
||||
import org.apache.hadoop.security.AccessControlException;
|
||||
import org.apache.hadoop.security.UserGroupInformation;
|
||||
@ -408,7 +409,7 @@ public void testGetXAttrs() throws Exception {
|
||||
Assert.fail("expected IOException");
|
||||
} catch (IOException e) {
|
||||
GenericTestUtils.assertExceptionContains(
|
||||
"At least one of the attributes provided was not found.", e);
|
||||
XAttrNotFoundException.DEFAULT_EXCEPTION_MSG, e);
|
||||
}
|
||||
|
||||
/* Throw an exception if an xattr that was requested does not exist. */
|
||||
@ -422,7 +423,7 @@ public void testGetXAttrs() throws Exception {
|
||||
Assert.fail("expected IOException");
|
||||
} catch (IOException e) {
|
||||
GenericTestUtils.assertExceptionContains(
|
||||
"At least one of the attributes provided was not found.", e);
|
||||
XAttrNotFoundException.DEFAULT_EXCEPTION_MSG, e);
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user