alibaba/spring-ai-alibaba · error · RuntimeException

Failed to create dataset version

Error message

Failed to create dataset version

What it means

Thrown by DatasetVersionServiceImpl.create() when datasetVersionMapper.insert() returns 0 or fewer affected rows, meaning the version row was not persisted. This is an unexpected database-level failure discovered after the insert executes.

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:75

        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())
                .status(request.getStatus() != null ? request.getStatus() : "DRAFT")
                .experiments("[]")
                .datasetItems(request.getDatasetItems() != null ? request.getDatasetItems().toString() : "[]")
                .build();

        // Insert into database
        int result = datasetVersionMapper.insert(datasetVersionDO);
        if (result <= 0) {
            throw new RuntimeException("Failed to create dataset version");
        }

        log.info("Dataset version created successfully: {}", datasetVersionDO);
        return DatasetVersion.fromDO(datasetVersionDO);
    }

    @Override
    public PageResult<DatasetVersion> list(DatasetVersionListRequest request) {
        log.info("Querying dataset version list: {}", request);

        // Extract search parameters from request
        Long datasetId = request.getDatasetId();

        // Calculate offset
        long offset = (request.getPageNumber() - 1L) * request.getPageSize();

        // Query data
        List<DatasetVersionDO> versionList = datasetVersionMapper.selectList(

View on GitHub (pinned to f82da0b50f)

Solutions

  1. Check application/MyBatis SQL logs for the failing INSERT and underlying SQL exception
  2. Apply pending schema migrations for dataset_version
  3. Verify the DB user has INSERT privileges on the table
  4. Retry the operation; if transient connection issues, add retry with backoff

Example fix

// before
try { datasetVersionService.create(req); } catch (RuntimeException e) { /* swallowed */ }
// after
try {
    datasetVersionService.create(req);
} catch (RuntimeException e) {
    log.error("dataset version insert failed", e); // inspect root SQL exception
    throw e;
}
Defensive patterns

Strategy: retry

Try / catch

try { versionService.create(req); } catch (RuntimeException e) { if (e.getMessage().equals("Failed to create dataset version")) { if (!retry(idempotencyKey)) { alertOps(e); } } else { throw e; } }

Prevention

When it happens

Trigger: Insert blocked by a constraint or trigger; logical-delete/ID-generation misconfiguration; table missing or schema drift between DO and table; DB connection failing mid-transaction (transaction then rolls back).

Common situations: Schema migrations not applied so the dataset_version table lacks a column; unique key collision; DB user lacks INSERT privilege; connection pool exhaustion.

Related errors


AI-assisted analysis of alibaba/spring-ai-alibaba@f82da0b50f (2026-09-09). Data as JSON: /api/errors/e1df18cde0687c7c. Report an issue: GitHub.