﻿# DELETE_NOT_CONVERGED — a batched delete never ran out of matching entities

`DELETE /entity/{entityName}/{modelVersion}` with `transactionSize` set (and no `pointInTime`) deletes in batches, re-selecting the matching entities befo…

<em>cyoda-go version <a href="https://github.com/Cyoda/cyoda-go/releases/tag/v0.8.4">0.8.4</a></em>

# errors.DELETE_NOT_CONVERGED

## NAME

DELETE_NOT_CONVERGED — a batched delete kept finding new matching entities and was stopped before it finished.

## SYNOPSIS

HTTP: `409` `Conflict`. Retryable: `yes`.

## DESCRIPTION

`DELETE /entity/{entityName}/{modelVersion}` with `transactionSize` set (and no `pointInTime`) deletes in batches, re-selecting the matching entities before each batch. It finishes when a selection pass finds nothing left. If entities matching the condition are created at least as fast as they are removed, that pass never comes up empty, so the delete is capped at a fixed number of batches and fails with this code instead of running indefinitely.

Batches that committed before the failure are durable — the matching entities are partially deleted. The request fails rather than returning counts, because those counts would describe only the part of the work that fit inside the cap, not the delete that was asked for.

Do one of:

- stop the writers that keep creating matching entities, then retry;
- narrow the condition so the matching set is one the delete can drain;
- retry as-is if the concurrent writes were a transient burst.

An unbatched delete (`transactionSize` absent) and a `pointInTime`-pinned delete both resolve their target set once and cannot raise this.

Not to be confused with `CONFLICT`, which is a single entity losing an optimistic-concurrency race; the remedy there is to re-read that entity and replay the write.

## SEE ALSO

- errors
- errors.CONFLICT

## See also

- [`cyoda help errors`](/help/errors/) — Every error response from the Cyoda REST API carries a structured `errorCode` in the `properties` object. Multiple codes may share the same HTTP status. Programmatic handling keys on `errorCode`, not HTTP status.
- [`cyoda help errors CONFLICT`](/help/errors/conflict/) — The server detected that the entity was modified by another writer between the time it was read and the time the current write was committed. Normal outcome under concurrent load.

## Raw formats

- [`/help/errors/delete_not_converged.json`](/help/errors/delete_not_converged.json) — full descriptor (matches `GET /help/{topic}` envelope)
- [`/help/errors/delete_not_converged.md`](/help/errors/delete_not_converged.md) — body only