mastra-ai/mastra · error · MastraError

EXPERIMENT_NO_ITEMS

EXPERIMENT_NO_ITEMS

Error message

No items in dataset ${datasetId} at version ${datasetVersion}

What it means

After resolving the dataset, runExperiment fetches the items for the dataset's version via getItemsByVersion; if the version has zero items the experiment would be meaningless, so a MastraError with id EXPERIMENT_NO_ITEMS is thrown. This guards against silently 'running' an experiment over an empty item set.

Source

Thrown at packages/core/src/datasets/experiment/index.ts:275

      datasetRecord = await datasetsStore.getDatasetById({ id: datasetId, filters: config.filters });
      if (!datasetRecord) {
        throw new MastraError({
          id: 'DATASET_NOT_FOUND',
          text: `Dataset not found: ${datasetId}`,
          domain: 'STORAGE',
          category: 'USER',
        });
      }

      datasetVersion = version ?? datasetRecord.version;
      const versionItems = await datasetsStore.getItemsByVersion({
        datasetId,
        version: datasetVersion,
      });

      if (versionItems.length === 0) {
        throw new MastraError({
          id: 'EXPERIMENT_NO_ITEMS',
          text: `No items in dataset ${datasetId} at version ${datasetVersion}`,
          domain: 'STORAGE',
          category: 'USER',
        });
      }

      items = versionItems.map(v => ({
        id: v.id,
        datasetVersion: v.datasetVersion,
        input: v.input,
        groundTruth: v.groundTruth,
        expectedTrajectory: v.expectedTrajectory as TrajectoryExpectation | undefined,
        requestContext: v.requestContext,
        metadata: v.metadata,
        toolMocks: v.toolMocks,
        unmockedToolPolicy: v.unmockedToolPolicy,
        scorerIds: v.scorerIds,

View on GitHub (pinned to 75dd419e61)

Solutions

  1. Add items to the dataset version via the datasets store (addItems/upload) before running
  2. Target the dataset version that actually contains items
  3. Check getItemsByVersion output to confirm the item count for that version
  4. If items were purged, restore/re-upload them and re-run

Example fix

// before
await runExperiment({ datasetId: 'ds_123', ... }); // version 2 empty
// after
const items = await datasetsStore.getItemsByVersion({ datasetId: 'ds_123', version: 2 });
if (items.length === 0) await datasetsStore.addItems({ datasetId: 'ds_123', items });
await runExperiment({ datasetId: 'ds_123', ... });
Defensive patterns

Strategy: validation

Validate before calling

const items = await datasetsStore.getItemsByVersion({ datasetId, version });
if (items.length === 0) throw new Error(`Dataset ${datasetId} v${version} has no items`);

Try / catch

try {
  await runExperiment(config);
} catch (err) {
  if (err instanceof MastraError && err.id === 'EXPERIMENT_NO_ITEMS') {
    // add items to the dataset version, then retry
  } else throw err;
}

Prevention

When it happens

Trigger: Running an experiment against a dataset version that contains no items — e.g. a newly created dataset whose items were never added, or a version where all items were deleted.

Common situations: Dataset created but item upload failed or was skipped; pointing at version N before items were pushed; retention job purged items; using the latest version identifier when items live on an earlier version.

Related errors


AI-assisted analysis of mastra-ai/mastra@75dd419e61 (2026-08-30). Data as JSON: /api/errors/d8b290522707f4e9. Report an issue: GitHub.