unclecode/crawl4ai · error · QuotaExceeded

artifact storage quota exceeded

Error message

artifact storage quota exceeded

What it means

Error "artifact storage quota exceeded" thrown in unclecode/crawl4ai.

Source

Thrown at deploy/docker/artifacts.py:84

                try:
                    st = entry.stat(follow_symlinks=False)
                    if os.path.stat.S_ISREG(st.st_mode):
                        total += st.st_size
                except OSError:
                    continue
    except FileNotFoundError:
        return 0
    return total


def write_artifact(kind: str, data: bytes) -> Dict:
    """Write bytes under a server-generated opaque id. Returns metadata."""
    ext, mime = _KIND.get(kind, (".bin", "application/octet-stream"))
    if len(data) > MAX_ARTIFACT_BYTES:
        raise ArtifactTooLarge(f"artifact exceeds {MAX_ARTIFACT_BYTES} bytes")
    init_store()
    if _dir_size() + len(data) > ARTIFACT_QUOTA_BYTES:
        raise QuotaExceeded("artifact storage quota exceeded")

    artifact_id = uuid.uuid4().hex  # 32 hex chars, unguessable
    path = os.path.join(ARTIFACT_DIR, artifact_id + ext)
    # O_EXCL: never follow/overwrite an existing entry; O_NOFOLLOW: refuse a
    # symlink at the final component. Server-chosen name => no traversal.
    flags = os.O_WRONLY | os.O_CREAT | os.O_EXCL | getattr(os, "O_NOFOLLOW", 0)
    fd = os.open(path, flags, 0o600)
    with os.fdopen(fd, "wb") as f:
        f.write(data)
    return {"artifact_id": artifact_id, "mime": mime, "size": len(data)}


def resolve_artifact(artifact_id: str) -> Tuple[str, str]:
    """Map an opaque id to (path, mime), enforcing hex-id, no-symlink, TTL.

    Raises ArtifactNotFound for an invalid id, a non-regular/symlink file, a
    missing file, or an expired artifact (so existence is never revealed).
    """

View on GitHub (pinned to 7e80152142)

Solutions

  1. Delete unused artifacts to free quota before storing new ones.
  2. Reduce artifact retention or size to stay within the storage quota.

Example fix

DELETE /artifacts/{id}  # free quota, then retry

When it happens

Trigger: Thrown at deploy/docker/artifacts.py:84 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of unclecode/crawl4ai@7e80152142 (2026-08-14). Data as JSON: /api/errors/7c938a1bc53c6b63. Report an issue: GitHub.