Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

[FEATURE REQUEST] Expose read consistency in DaprClient.get_state

Abierto
#1,200 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
3/5
Tiempo estimado
1-2 días
Aptitud para principiantes
76/100
Tipo de issue
Nueva funcionalidad
Claridad
Bien especificado
Estado de actividad
Activo
Stack tecnológico
grpc, python
Área
api

Línea de trabajo

Comience con la construcción síncrona de la solicitud en dapr/clients/grpc/client.py alrededor de la línea 703 y con la ruta asíncrona en dapr/aio/clients/grpc/client.py alrededor de la línea 641. Compare los campos de GetStateRequest con el manejo existente de la consistencia del estado y, a continuación, verifique que ambas rutas públicas de get_state() conserven los valores predeterminados existentes y codifiquen la consistencia seleccionada en el campo protobuf dedicado.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

Describe the feature

Please expose an optional read-consistency argument on both synchronous and asynchronous DaprClient.get_state(), preserving existing defaults and positional arguments.

I encountered this while investigating DaprSession in the OpenAI Agents SDK. Selecting strong consistency passes state_metadata={"consistency": "strong"} to the Dapr client, but that only populates request metadata. It does not set the dedicated GetStateRequest.consistency field.

Current behavior

With dapr==1.16.0, both public methods have the arguments store_name, key, state_metadata, and metadata (gRPC call metadata). The same limitation remains in the inspected current source at e4ad1818079c5089814e4d1610b585286d28b98f:

Both construct the request as:

req = api_v1.GetStateRequest(store_name=store_name, key=key, metadata=state_metadata)
Reproduction evidence

Using the installed asynchronous Dapr client and a local grpc.aio capture server implementing DaprServicer.GetState and SaveState, I exercised public DaprSession.get_items() and add_items() with consistency=DAPR_CONSISTENCY_STRONG. The client HTTP readiness check was disabled only for this isolated mock-server test; protobuf serialization and gRPC transport used the actual Dapr client.

The captured read request was:

{
  "store_name": "statestore",
  "key": "session-strong:messages",
  "consistency_enum_value": 0,
  "consistency_name": "CONSISTENCY_UNSPECIFIED",
  "metadata": {"consistency": "strong"}
}

The corresponding write request correctly carried options.consistency = CONSISTENCY_STRONG. This establishes the request-encoding difference; it does not demonstrate stale reads against a real state store. The wire capture exercised the async path; the sync-path observation is from source inspection.

Expected behavior and scope

Allow callers to request Consistency.strong or Consistency.eventual through the public get_state() API and serialize that choice into the dedicated protobuf field. Omitting the new argument should preserve CONSISTENCY_UNSPECIFIED. Actual guarantees remain dependent on state-store support.

This request is limited to get_state(): the inspected GetBulkStateRequest does not have a corresponding consistency field.

Release Note

RELEASE NOTE: ADD Optional read-consistency selection for synchronous and asynchronous DaprClient.get_state().

Lenguaje dominante
Python
Estrellas
272
Forks
152
Merge medio
1 d 13 h
PR fusionados (30 d)
4

Guía de contribución

Abrir la guía de contribución

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de dapr/python-sdk

Todos los issues de dapr/python-sdk

Issues similares

Más issues de Python

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.