xai-org/x-algorithm · error · SemanticCheckFailure
Unsupported field type %s
Error message
Unsupported field type %s
What it means
ThriftType.getValueMetaData converts apache-thrift FieldValueMetaData to botmaker metadata; TType codes outside the supported set (ending at TType.STRUCT) hit default and throw SemanticCheckFailure 'Unsupported field type'.
Source
Thrown at botmaker/src/java/com/twitter/botmaker/compiler/types/ThriftType.java:148
getValueMetaData(setMetaData.elemMetaData, binaryFieldValueMetaDatas);
return new SetMetaData(setElemMetaData);
case TType.MAP:
org.apache.thrift.meta_data.MapMetaData mapMetaData =
(org.apache.thrift.meta_data.MapMetaData) valueMetaData;
FieldValueMetaData keyElemMetaData =
getValueMetaData(mapMetaData.keyMetaData, binaryFieldValueMetaDatas);
FieldValueMetaData valueElemMetaData =
getValueMetaData(mapMetaData.valueMetaData, binaryFieldValueMetaDatas);
return new MapMetaData(keyElemMetaData, valueElemMetaData);
case TType.STRUCT:
org.apache.thrift.meta_data.StructMetaData structMetaData =
(org.apache.thrift.meta_data.StructMetaData) valueMetaData;
return new TBaseStructMetaData(structMetaData.structClass);
default:
throw new SemanticCheckFailure(
String.format("Unsupported field type %s", valueMetaData.type));
}
}
@Override
public Set<String> getFieldNames() {
return metadataMap.keySet();
}
public FieldMetaData getFieldMetadata(String fieldName) {
return metadataMap.get(fieldName);
}
@Override
public Type getFieldType(String fieldName) throws SemanticCheckFailure {
FieldMetaData metaData = metadataMap.get(fieldName);
if (metaData == null) {
throw new SemanticCheckFailure(View on GitHub (pinned to 24c60942c5)
Solutions
- Avoid fields with the unsupported TType in botmaker rules
- Upgrade botmaker to a build supporting the TType (e.g. binary/uuid)
- Regenerate thrift code so metadata matches the thrift runtime in use
Example fix
// before field: payload // thrift binary field, unsupported TType // after field: payloadStr // string-typed field, or upgrade botmaker
Defensive patterns
Strategy: try-catch
Validate before calling
switch (valueMetaData.type) {
case TType.BOOL: case TType.BYTE: case TType.DOUBLE: case TType.I16:
case TType.I32: case TType.I64: case TType.STRING: case TType.STRUCT: break;
default: skip();
} Try / catch
catch SemanticCheckFailure 'Unsupported field type' and skip/fail the field with its TType code
Prevention
- Avoid exotic thrift types in botmaker-referenced fields
- Upgrade botmaker alongside thrift runtime upgrades
When it happens
Trigger: valueMetaData/listElemMetaData/setElemMetaData/keyElemMetaData/valueElemMetaData encountering a TType the compiler doesn't handle, e.g. TType.BINARY in older builds, TType.UUID, or stop/void sentinels from malformed metadata.
Common situations: Apache-thrift generated structs using field types newer than the botmaker compiler supports; thrift runtime upgrade introducing new TType constants; corrupted hand-built metadata in tests.
Related errors
- Unsupported field type %s
- Unsupported field type %s
- field %s not found in the metadata of thrift class %s
- field %s not found in the metadata of thrift class %s
- class has to be either a TBase or ThriftStruct: %s.
AI-assisted analysis of xai-org/x-algorithm@24c60942c5 (2026-08-28).
Data as JSON: /api/errors/208b88d66c0ca813.
Report an issue: GitHub.