bug: Transactional topic example exhausts producer_id limit with random IDs
@vgvoleg ya está trabajando en esto.
Desde el 17/9/2026.
Evaluación
Este issue todavía no se ha evaluado.
Descripción
Bug Report
YDB Python SDK version:
Environment
Environment is irrelevant for reproduction - issue is in code example
Current behavior:
In the transactional topic write example (topic_transactions_async_example.py):
- Each call to
tx_writerwithout explicitproducer_idgenerates a new random producer_id - Transaction retries create additional producer_ids
- This rapidly consumes the producer_id limit (100K per 14 days)
- The example encourages production-unsafe usage patterns
Expected behavior:
Examples should demonstrate best practices:
- Explicit
producer_idshould be used to avoid random ID generation - Example should be resilient to transaction retries
- Should show either fixed producer_id or partition_id usage
- Should not risk exhausting producer_id limits in production scenarios
Steps to reproduce:
- Use example from
topic_transactions_async_example.py - Run
write_with_tx_examplemethod in a loop or with frequent retries - Observe rapid growth of producer_ids in the topic
Related code:
https://github.com/ydb-platform/ydb-python-sdk/blob/main/examples/topic/topic_transactions_async_example.py#L28
async def write_with_tx_example(driver: ydb.aio.Driver, topic: str, message_count: int = 10):
async with ydb.aio.QuerySessionPool(driver) as session_pool:
async def callee(tx: ydb.aio.QueryTxContext):
tx_writer: ydb.TopicTxWriterAsyncIO = driver.topic_client.tx_writer(tx, topic)
for i in range(message_count):
async with await tx.execute(query=f"select {i} as res;") as result_stream:
async for result_set in result_stream:
message = str(result_set.rows[0]["res"])
await tx_writer.write(ydb.TopicWriterMessage(message))
print(f"Message {result_set.rows[0]['res']} was written with tx.")
await session_pool.retry_tx_async(callee)
Other information:
Current example can exhaust 100K producer_id limit under moderate load
Possible Solutions
Fixed producer_id
Explicit partition selection
- Lenguaje dominante
- Python
- Estrellas
- 102
- Forks
- 75
- Merge medio
- 1 d 23 h
- PR fusionados (30 d)
- 13
Guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de ydb-platform/ydb-python-sdk
-
enhancement
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
ydb-platform/ydb-python-sdk#290 ·
-
dev: Forbid imports relative Abiertoenhancement
Dificultad 4/5 3-5 días Aptitud para principiantes 45/100
ydb-platform/ydb-python-sdk#897 ·
-
enhancement
ydb-platform/ydb-python-sdk#895 · 1 comentario · 1 asignado ·
-
dev: Refactor legacy Abiertoenhancement
Dificultad 3/5 1-2 días Aptitud para principiantes 55/100
ydb-platform/ydb-python-sdk#884 · 1 comentario ·
-
feature: [SSO] support OIDC auth Abiertoenhancement
Dificultad 5/5 Más de una semana Aptitud para principiantes 35/100
ydb-platform/ydb-python-sdk#876 ·
Todos los issues de ydb-platform/ydb-python-sdk
Issues similares
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 75/100
-
hcocena Abiertopolicies-accepted pre-review precheck-passed
Dificultad 1/5 Menos de una hora Aptitud para principiantes 88/100
Bioconductor/BiocContributions#214 · 5 comentarios ·
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 92/100
TencentCloud/Octop#1169 · 1 comentario ·
-
[开源推荐] 在老板拷问你之前,先让 AI 灵魂拷问你 Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
521xueweihan/HelloGitHub#3778 ·
-
The version checker's trailing attribute region has no control for a less-than inside a quoted value Abiertoarea: dashboard area: tests bug perceived difficulty: 2 python
Dificultad 2/5 1-3 horas Aptitud para principiantes 84/100
Nitjsefnie-Harness-Commons/daedalus#1105 · 1 comentario ·