alibaba/spring-ai-alibaba · error · RuntimeException

Failed to retrieve item from MongoDB-like storage

Error message

Failed to retrieve item from MongoDB-like storage

What it means

MongoStore.getItem fetches a document by namespace+key and converts it back to a StoreItem; any exception (other than the not-found path returning Optional.empty()) is wrapped in RuntimeException('Failed to retrieve item from MongoDB-like storage') under the read lock.

Solutions

  1. Check getCause() to see if deserialization (documentToStoreItem) failed
  2. Clear or migrate incompatible documents written by older versions
  3. Validate namespace/key are non-null before calling getItem
  4. Use searchItems or delete+rewrite the corrupted entry

Example fix

// before
StoreItem item = store.getItem(ns, key).orElseThrow();
// after
try {
    StoreItem item = store.getItem(ns, key).orElseThrow();
} catch (RuntimeException e) {
    log.warn("corrupt item {}, removing", key, e.getCause());
    store.deleteItem(ns, key);
}
Defensive patterns

Strategy: try-catch

Validate before calling

if (namespace == null || key == null || key.isBlank()) {
    throw new IllegalArgumentException("namespace and key required");
}

Try / catch

try {
    Optional<StoreItem> item = store.getItem(namespace, key);
    return item;
} catch (RuntimeException e) {
    logger.warn("getItem failed (corrupt doc?): {}", e.getCause());
    return Optional.empty();
}

Prevention

When it happens

Trigger: store.getItem(namespace, key) where createDocumentId or documentToStoreItem throws — malformed stored document missing required fields, wrong value type in the map, or null namespace/key.

Common situations: Reading data written by an older store version with a different document schema; manual edits/corruption of stored maps; type changes in value serialization between releases.

Understand the failure class

Background: Database query failed: Internal Server Error 500s wrapping SQL, Prisma, and connection failures — what to check first — this error's family across 16 libraries.

Related errors


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

Appendix: source

Thrown at spring-ai-alibaba-graph-core/src/main/java/com/alibaba/cloud/ai/graph/store/stores/MongoStore.java:117

	}

	@Override
	public Optional<StoreItem> getItem(List<String> namespace, String key) {
		validateGetItem(namespace, key);

		lock.readLock().lock();
		try {
			String documentId = createDocumentId(namespace, key);
			Map<String, Object> doc = mongoLikeCollection.get(documentId);

			if (doc == null) {
				return Optional.empty();
			}

			return Optional.of(documentToStoreItem(doc));
		}
		catch (Exception e) {
			throw new RuntimeException("Failed to retrieve item from MongoDB-like storage", e);
		}
		finally {
			lock.readLock().unlock();
		}
	}

	@Override
	public boolean deleteItem(List<String> namespace, String key) {
		validateDeleteItem(namespace, key);

		lock.writeLock().lock();
		try {
			String documentId = createDocumentId(namespace, key);
			return mongoLikeCollection.remove(documentId) != null;
		}
		catch (Exception e) {
			throw new RuntimeException("Failed to delete item from MongoDB-like storage", e);
		}

View on GitHub (pinned to f82da0b50f)