apache/dolphinscheduler · error · IllegalArgumentException
jdbcRegistryData: is invalidated
Error message
jdbcRegistryData: is invalidated
What it means
JdbcRegistryDataChangeEventDTO.fromJdbcRegistryDataChangeEvent parses the JSON payload of a change event into a JdbcRegistryData object; if JSONUtils.parseObject returns null (invalid or empty JSON), the DTO cannot be built and this IllegalArgumentException is thrown. It is a guard against corrupted or unparsable event data flowing through the JDBC registry's notification channel.
Source
Thrown at dolphinscheduler-registry/dolphinscheduler-registry-plugins/dolphinscheduler-registry-jdbc/src/main/java/org/apache/dolphinscheduler/plugin/registry/jdbc/model/DTO/JdbcRegistryDataChangeEventDTO.java:56
private EventType eventType;
private JdbcRegistryDataDTO jdbcRegistryData;
private Date createTime;
public enum EventType {
ADD,
UPDATE,
DELETE;
}
public static JdbcRegistryDataChangeEventDTO fromJdbcRegistryDataChangeEvent(JdbcRegistryDataChangeEvent jdbcRegistryDataChangeEvent) {
JdbcRegistryData jdbcRegistryData =
JSONUtils.parseObject(jdbcRegistryDataChangeEvent.getJdbcRegistryData(), JdbcRegistryData.class);
if (jdbcRegistryData == null) {
throw new IllegalArgumentException(
"jdbcRegistryData: " + jdbcRegistryDataChangeEvent.getJdbcRegistryData() + " is invalidated");
}
return JdbcRegistryDataChangeEventDTO.builder()
.id(jdbcRegistryDataChangeEvent.getId())
.jdbcRegistryData(JdbcRegistryDataDTO.fromJdbcRegistryData(jdbcRegistryData))
.eventType(EventType.valueOf(jdbcRegistryDataChangeEvent.getEventType()))
.createTime(jdbcRegistryDataChangeEvent.getCreateTime())
.build();
}
public static JdbcRegistryDataChangeEvent toJdbcRegistryDataChangeEvent(JdbcRegistryDataChangeEventDTO jdbcRegistryDataChangeEvent) {
return JdbcRegistryDataChangeEvent.builder()
.id(jdbcRegistryDataChangeEvent.getId())
.jdbcRegistryData(JSONUtils.toJsonString(jdbcRegistryDataChangeEvent.getJdbcRegistryData()))
.eventType(jdbcRegistryDataChangeEvent.getEventType().name())
.createTime(jdbcRegistryDataChangeEvent.getCreateTime())
.build();
}View on GitHub (pinned to 02eac45a1b)
Solutions
- Inspect the offending event's raw JSON string (included in the message) and fix or delete the corrupted row/event
- Verify the JSON serialization format matches the current JdbcRegistryData class version
- Add validation at write time so only valid JdbcRegistryData JSON is persisted
Example fix
// before
JdbcRegistryData data = JSONUtils.parseObject(event.getJdbcRegistryData(), JdbcRegistryData.class);
// after
if (StringUtils.isBlank(event.getJdbcRegistryData())) {
log.warn("Skipping invalid change event: {}", event.getId());
return;
}
JdbcRegistryData data = JSONUtils.parseObject(event.getJdbcRegistryData(), JdbcRegistryData.class); Defensive patterns
Strategy: try-catch
Validate before calling
String raw = event.getJdbcRegistryData(); if (raw == null || raw.isEmpty() || !raw.trim().startsWith("{")) { skip(event); } Try / catch
try { dto = JdbcRegistryDataChangeEventDTO.fromJdbcRegistryDataChangeEvent(event); } catch (IllegalArgumentException e) { log.error("Corrupt event {}: {}", event.getId(), e.getMessage()); } Prevention
- Validate JSON before persisting JdbcRegistryData rows
- Keep serialization library/config consistent across versions
- Monitor consumer logs for repeated corrupt-event warnings
When it happens
Trigger: A JdbcRegistryDataChangeEvent whose getJdbcRegistryData() returns null, empty, or non-JSON text; JSON that parses to null under the fastjson configuration used by JSONUtils; corrupted rows in the jdbc registry data table broadcast as change events.
Common situations: Database rows edited manually or truncated by column-size limits, version mismatch where the serialized JdbcRegistryData JSON schema changed, and consumers replaying old or malformed event records.
Understand the failure class
Background: "failed to unmarshal" / json.Unmarshal errors: why parsing a response into a Go struct fails and how to fix it — this error's family across 23 libraries.
Related errors
- Object json deserialization exception.
- Object: + obj + to json serialization exception.
- itemsList is null
- headerParams is not a valid json
- bodyParams is not a valid json
AI-assisted analysis of apache/dolphinscheduler@02eac45a1b (2026-09-06).
Data as JSON: /api/errors/a29799f4f889b8af.
Report an issue: GitHub.