---
title: "v1.105.1 - Batched model usage writes and single spend log on the Responses bridge"
url: "/release_notes/v1.105.1/v1-105-1"
canonical_url: "https://docs.litellm.ai/release_notes/v1.105.1/v1-105-1"
type: "release-notes"
last_updated: "2026-10-14"
related:
  - "/release_notes/v1.106.0rc2/v1-106-0-rc-2"
  - "/release_notes/v1.105.0/v1-105-0"
---
# v1.105.1 - Batched model usage writes and single spend log on the Responses bridge

> Index of all LiteLLM docs: https://docs.litellm.ai/llms.txt

## Deploy this version

**Docker**

```bash
docker run \
-e LITELLM_MASTER_KEY=sk-<paste-a-long-random-key> \
-e DATABASE_URL=postgresql://<user>:<password>@<host>:5432/<dbname> \
-e STORE_MODEL_IN_DB=True \
-p 4000:4000 \
docker.litellm.ai/berriai/litellm:1.105.1
```

**Pip**

```bash
pip install litellm==1.105.1
```

This release is published as [`ghcr.io/berriai/litellm:v1.105.1`](https://github.com/BerriAI/litellm/pkgs/container/litellm). See the [GitHub release](https://github.com/BerriAI/litellm/releases/tag/v1.105.1) and the full [releases page](https://github.com/BerriAI/litellm/releases)

`v1.105.1` is a patch release on top of [`v1.105.0`](/release_notes/v1.105.0/v1-105-0). It backports two spend tracking fixes from `main` onto `stable/1.105.x`. There are no new database migrations and no breaking changes. The `v1.105.1` tag points at [`d665dc1`](https://github.com/BerriAI/litellm/commit/d665dc1a6315847fcad6cc2c1264ceb47c06abce)

## Key Highlights

- **Batched model usage writes**: the model leaderboard rollup no longer upserts `LiteLLM_DailyModelUsage` on every request, which removes the row lock contention that dropped SpendLogs rows when heavy traffic went to one model
- **Single spend log on the Responses bridge**: non-streaming requests of 256 KiB or more sent through the chat to Responses bridge log their spend once instead of twice

## Spend Tracking, Budgets and Rate Limiting

- The daily model usage rollup added with the model leaderboard in `v1.105.0` wrote one `LiteLLM_DailyModelUsage` upsert per request. At high request rates for a single model those upserts fought over the same row and held Prisma connections, so some SpendLogs rows were never written. Rollup rows are now queued in memory and written in batches by the existing spend log flush job. See [PR #44243](https://github.com/BerriAI/litellm/pull/44243)
- Non-streaming requests on the chat to Responses bridge whose messages were 256 KiB or larger ran the async success logging twice, which wrote two SpendLogs rows and counted key, team and daily spend twice. The two handlers now run one after the other on the same logging object, and the second one skips if the first already logged. See [PR #44508](https://github.com/BerriAI/litellm/pull/44508)

Both fixes and the version bump are backported together in [PR #46313](https://github.com/BerriAI/litellm/pull/46313)

### PR roll-up by ownership area

- Spend / Budgets / Rate Limits: 2

## Full Changelog

https://github.com/BerriAI/litellm/compare/v1.105.0...v1.105.1

## Related pages

- [v1.106.0rc2](https://docs.litellm.ai/release_notes/v1.106.0rc2/v1-106-0-rc-2.md)
- [v1.105.0](https://docs.litellm.ai/release_notes/v1.105.0/v1-105-0.md)
