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 itView on GitHub (pinned to 8cd9021c24)
Solutions
- Find the caller of setValueSafelyInPropertyList and ensure the List<Property> it passes is initialized (new ArrayList<>) and sized before invocation.
- If the list legitimately may be null, switch to getValueSafelyFromPropertyList semantics or initialize it lazily at the call site.
- 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
- Initialize property lists eagerly when building plugin configurations.
- Prefer getValueSafelyFromPropertyList for reads; it returns a default instead of throwing.
- Document the required list size next to each setValueSafelyInPropertyList call.
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.