apache/hadoop · error · IOException
<xattr> had no <val> or <valHex> entry.
Error message
<xattr> had no <val> or <valHex> entry.
What it means
Error "<xattr> had no <val> or <valHex> entry." thrown in apache/hadoop.
Source
Thrown at hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/tools/offlineImageViewer/OfflineImageReconstructor.java:899
Node xattr = xattrs.removeChild(INODE_SECTION_XATTR);
if (xattr == null) {
break;
}
INodeSection.XAttrCompactProto.Builder b =
INodeSection.XAttrCompactProto.newBuilder();
String ns = xattr.removeChildStr(INODE_SECTION_NS);
if (ns == null) {
throw new IOException("<xattr> had no <ns> entry.");
}
int nsIdx = XAttrProtos.XAttrProto.
XAttrNamespaceProto.valueOf(ns).ordinal();
String name = xattr.removeChildStr(SECTION_NAME);
String valStr = xattr.removeChildStr(INODE_SECTION_VAL);
byte[] val = null;
if (valStr == null) {
String valHex = xattr.removeChildStr(INODE_SECTION_VAL_HEX);
if (valHex == null) {
throw new IOException("<xattr> had no <val> or <valHex> entry.");
}
val = new HexBinaryAdapter().unmarshal(valHex);
} else {
val = valStr.getBytes(StandardCharsets.UTF_8);
}
b.setValue(ByteString.copyFrom(val));
// The XAttrCompactProto name field uses a fairly complex format
// to encode both the string table ID of the xattr name and the
// namespace ID. See the protobuf file for details.
int nameId = registerStringId(name);
int encodedName = (nameId << XATTR_NAME_OFFSET) |
((nsIdx & XATTR_NAMESPACE_MASK) << XATTR_NAMESPACE_OFFSET) |
(((nsIdx >> 2) & XATTR_NAMESPACE_EXT_MASK)
<< XATTR_NAMESPACE_EXT_OFFSET);
b.setName(encodedName);
xattr.verifyNoRemainingKeys("xattr");
bld.addXAttrs(b);View on GitHub (pinned to 2add963021)
Solutions
- Add a <val> or <valHex> element to the <xattr> stanza in the fsimage XML.
- Regenerate the fsimage XML with 'hdfs oiv' from a valid fsimage.
When it happens
Trigger: Thrown by oiv -r when an <xattr> stanza has neither a <val> nor a <valHex> entry, so the extended attribute value cannot be reconstructed.
Common situations: See trigger scenarios.
AI-assisted analysis of apache/hadoop@2add963021 (2026-08-22).
Data as JSON: /api/errors/46ed6b06514e5fcc.
Report an issue: GitHub.