appsmithorg/appsmith · error · AppsmithPluginException

PE-PLG-5000

PE-PLG-5000

Error message

Appsmith server encountered an unexpected error: property list is null. Please reach out to our customer support to resolve this.

What it means

Thrown by PluginUtils.setValueSafelyInPropertyList when the supplied properties list is null. The method is a guarded setter meant to write a value at a specific index of a List<Property>; it explicitly refuses to auto-create the list because callers are expected to hand it a non-null, sized list. This error is a server-side invariant violation, not a user input error.

Source

Thrown at app/server/appsmith-interfaces/src/main/java/com/appsmith/external/helpers/PluginUtils.java:430

        return (T) properties.get(index).getValue();
    }

    public static <T> T getValueSafelyFromPropertyList(List<Property> properties, int index, Class<T> type) {
        return getValueSafelyFromPropertyList(properties, index, type, null);
    }

    public static Object getValueSafelyFromPropertyList(List<Property> properties, int index) {
        return getValueSafelyFromPropertyList(properties, index, Object.class);
    }

    public static JSONObject parseStringIntoJSONObject(String body) throws JSONException {
        return new JSONObject(body);
    }

    public static void setValueSafelyInPropertyList(List<Property> properties, int index, Object value)
            throws AppsmithPluginException {
        if (properties == null) {
            throw new AppsmithPluginException(
                    AppsmithPluginError.PLUGIN_ERROR,
                    "Appsmith server encountered an unexpected error: property list is null. Please reach out to "
                            + "our customer support to resolve this.");
        }

        if (index < 0 || index > properties.size() - 1) {
            throw new AppsmithPluginException(
                    AppsmithPluginError.PLUGIN_ERROR,
                    "Appsmith server encountered an unexpected error: index value out or range: index: " + index
                            + ", property list size: "
                            + properties.size() + ". Please reach out to our customer " + "support to resolve this.");
        }

        properties.get(index).setValue(value);
    }

    public static String replaceMappedColumnInStringValue(Map<String, String> mappedColumns, Object propertyValue) {
        // In case the entire value finds a match in the mappedColumns, replace it

View on GitHub (pinned to 8cd9021c24)

Solutions

  1. Find the caller of setValueSafelyInPropertyList and ensure the List<Property> it passes is initialized (new ArrayList<>) and sized before invocation.
  2. If the list legitimately may be null, switch to getValueSafelyFromPropertyList semantics or initialize it lazily at the call site.
  3. Re-save the action/datasource in the Appsmith UI so a fresh, fully-populated property list is persisted.

Example fix

// before
PluginUtils.setValueSafelyInPropertyList(properties, 2, value);

// after
if (properties == null) {
    properties = new ArrayList<>(Collections.nCopies(3, new Property()));
}
PluginUtils.setValueSafelyInPropertyList(properties, 2, value);
Defensive patterns

Strategy: validation

Validate before calling

List<Property> properties = configProperties;
if (properties == null) {
    properties = new ArrayList<>();
}
PluginUtils.setValueSafelyInPropertyList(properties, index, value);

Try / catch

try {
    PluginUtils.setValueSafelyInPropertyList(properties, index, value);
} catch (AppsmithPluginException e) {
    if (properties == null) {
        properties = new ArrayList<>(Collections.nCopies(index + 1, new Property()));
        PluginUtils.setValueSafelyInPropertyList(properties, index, value);
    } else {
        throw e;
    }
}

Prevention

When it happens

Trigger: A plugin calls setValueSafelyInPropertyList(null, index, value) because the datasource/action configuration did not initialize the property list. Common when a plugin template assumes a property at a given index exists but the configuration form returned null for that section.

Common situations: Migrating a plugin where the property index layout changed but the caller was not updated; a plugin that conditionally omits a property block; deserialization of an old saved action whose properties array was stored as null.


AI-assisted analysis of appsmithorg/appsmith@8cd9021c24 (2026-08-12). Data as JSON: /api/errors/e9e2b452a19835b4. Report an issue: GitHub.