{"record":{"id":"208b88d66c0ca813","repo":"xai-org/x-algorithm","slug":"unsupported-field-type-s-208b88","errorCode":null,"errorMessage":"Unsupported field type %s","messagePattern":"Unsupported field type (.+?)","errorType":"exception","errorClass":"SemanticCheckFailure","httpStatus":null,"severity":"error","filePath":"botmaker/src/java/com/twitter/botmaker/compiler/types/ThriftType.java","lineNumber":148,"sourceCode":"            getValueMetaData(setMetaData.elemMetaData, binaryFieldValueMetaDatas);\n        return new SetMetaData(setElemMetaData);\n\n      case TType.MAP:\n        org.apache.thrift.meta_data.MapMetaData mapMetaData =\n            (org.apache.thrift.meta_data.MapMetaData) valueMetaData;\n        FieldValueMetaData keyElemMetaData =\n            getValueMetaData(mapMetaData.keyMetaData, binaryFieldValueMetaDatas);\n        FieldValueMetaData valueElemMetaData =\n            getValueMetaData(mapMetaData.valueMetaData, binaryFieldValueMetaDatas);\n        return new MapMetaData(keyElemMetaData, valueElemMetaData);\n\n      case TType.STRUCT:\n        org.apache.thrift.meta_data.StructMetaData structMetaData =\n            (org.apache.thrift.meta_data.StructMetaData) valueMetaData;\n        return new TBaseStructMetaData(structMetaData.structClass);\n\n      default:\n        throw new SemanticCheckFailure(\n            String.format(\"Unsupported field type %s\", valueMetaData.type));\n    }\n  }\n\n  @Override\n  public Set<String> getFieldNames() {\n    return metadataMap.keySet();\n  }\n\n  public FieldMetaData getFieldMetadata(String fieldName) {\n    return metadataMap.get(fieldName);\n  }\n\n  @Override\n  public Type getFieldType(String fieldName) throws SemanticCheckFailure {\n    FieldMetaData metaData = metadataMap.get(fieldName);\n    if (metaData == null) {\n      throw new SemanticCheckFailure(","sourceCodeStart":130,"sourceCodeEnd":166,"githubUrl":"https://github.com/xai-org/x-algorithm/blob/24c60942c5c5fdad3a6addffb4c6e6d2f228f04f/botmaker/src/java/com/twitter/botmaker/compiler/types/ThriftType.java#L130-L166","documentation":"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'.","triggerScenarios":"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.","commonSituations":"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.","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"],"exampleFix":"// before\nfield: payload  // thrift binary field, unsupported TType\n// after\nfield: payloadStr  // string-typed field, or upgrade botmaker","handlingStrategy":"try-catch","validationCode":"switch (valueMetaData.type) {\n  case TType.BOOL: case TType.BYTE: case TType.DOUBLE: case TType.I16:\n  case TType.I32: case TType.I64: case TType.STRING: case TType.STRUCT: break;\n  default: skip();\n}","typeGuard":null,"tryCatchPattern":"catch SemanticCheckFailure 'Unsupported field type' and skip/fail the field with its TType code","preventionTips":["Avoid exotic thrift types in botmaker-referenced fields","Upgrade botmaker alongside thrift runtime upgrades"],"tags":["thrift","type-system","schema-validation"],"backgroundTag":"unsupported-thrift-field-type","analyzedSha":"24c60942c5c5fdad3a6addffb4c6e6d2f228f04f","analyzedAt":"2026-08-28T11:40:14.686Z","schemaVersion":2},"datasetVersion":"2026-08-28T16:17:29.566Z"}