You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository was archived by the owner on Apr 14, 2026. It is now read-only.
Introduce a transport interface in the SDK so consumers aren't forced into a specific gRPC version. The SDK currently takes grpc.ClientConnInterface directly, coupling consumers to our pinned gRPC version (v1.79.3, requires Go 1.24).
gRPC becomes an implementation detail in a separate sub-module (sdk/grpctransport or similar). Consumers can bring their own gRPC version or a non-gRPC transport.
Module structure after this change
sdk/configclient/ → go 1.22, no gRPC dependency
sdk/adminclient/ → go 1.22, no gRPC dependency
sdk/configwatcher/ → go 1.22, depends on configclient interface
sdk/grpctransport/ → go 1.24+, depends on gRPC, implements transport interfaces
sdk/tools/ → unchanged
Acceptance criteria
Transport interface defined in configclient and adminclient
GRPCTransport as default implementation in sdk/grpctransport
Existing New(conn) convenience API preserved (in grpctransport)
configwatcher uses configclient's interface, not gRPC directly
Description
Introduce a transport interface in the SDK so consumers aren't forced into a specific gRPC version. The SDK currently takes
grpc.ClientConnInterfacedirectly, coupling consumers to our pinned gRPC version (v1.79.3, requires Go 1.24).Approach
Define a transport interface per SDK module:
gRPC becomes an implementation detail in a separate sub-module (
sdk/grpctransportor similar). Consumers can bring their own gRPC version or a non-gRPC transport.Module structure after this change
Acceptance criteria
New(conn)convenience API preserved (in grpctransport)Notes