iflytek/astron-agent · error · BusinessException
REPO_KNOWLEDGE_QUERY_FAILED
REPO_KNOWLEDGE_QUERY_FAILED
Error message
ResponseEnum.REPO_KNOWLEDGE_QUERY_FAILED
What it means
RepoService.hitTest calls knowledgeV2ServiceCallHandler.knowledgeQuery(request); if the returned KnowledgeResponse code != 0 it logs the upstream message and throws REPO_KNOWLEDGE_QUERY_FAILED. This is a wrapper around a failure of the downstream knowledge retrieval microservice, not a problem with the repo record itself.
Solutions
- Read the server log line 'Knowledge retrieval failed, message:{}' for the upstream cause
- Verify the knowledge service is running and reachable (registration/config of knowledgeV2ServiceCallHandler target)
- Confirm the repo's documents completed vectorization and the underlying collection exists
- Retry with a smaller topN / shorter query to rule out payload-related rejections; then escalate to the knowledge service team with the logged message
Example fix
// before
KnowledgeResponse resp = handler.knowledgeQuery(request);
if (resp.getCode() != 0) { throw new BusinessException(ResponseEnum.REPO_KNOWLEDGE_QUERY_FAILED); }
// after
KnowledgeResponse resp = handler.knowledgeQuery(request);
if (resp.getCode() != 0) {
log.error("Knowledge retrieval failed, message:{}, repoId:{}", resp.getMessage(), repo.getId());
throw new BusinessException(ResponseEnum.REPO_KNOWLEDGE_QUERY_FAILED);
} Defensive patterns
Strategy: retry
Try / catch
try {
repoService.hitTest(repoId, query, topN, true);
} catch (BusinessException e) {
if ("REPO_KNOWLEDGE_QUERY_FAILED".equals(e.getCode())) {
// check knowledge service health, then retry with backoff
}
} Prevention
- Monitor knowledge service availability before running retrieval tests
- Ensure documents finished vectorizing before querying
- Bound topN and query length to known-safe values
- Retry transient failures with exponential backoff; alert on persistent non-zero codes
When it happens
Trigger: The knowledge core service returns a non-zero code — vector DB unavailable, embedding model error, malformed query, retrieval timeout, or core service internal error.
Common situations: Knowledge service not deployed or unreachable after a partial deployment; index/collection missing because documents never finished vectorizing; oversized topN or query text rejected by the retrieval engine.
Related errors
AI-assisted analysis of iflytek/astron-agent@5e758547a8 (2026-09-12).
Data as JSON: /api/errors/6d479dcef1d960dd.
Report an issue: GitHub.
Appendix: source
Thrown at console/backend/toolkit/src/main/java/com/iflytek/astron/console/toolkit/service/repo/RepoService.java:787
}
boolean hasEnabledFile = false;
for (FileDirectoryTree fileDirectoryTree : fileDirectoryTrees) {
FileInfoV2 fileInfoV2 = fileInfoV2Service.getById(fileDirectoryTree.getFileId());
if (fileInfoV2 != null && fileInfoV2.getEnabled() == 1) {
hasEnabledFile = true;
break;
}
}
if (!hasEnabledFile) {
throw new BusinessException(ResponseEnum.REPO_FILE_DISABLED);
}
QueryRequest request = this.getKnowledgeQueryObject(repo, topN, query);
KnowledgeResponse resp = knowledgeV2ServiceCallHandler.knowledgeQuery(request);
if (resp.getCode() != 0) {
log.error("Knowledge retrieval failed, message:{}", resp.getMessage());
throw new BusinessException(ResponseEnum.REPO_KNOWLEDGE_QUERY_FAILED);
}
HitTestHistory hitTestHistory = new HitTestHistory();
hitTestHistory.setRepoId(id);
hitTestHistory.setUserId(UserInfoManagerHandler.getUserId());
hitTestHistory.setQuery(query);
hitTestHistory.setCreateTime(new Timestamp(System.currentTimeMillis()));
historyService.save(hitTestHistory);
QueryRespData data = JSON.parseObject(resp.getData().toString(), QueryRespData.class);
List<ChunkInfo> results = data.getResults();
Map<Long, FileDirectoryTree> processedFileIds = new HashMap<>();
if (!CollectionUtils.isEmpty(results)) {
for (ChunkInfo info : results) {
String docId = info.getDocId();
FileInfoV2 fileInfoV2 = fileInfoV2Service.getOnly(new QueryWrapper<FileInfoV2>().eq("uuid", docId));
// Skip if this fileId has already been processed
if (!processedFileIds.containsKey(fileInfoV2.getId())) {View on GitHub (pinned to 5e758547a8)