apache/flink · error · java.lang.IllegalArgumentException

Invalid 'properties' property for object type in node

Error message

Invalid 'properties' property for object type in node: {}

What it means

Indicates the schema node declares type 'object' with a 'properties' entry that is itself not a JSON object (e.g. an array or string), so field definitions cannot be iterated. The location path pinpoints the malformed 'properties' node inside the document.

Solutions

  1. Address the cause reported by the error message: Invalid 'properties' property for object type in node: the reported value
  2. Verify the inputs, configuration values, and classpath/dependency setup related to this operation, then retry.

Example fix

Correct the condition described ("Invalid 'properties' property for object type in node: the reported value") and rerun the job or command.
Defensive patterns

Strategy: validation

When it happens

Trigger: Triggered at runtime when the operation fails because: Invalid 'properties' property for object type in node: the reported value.

Common situations: Commonly caused by misconfiguration, missing dependencies or files, unsupported types or operations, or invalid user input leading to: Invalid 'properties' property for object type in node: the reported value.


AI-assisted analysis of apache/flink@2f3c205e92 (2026-08-14). Data as JSON: /api/errors/8012a70b1031e7fe. Report an issue: GitHub.

Appendix: source

Thrown at flink-formats/flink-json/src/main/java/org/apache/flink/formats/json/JsonRowSchemaConverter.java:247

                    "Union types with more than just a null type are not supported yet.");
        }

        // return the first non-void type or void
        if (types.size() == 2 && types.get(0) == Types.VOID) {
            return types.get(1);
        } else {
            return types.get(0);
        }
    }

    private static TypeInformation<Row> convertObject(
            String location, JsonNode node, JsonNode root) {
        // validate properties
        if (!node.has(PROPERTIES)) {
            return Types.ROW();
        }
        if (!node.isObject()) {
            throw new IllegalArgumentException(
                    "Invalid '" + PROPERTIES + "' property for object type in node: " + location);
        }
        final JsonNode props = node.get(PROPERTIES);
        final String[] names = new String[props.size()];
        final TypeInformation<?>[] types = new TypeInformation[props.size()];

        final Iterator<Map.Entry<String, JsonNode>> fieldIter = props.fields();
        int i = 0;
        while (fieldIter.hasNext()) {
            final Map.Entry<String, JsonNode> subNode = fieldIter.next();

            // set field name
            names[i] = subNode.getKey();

            // set type
            types[i] = convertType(location + '/' + subNode.getKey(), subNode.getValue(), root);

            i++;

View on GitHub (pinned to 2f3c205e92)