Hacktoberfest 2026 : les issues que les mainteneurs ont marquées pour octobre, ouvertes et accessibles aux débutants. Parcourir les issues Hacktoberfest

bug: LANGFUSE_MAX_EVENT_SIZE_BYTES is parsed but never enforced for score events

Ouverte
#1,966 0 commentaires 0 réactions 1 personne assignée Voir sur GitHub

Les mainteneurs répondent en général sous 1 jour

@hassiebp y travaille déjà.

Depuis le 9/10/2026.

  • #1970 par @moneebullah25 — ouverte

Évaluation

Cette issue n'a pas encore été évaluée.

Description

bug feat-scores sdk-python
Describe the bug

MAX_EVENT_SIZE_BYTES = int(os.environ.get("LANGFUSE_MAX_EVENT_SIZE_BYTES", 1_000_000)) (score_ingestion_consumer.py#L18) is not referenced anywhere else in the repo (grep -rn MAX_EVENT_SIZE langfuse only finds the definition). The env var was added in #1103 ("make max event and batch size configurable"), but it currently has no effect: an oversized score event is posted as-is instead of being dropped or truncated.

Secondary point: in _next() the running total is compared to MAX_BATCH_SIZE_BYTES only after the event has already been appended (score_ingestion_consumer.py#L83-L108), so a batch can exceed the batch limit by up to one event (and since single events are not capped, by an arbitrary amount).

Expected: events above LANGFUSE_MAX_EVENT_SIZE_BYTES are dropped (with a logged error) or truncated, and the batch limit is checked before appending.

Actual: a 10 MB score comment is sent in a single request. Whether the server then rejects it and how that is surfaced depends on the 4xx handling; today a rejected batch is dropped without a log line (see #1874, which is about that part). Users who set the env var, as in langfuse/langfuse#7027, get no client-side effect from it.

Severity is low to medium: it only affects unusually large score payloads, but the env var suggests protection that is not there.

Steps to reproduce
import httpx
from queue import Queue
from langfuse._utils.request import LangfuseClient
from langfuse._task_manager.score_ingestion_consumer import ScoreIngestionConsumer, MAX_EVENT_SIZE_BYTES, MAX_BATCH_SIZE_BYTES
sizes = []
def h(req): sizes.append(len(req.content)); return httpx.Response(200, json={})
cl = LangfuseClient("pk", "sk", "http://x", "1", 5, httpx.Client(transport=httpx.MockTransport(h)))
q = Queue(); c = ScoreIngestionConsumer(ingestion_queue=q, identifier=0, client=cl, public_key="pk", flush_at=15)
q.put({"id": "big", "type": "score-create", "body": {"comment": "x" * 10_000_000}})
c.upload()
print("MAX_EVENT", MAX_EVENT_SIZE_BYTES, "MAX_BATCH", MAX_BATCH_SIZE_BYTES, "posted bytes", sizes)

Observed output:

MAX_EVENT 1000000 MAX_BATCH 2500000 posted bytes [10000173]
Langfuse Cloud or self-hosted?

Either; the behaviour is client side only.

If self-hosted, what version are you running?

n/a

SDK and integration versions

langfuse 4.17.0 (main @ bf11ec121479145923ff27b32ec2ad1d06fd2d51), Python 3.14.0.

Additional information

Possible direction: after computing item_size in _next(), if item_size > MAX_EVENT_SIZE_BYTES: logger.error(...); self._ingestion_queue.task_done(); continue, and check total_size + item_size > MAX_BATCH_SIZE_BYTES before appending, carrying the event into the next batch. Alternatively remove the constant and the env var if client-side enforcement is not wanted.

Minor and separate: int(os.environ[...]) at import time makes import langfuse raise on a malformed value (this was also noted in the review of #1103).

Related: #1874 (4xx batch drops are not logged), langfuse/langfuse#7027 (413 from the server with LANGFUSE_MAX_EVENT_SIZE_BYTES set).

Are you interested in contributing a fix for this bug?

Yes

Langage dominant
Python
Étoiles
498
Forks
361
Merge moyen
16 h 40 min
PR mergées (30 j)
38

Préparer son environnement

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de langfuse/langfuse-python

Toutes les issues de langfuse/langfuse-python

Issues similaires

Plus d'issues Python

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.