apache/dubbo · error · IllegalArgumentException

${message}

Error message

${message}

What it means

Thrown by the private guard JavaBeanDescriptor.notNull(). The descriptor's property map is keyed by non-null names, so setProperty, getProperty and containsProperty refuse a null key with IllegalArgumentException. The message comes from the call site (e.g. "Property name is null").

Source

Thrown at dubbo-common/src/main/java/org/apache/dubbo/common/beanutil/JavaBeanDescriptor.java:194

        return properties.containsKey(propertyName);
    }

    @Override
    public Iterator<Map.Entry<Object, Object>> iterator() {
        return properties.entrySet().iterator();
    }

    public int propertySize() {
        return properties.size();
    }

    private boolean isValidType(int type) {
        return TYPE_MIN <= type && type <= TYPE_MAX;
    }

    private void notNull(Object obj, String message) {
        if (obj == null) {
            throw new IllegalArgumentException(message);
        }
    }

    private void notEmpty(String string, String message) {
        if (isEmpty(string)) {
            throw new IllegalArgumentException(message);
        }
    }

    private boolean isEmpty(String string) {
        return string == null || "".equals(string.trim());
    }
}

View on GitHub (pinned to 3a3043227f)

Solutions

  1. Make sure the property name argument is non-null before calling setProperty/getProperty/containsProperty.
  2. When building a descriptor from a Map, filter or skip null keys before invoking setProperty.
  3. Search the stack trace for the setProperty/getProperty/containsProperty caller to find which code path supplied null.

Example fix

// before
descriptor.setProperty(mapKey, value); // mapKey may be null

// after
if (mapKey != null) {
    descriptor.setProperty(mapKey, value);
}
Defensive patterns

Strategy: validation

Validate before calling

if (propertyName == null) {
    throw new IllegalArgumentException("propertyName must not be null");
}
descriptor.setProperty(propertyName, value);

Try / catch

try {
    descriptor.setProperty(name, value);
} catch (IllegalArgumentException e) {
    // name was null; log and skip
}

Prevention

When it happens

Trigger: Calling descriptor.setProperty(null, value), descriptor.getProperty(null), or descriptor.containsProperty(null) on a JavaBeanDescriptor instance.

Common situations: Deserializing a Map that contains a null key into a JavaBeanDescriptor; programmatic descriptor construction where the key variable was never assigned; a Map.put(null,...) being replayed through setProperty during serialization.

Related errors


AI-assisted analysis of apache/dubbo@3a3043227f (2026-08-14). Data as JSON: /api/errors/d17b9a5868467daf. Report an issue: GitHub.