iflytek/astron-agent · error · BusinessException
PROMPT_GROUP_SAVE_FAILED
PROMPT_GROUP_SAVE_FAILED
Error message
PROMPT_GROUP_SAVE_FAILED
What it means
Generic failure wrapper for WorkflowService.addComparisons: any non-BusinessException thrown while calling coreSystemService.addComparisons (the core system that persists the comparison-group protocol) is converted to PROMPT_GROUP_SAVE_FAILED. BusinessException from the core path is rethrown unchanged; everything else is masked behind this stable business code.
Solutions
- Read the server log line 'Failed to add comparison group protocol' for the wrapped root-cause exception.
- Verify the core service is up and reachable (health check, configured endpoint).
- Retry the addComparisons call after fixing the root cause; if persistent, fix the core-side error indicated in the log.
Example fix
// before
coreSystemService.addComparisons(protocol, flowId, version);
// after
try {
coreSystemService.addComparisons(protocol, flowId, version);
} catch (BusinessException e) {
throw e;
} catch (Exception e) {
log.error("addComparisons failed flowId={} version={}", flowId, version, e);
throw new BusinessException(ResponseEnum.PROMPT_GROUP_SAVE_FAILED);
} Defensive patterns
Strategy: try-catch
Validate before calling
boolean coreHealthy = coreHealthEndpoint.ping(); // check core service reachability first
if (!coreHealthy) throw new IllegalStateException("core service unavailable"); Try / catch
try {
workflowService.addComparisons(req);
} catch (BusinessException e) {
if ("PROMPT_GROUP_SAVE_FAILED".equals(e.getCode())) {
// retry with backoff; inspect server logs for root cause
} else { throw e; }
} Prevention
- Monitor core-system endpoint health and latency.
- Configure and verify the core base URL per environment.
- Retry idempotent adds with exponential backoff on transient failures.
When it happens
Trigger: The remote call coreSystemService.addComparisons throws — core service unreachable, core returned an error, network timeout, or a serialization/DB error inside the core system while saving the comparison protocol for the given flowId/version.
Common situations: Core workflow service is down or being redeployed; wrong core-system base URL configured for this environment; core rejects the protocol payload; transient network failure between console backend and core.
Related errors
AI-assisted analysis of iflytek/astron-agent@5e758547a8 (2026-09-12).
Data as JSON: /api/errors/0567c50d760cc424.
Report an issue: GitHub.
Appendix: source
Thrown at console/backend/toolkit/src/main/java/com/iflytek/astron/console/toolkit/service/workflow/WorkflowService.java:5132
}
public Object addComparisons(WorkflowComparisonReq workflowComparisonReq) {
try {
// A comparison row is later addressed only by workflow group + caller-supplied version.
// Authorize the top-level workflow before creating that executable snapshot.
loadWorkflowForDebugExecution(workflowComparisonReq.getFlowId());
// Workflow protocol conversion
WorkflowReq workflowReq = new WorkflowReq();
workflowReq.setData(workflowComparisonReq.getData());
workflowReq.setName(workflowComparisonReq.getName());
FlowProtocol protocol = buildWorkflowData(workflowReq, workflowComparisonReq.getFlowId());
// Call core system to add comparison group protocol
coreSystemService.addComparisons(protocol, workflowComparisonReq.getFlowId(), workflowComparisonReq.getVersion());
} catch (BusinessException ex) {
throw ex;
} catch (Exception ex) {
log.error("Failed to add comparison group protocol, flowId={}, version={}, error={}", workflowComparisonReq.getFlowId(), workflowComparisonReq.getVersion(), ex.getMessage(), ex);
throw new BusinessException(ResponseEnum.PROMPT_GROUP_SAVE_FAILED);
}
return ApiResult.success();
}
public Object deleteComparisons(WorkflowComparisonReq workflowComparisonReq) {
try {
requireOwnedWorkflow(workflowComparisonReq.getFlowId());
// Call core system to delete comparison group protocol
coreSystemService.deleteComparisons(workflowComparisonReq.getFlowId(), workflowComparisonReq.getVersion());
} catch (BusinessException ex) {
throw ex;
} catch (Exception ex) {
log.error("Failed to delete comparison group protocol, flowId={}, version={}, error={}", workflowComparisonReq.getFlowId(), workflowComparisonReq.getVersion(), ex.getMessage(), ex);
throw new BusinessException(ResponseEnum.RESPONSE_FAILED, "Failed to delete comparison group protocol: " + ex.getMessage());
}
return ApiResult.success();
}
View on GitHub (pinned to 5e758547a8)