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().
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
DaprSessionin the OpenAI Agents SDK. Selecting strong consistency passesstate_metadata={"consistency": "strong"}to the Dapr client, but that only populates request metadata. It does not set the dedicatedGetStateRequest.consistencyfield.Current behavior
With
dapr==1.16.0, both public methods have the argumentsstore_name,key,state_metadata, andmetadata(gRPC call metadata). The same limitation remains in the inspected current source ate4ad1818079c5089814e4d1610b585286d28b98f:Both construct the request as:
Reproduction evidence
Using the installed asynchronous Dapr client and a local
grpc.aiocapture server implementingDaprServicer.GetStateandSaveState, I exercised publicDaprSession.get_items()andadd_items()withconsistency=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.strongorConsistency.eventualthrough the publicget_state()API and serialize that choice into the dedicated protobuf field. Omitting the new argument should preserveCONSISTENCY_UNSPECIFIED. Actual guarantees remain dependent on state-store support.This request is limited to
get_state(): the inspectedGetBulkStateRequestdoes not have a corresponding consistency field.Release Note
RELEASE NOTE: ADD Optional read-consistency selection for synchronous and asynchronous
DaprClient.get_state().