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

  1. Inspect the offending event's raw JSON string (included in the message) and fix or delete the corrupted row/event
  2. Verify the JSON serialization format matches the current JdbcRegistryData class version
  3. 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

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


AI-assisted analysis of apache/dolphinscheduler@02eac45a1b (2026-09-06). Data as JSON: /api/errors/a29799f4f889b8af. Report an issue: GitHub.