From 26da11eaf0c6bf13042374eaf1320e2213facea8 Mon Sep 17 00:00:00 2001 From: Fabian Martinez <46371672+famarting@users.noreply.github.com> Date: Tue, 22 Apr 2025 10:19:35 +0200 Subject: [PATCH 1/2] fix api token initialization Signed-off-by: Fabian Martinez <46371672+famarting@users.noreply.github.com> --- client/client.go | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/client/client.go b/client/client.go index 4b8215ec..7dfbea69 100644 --- a/client/client.go +++ b/client/client.go @@ -355,7 +355,7 @@ func NewClientWithAddressContext(ctx context.Context, address string) (client Cl return nil, fmt.Errorf("error parsing address '%s': %w", address, err) } - at := &authToken{} + at := newAuthToken() opts := []grpc.DialOption{ grpc.WithUserAgent(userAgent()), @@ -404,7 +404,7 @@ func NewClientWithSocket(socket string) (client Client, err error) { if socket == "" { return nil, errors.New("nil socket") } - at := &authToken{} + at := newAuthToken() logger.Printf("dapr client initializing for: %s", socket) addr := "unix://" + socket conn, err := grpc.Dial( //nolint:staticcheck @@ -421,11 +421,6 @@ func NewClientWithSocket(socket string) (client Client, err error) { } func newClientWithConnection(conn *grpc.ClientConn, authToken *authToken) Client { - apiToken := os.Getenv(apiTokenEnvVarName) - if apiToken != "" { - logger.Println("client uses API token") - authToken.set(apiToken) - } return &GRPCClient{ connection: conn, protoClient: pb.NewDaprClient(conn), @@ -435,14 +430,26 @@ func newClientWithConnection(conn *grpc.ClientConn, authToken *authToken) Client // NewClientWithConnection instantiates Dapr client using specific connection. func NewClientWithConnection(conn *grpc.ClientConn) Client { - return newClientWithConnection(conn, &authToken{}) + return newClientWithConnection(conn, newAuthToken()) } +// NOTE: authToken must be created using newAuthToken() +// it is crucial to correctly initialize the dapr client with the API token from the environment variable type authToken struct { mu sync.RWMutex authToken string } +func newAuthToken() *authToken { + apiToken := os.Getenv(apiTokenEnvVarName) + if apiToken != "" { + logger.Println("client uses API token") + } + return &authToken{ + authToken: apiToken, + } +} + func (a *authToken) get() string { a.mu.RLock() defer a.mu.RUnlock() From 2f415dc275ac2dcaddb2ab53570573ee873b8dfe Mon Sep 17 00:00:00 2001 From: Fabian Martinez <46371672+famarting@users.noreply.github.com> Date: Thu, 17 Jul 2025 16:24:40 +0200 Subject: [PATCH 2/2] Update client/client.go Co-authored-by: Mike Nguyen Signed-off-by: Fabian Martinez <46371672+famarting@users.noreply.github.com> --- client/client.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/client.go b/client/client.go index 7dfbea69..7b82164c 100644 --- a/client/client.go +++ b/client/client.go @@ -443,7 +443,7 @@ type authToken struct { func newAuthToken() *authToken { apiToken := os.Getenv(apiTokenEnvVarName) if apiToken != "" { - logger.Println("client uses API token") + logger.Println("API Token loaded from the environment variable") } return &authToken{ authToken: apiToken,