{"record":{"id":"3b5c3f5ea97087c4","repo":"appsmithorg/appsmith","slug":"pe-gsh-5000-3b5c3f","errorCode":"PE-GSH-5000","errorMessage":"Missing a valid response object.","messagePattern":"Missing a valid response object\\.","errorType":"exception","errorClass":"AppsmithPluginException","httpStatus":500,"severity":"error","filePath":"app/server/appsmith-plugins/googleSheetsPlugin/src/main/java/com/external/config/RowsBulkUpdateMethod.java","lineNumber":247,"sourceCode":"\n        final List<RowObject> body1 = (List<RowObject>) methodConfig.getBody();\n        List<List<Object>> collect = body1.stream()\n                .map(row ->\n                        row.getAsSheetValues(body1.get(0).getValueMap().keySet().toArray(new String[0])))\n                .collect(Collectors.toList());\n\n        return webClient\n                .method(HttpMethod.PUT)\n                .uri(uriBuilder.build(true).toUri())\n                .body(BodyInserters.fromValue(Map.of(\n                        \"range\", methodConfig.getSpreadsheetRange(), \"majorDimension\", \"ROWS\", \"values\", collect)));\n    }\n\n    @Override\n    public JsonNode transformExecutionResponse(\n            JsonNode response, MethodConfig methodConfig, Set<String> userAuthorizedSheetIds) {\n        if (response == null) {\n            throw new AppsmithPluginException(\n                    GSheetsPluginError.QUERY_EXECUTION_FAILED, ErrorMessages.MISSING_VALID_RESPONSE_ERROR_MSG);\n        }\n\n        return this.objectMapper.valueToTree(Map.of(\"message\", \"Updated sheet successfully!\"));\n    }\n\n    private Map<Integer, RowObject> getRowObjectMapFromBody(JsonNode body) {\n\n        if (!body.isArray()) {\n            throw new AppsmithPluginException(\n                    AppsmithPluginError.PLUGIN_EXECUTE_ARGUMENT_ERROR,\n                    ErrorMessages.EXPECTED_ARRAY_OF_ROW_OBJECT_MESSAGE);\n        }\n\n        if (body.isEmpty()) {\n            throw new AppsmithPluginException(\n                    AppsmithPluginError.PLUGIN_EXECUTE_ARGUMENT_ERROR, ErrorMessages.EMPTY_UPDATE_ROW_OBJECTS_MESSAGE);\n        }","sourceCodeStart":229,"sourceCodeEnd":265,"githubUrl":"https://github.com/appsmithorg/appsmith/blob/8cd9021c24cdbea1c3c12c966073708e83db60c2/app/server/appsmith-plugins/googleSheetsPlugin/src/main/java/com/external/config/RowsBulkUpdateMethod.java#L229-L265","documentation":"PE-GSH-5000 (QUERY_EXECUTION_FAILED). transformExecutionResponse guards against a null response from the Google Sheets API. A null response means the upstream HTTP call produced no body at all (transport-level failure, interceptor returning null, or a framework bug).","triggerScenarios":"The PUT to the Sheets values.update endpoint returned a null body, e.g. because of a network blip, an auth gateway that swallowed the response, or a misconfigured WebClient filter returning Mono.empty().","commonSituations":"Transient network/proxy issue; OAuth token expired mid-flight and the gateway returned an empty body; running in an environment with an HTTP interceptor that drops 2xx bodies.","solutions":["Retry the action - most null-response cases are transient.","Confirm the Google Sheets datasource OAuth2 token is still valid (re-authorize if needed).","Check network/proxy logs for a response with an empty body or a non-2xx status that was swallowed.","If it persists, file an issue against the plugin - a null success response indicates a framework-level defect."],"exampleFix":null,"handlingStrategy":"retry","validationCode":null,"typeGuard":null,"tryCatchPattern":"try {\n    result = method.transformExecutionResponse(response, config, ids);\n} catch (AppsmithPluginException e) {\n    if (\"PE-GSH-5000\".equals(e.getAppsmithError().getCode()) && response == null) {\n        // retry with backoff or re-authorize datasource\n    }\n}","preventionTips":["Treat null-response errors as transient - retry first.","Keep the Google Sheets OAuth2 token fresh.","Monitor network/proxy for empty-body responses."],"tags":["google-sheets","appsmith","runtime","null-response","transient","bulk-update"],"backgroundTag":null,"analyzedSha":"8cd9021c24cdbea1c3c12c966073708e83db60c2","analyzedAt":"2026-08-12T22:14:19.293Z","schemaVersion":2},"datasetVersion":"2026-08-12T23:17:12.415Z"}