iflytek/astron-agent · error
Record for re-answer request does not match
Error message
Record for re-answer request does not match
What it means
For re-answer requests, the found ChatReqRecords row must belong to the same chatId and UID as the current request. If chatReqRecord.getChatId() or getUid() differs, 'Record for re-answer request does not match' is sent over SSE and the request is aborted, preventing cross-conversation or cross-user regeneration.
Solutions
- Ensure the requestId is taken from the same conversation the reAnswer targets
- Clear client-side message caches when switching user/space/chat
- Re-fetch conversation history after any account or space switch before regenerating
Example fix
// before
reAnswer({ chatId: currentChatId, requestId: lastSelectedRequestId });
// after
if (lastSelectedRequestId.chatId !== currentChatId) { lastSelectedRequestId = null; return; }
reAnswer({ chatId: currentChatId, requestId: lastSelectedRequestId.id }); Defensive patterns
Strategy: validation
Validate before calling
if (selectedMessage.chatId !== currentChatId || selectedMessage.uid !== currentUid) { clearSelection(); return; } Type guard
function belongsToChat(rec, chatId, uid) { return rec != null && rec.chatId === chatId && rec.uid === uid; } Prevention
- Reset message selection when switching chats/users
- Keep requestId bound to its originating conversation
- Clear caches on account/space switch
When it happens
Trigger: Calling reAnswer where requestId resolves to a record whose chatId or uid differs from the request's chatId / authenticated user.
Common situations: Client mixes up message ids between two open conversations; reusing a requestId after switching accounts or spaces; cached state after the chat was branched (tree index child chats).
Understand the failure class
Background: "Must be a positive integer", "Invalid value", "Unsupported": the invalid-argument-value error family, when a library rejects the value you pass — this error's family across 35 libraries.
Related errors
- Current conversation window is unavailable
- MODEL_CHECK_FAILED
- Chat ID cannot be empty
- Please enter chat content
- Current conversation window assistant has been deleted
AI-assisted analysis of iflytek/astron-agent@5e758547a8 (2026-09-12).
Data as JSON: /api/errors/1c29ddb29a58a46f.
Report an issue: GitHub.
Appendix: source
Thrown at console/backend/hub/src/main/java/com/iflytek/astron/console/hub/controller/chat/ChatMessageController.java:181
Integer botId = chatList.getBotId();
if (chatBotDataService.botIsDeleted(botId.longValue())) {
log.warn("Current conversation window assistant has been deleted, sseId: {}, uid: {}, chatId: {}, botId: {}", sseId, uid, chatId, botId);
SseEmitterUtil.sendError(sseEmitter, "Current conversation window assistant has been deleted");
SseEmitterUtil.sendEndAndComplete(sseEmitter);
return null;
}
// Re-answering requires validating the legitimacy of question ID
if (requestId != null) {
ChatReqRecords chatReqRecord = chatDataService.findRequestById(requestId);
if (chatReqRecord == null) {
log.warn("Record for re-answer request does not exist, sseId: {}, requestId: {}", sseId, requestId);
SseEmitterUtil.sendError(sseEmitter, "Record for re-answer request does not exist");
SseEmitterUtil.sendEndAndComplete(sseEmitter);
return null;
} else if (!chatReqRecord.getChatId().equals(chatId) || !chatReqRecord.getUid().equals(uid)) {
log.warn("Record for re-answer request does not match, sseId: {}, uid: {}, chatId: {}, requestId: {}", sseId, uid, chatId, requestId);
SseEmitterUtil.sendError(sseEmitter, "Record for re-answer request does not match");
SseEmitterUtil.sendEndAndComplete(sseEmitter);
return null;
}
}
return new ChatContext(uid, chatId, botId);
}
/**
* Method to process chat request
*
* @param chatContext Chat context object
* @param text User input text
* @param fileUrl File URL
* @param sseEmitter SSE emitter object
* @param sseId SSE unique identifier
* @return Returns SseEmitter object
*/View on GitHub (pinned to 5e758547a8)