apache/seatunnel · error · SensorsDataException
UNSUPPORTED_RECORD_TYPE
UNSUPPORTED_RECORD_TYPE
Error message
Unsupported : " + config.getRecordType()
What it means
When entity_name is 'users', SensorsDataRecordBuilder.Builder maps record_type to USER, USER_EVENT, or USER_DETAIL; any other record_type string throws SensorsDataException(UNSUPPORTED_RECORD_TYPE) with 'Unsupported : <value>'. The builder only accepts users/events/details as record types under the users entity.
Source
Thrown at seatunnel-connectors-v2/connector-sensorsdata/src/main/java/org/apache/seatunnel/connectors/sensorsdata/format/record/SensorsDataRecordBuilder.java:77
private SpecialItemRecord.Builder specialItemRecordBuilder = null;
private Builder(SensorsDataConfigBase config, RowAccessor rowAccessor) {
this.rowAccessor = rowAccessor;
switch (config.getEntityName().toLowerCase()) {
case USER_ENTITY_NAME:
switch (config.getRecordType().toLowerCase()) {
case USER_RECORD:
this.recordType = SensorsDataRecordType.USER;
break;
case EVENT_RECORD:
this.recordType = SensorsDataRecordType.USER_EVENT;
break;
case DETAIL_RECORD:
this.recordType = SensorsDataRecordType.USER_DETAIL;
break;
default:
throw new SensorsDataException(
SensorsDataErrorCode.UNSUPPORTED_RECORD_TYPE,
"Unsupported : " + config.getRecordType());
}
this.userRecordBuilder = UserRecordBase.newBuilder(rowAccessor);
break;
case SPECIAL_ITEM_ENTITY_NAME:
this.recordType = SensorsDataRecordType.SPECIAL_ITEM;
this.specialItemRecordBuilder = SpecialItemRecord.newBuilder(rowAccessor);
break;
default:
// not support item record yet.
throw new SensorsDataException(
SensorsDataErrorCode.UNSUPPORTED_RECORD_TYPE,
"Unsupported : " + config.getEntityName());
}
}
private Builder(SensorsDataRecordType recordType, RowAccessor rowAccessor) {View on GitHub (pinned to cf67b549a7)
Solutions
- Set record_type to one of exactly "users", "events", or "details" in the sink config.
- Check for singular/typo variants (event, user, detail) and fix them to the plural forms.
- If you intended item records, use entity_name="items" instead of changing record_type.
- Consult the connector documentation for the supported record_type values in your connector version.
Example fix
// before
sink {
SensorsData {
entity_name = "users"
record_type = "event" // unsupported
}
}
// after
sink {
SensorsData {
entity_name = "users"
record_type = "events"
}
} Defensive patterns
Strategy: validation
Validate before calling
Set<String> allowed = Set.of("users", "events", "details");
if ("users".equalsIgnoreCase(entityName) && !allowed.contains(recordType.toLowerCase())) {
throw new IllegalArgumentException(
"record_type must be one of users|events|details, got: " + recordType);
} Try / catch
try {
builder = SensorsDataRecordBuilder.newBuilder(config, rowAccessor);
} catch (SensorsDataException e) {
if (SensorsDataErrorCode.UNSUPPORTED_RECORD_TYPE.equals(e.getErrorCode())) {
throw new JobConfigException("Invalid record_type/entity_name: " + e.getMessage(), e);
}
throw e;
} Prevention
- Only use the documented record_type values: users, events, details.
- Watch for singular forms (event/user/detail) that are silently rejected at startup.
- Validate the whole config against the connector docs before submitting jobs.
- Pin the connector version and check its supported values when upgrading.
When it happens
Trigger: Sink startup with entity_name="users" and record_type set to any value other than "users", "events", or "details" (case-insensitive), e.g. "user", "event", "detail", "track", or "item".
Common situations: Typo or singular form used for record_type ("event" instead of "events"); copied config from an items-style sink where record_type differs; docs read from an older connector version that used different values.
Understand the failure class
Background: Invalid enum value errors: "Unknown type", "Invalid scope", "must be one of" — when a string is not on the library's allowed list — this error's family across 23 libraries.
Related errors
- EVENT_NAME_NOT_SET
- MISSING_NECESSARY_FIELD
- Unknown format type:
- not support this type of bufferType: ${bufferType}
- COMMON_ILLEGAL_ARGUMENT
AI-assisted analysis of apache/seatunnel@cf67b549a7 (2026-09-10).
Data as JSON: /api/errors/d77010d71ed15759.
Report an issue: GitHub.