alibaba/spring-ai-alibaba · error · IllegalArgumentException
Dataset not found:
Error message
Dataset not found:
What it means
Thrown by DatasetVersionServiceImpl.create() when the parent dataset referenced by request.getDatasetId() does not exist (datasetMapper.selectById returns null). Versions can only be created for an existing dataset.
Source
Thrown at spring-ai-alibaba-admin/spring-ai-alibaba-admin-server-start/src/main/java/com/alibaba/cloud/ai/studio/admin/service/impl/DatasetVersionServiceImpl.java:48
public class DatasetVersionServiceImpl implements DatasetVersionService {
private final DatasetVersionMapper datasetVersionMapper;
private final DatasetMapper datasetMapper;
private final ExperimentMapper experimentMapper;
@Override
@Transactional
public DatasetVersion create(DatasetVersionCreateRequest request) {
log.info("Creating dataset version: {}", request);
// Validate request
if (request.getDatasetId() == null) {
throw new IllegalArgumentException("Dataset ID cannot be null");
}
//检查 dataset是否存在
if (datasetMapper.selectById(request.getDatasetId()) == null) {
throw new IllegalArgumentException("Dataset not found: " + request.getDatasetId());
}
// 获取当前最大的version
DatasetVersionDO latestDatasetVersionDO = datasetVersionMapper.selectLatestVersion(request.getDatasetId());
String currentVersion = Objects.isNull(latestDatasetVersionDO)?null:latestDatasetVersionDO.getVersion();
// Generate version number
String versionNumber = VersionUtils.generateVersionNumber(currentVersion);
// Build entity
DatasetVersionDO datasetVersionDO = DatasetVersionDO.builder()
.datasetId(request.getDatasetId())
.version(versionNumber)
.description(request.getDescription())
.dataCount(request.getDatasetItems().size())
.createTime(LocalDateTime.now())View on GitHub (pinned to f82da0b50f)
Solutions
- Verify the dataset exists via the dataset get/list API before creating a version
- Create the dataset first if it does not exist
- Check the datasetId value (not a version id) is being sent
- Confirm both operations run against the same database/environment
Example fix
// before
DatasetVersion v = datasetVersionService.create(req); // req.datasetId = 123 (never created)
// after
Dataset d = datasetService.getById(req.getDatasetId());
if (d == null) { d = datasetService.create(newDatasetRequest); req.setDatasetId(d.getId()); }
DatasetVersion v = datasetVersionService.create(req); Defensive patterns
Strategy: validation
Validate before calling
if (req.getDatasetId() == null || datasetService.getById(req.getDatasetId()) == null) { throw new BusinessException("parent dataset missing"); } Type guard
boolean canCreateVersion(Long datasetId) { return datasetId != null && datasetService.getById(datasetId) != null; } Try / catch
try { versionService.create(req); } catch (IllegalArgumentException e) { if (e.getMessage().startsWith("Dataset not found")) { createDatasetThenVersion(req); } else { throw e; } } Prevention
- Create the parent dataset before creating versions in scripts
- Verify ids against the live environment, not copied test values
- Use the same DB profile for dataset and version operations
When it happens
Trigger: Creating a version for a datasetId that was deleted, never created, or belongs to another environment/database.
Common situations: Client caches a dataset id after the dataset was removed; datasetId/versionId confusion; dev-vs-prod database mismatch; bulk-import scripts with fabricated ids.
Understand the failure class
Background: Record Not Found Errors: "not found", RecordNotFound, and "was not found" — what they mean and how to fix them — this error's family across 28 libraries.
Related errors
- 数据项不存在:
- 评测集不存在:
- Dataset version not found: {}
- Tool not found with id: <id>
- Unknown dataset status code:
AI-assisted analysis of alibaba/spring-ai-alibaba@f82da0b50f (2026-09-09).
Data as JSON: /api/errors/d9ce0677c363d2bd.
Report an issue: GitHub.