Skip to content

Commit 87683a0

Browse files
authored
fix(core): nested logger transport when creating multiple clients (#1485)
1 parent 653cd5e commit 87683a0

File tree

2 files changed

+28
-1
lines changed

2 files changed

+28
-1
lines changed

scw/client.go

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -530,5 +530,11 @@ func setRequestLogging(c httpClient) {
530530
logger.Warningf("client: cannot use request logger with HTTP client of type %T", c)
531531
return
532532
}
533-
standardHTTPClient.Transport = &requestLoggerTransport{rt: standardHTTPClient.Transport}
533+
// Do not wrap transport if it is already a logger
534+
// As client is a pointer, changing transport will change given client
535+
// If the same httpClient is used in multiple scwClient, it would add multiple logger transports
536+
_, isLogger := standardHTTPClient.Transport.(*requestLoggerTransport)
537+
if !isLogger {
538+
standardHTTPClient.Transport = &requestLoggerTransport{rt: standardHTTPClient.Transport}
539+
}
534540
}

scw/client_test.go

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,27 @@ func TestNewClientWithNoAuth(t *testing.T) {
4040
})
4141
}
4242

43+
func TestNewClientMultipleClients(t *testing.T) {
44+
t.Run("Basic", func(t *testing.T) {
45+
logger.EnableDebugMode()
46+
httpClient := &http.Client{}
47+
_, err := NewClient(WithHTTPClient(httpClient))
48+
testhelpers.AssertNoError(t, err)
49+
50+
_, isLogger := httpClient.Transport.(*requestLoggerTransport)
51+
testhelpers.Assert(t, isLogger, "transport should be a request logger")
52+
53+
_, err = NewClient(WithHTTPClient(httpClient))
54+
testhelpers.AssertNoError(t, err)
55+
56+
transport, isLogger := httpClient.Transport.(*requestLoggerTransport)
57+
testhelpers.Assert(t, isLogger, "transport should be a request logger")
58+
_, isLogger = transport.rt.(*requestLoggerTransport)
59+
testhelpers.Assert(t, !isLogger, "nested transport should not be a request logger")
60+
61+
})
62+
}
63+
4364
func TestNewClientWithDefaults(t *testing.T) {
4465
options := []ClientOption{
4566
WithInsecure(),

0 commit comments

Comments
 (0)