Skip to content

Commit 0d84db7

Browse files
authored
Fix concurrent closure of shared api clients (#22)
1 parent 7386dec commit 0d84db7

File tree

3 files changed

+9
-24
lines changed

3 files changed

+9
-24
lines changed

argocd/provider.go

Lines changed: 5 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ import (
1818

1919
var apiClientConnOpts apiclient.ClientOptions
2020

21-
func Provider(doneCh chan bool) terraform.ResourceProvider {
21+
func Provider() terraform.ResourceProvider {
2222
return &schema.Provider{
2323
Schema: map[string]*schema.Schema{
2424
"server_addr": {
@@ -113,34 +113,25 @@ func Provider(doneCh chan bool) terraform.ResourceProvider {
113113
if err != nil {
114114
return nil, err
115115
}
116-
pcCloser, projectClient, err := apiClient.NewProjectClient()
116+
_, projectClient, err := apiClient.NewProjectClient()
117117
if err != nil {
118118
return nil, err
119119
}
120120

121-
acCloser, applicationClient, err := apiClient.NewApplicationClient()
121+
_, applicationClient, err := apiClient.NewApplicationClient()
122122
if err != nil {
123123
return nil, err
124124
}
125125

126-
rcCloser, repositoryClient, err := apiClient.NewRepoClient()
126+
_, repositoryClient, err := apiClient.NewRepoClient()
127127
if err != nil {
128128
return nil, err
129129
}
130130

131-
rcredsCloser, repoCredsClient, err := apiClient.NewRepoCredsClient()
131+
_, repoCredsClient, err := apiClient.NewRepoCredsClient()
132132
if err != nil {
133133
return nil, err
134134
}
135-
136-
// Clients connection pooling, close when the provider execution ends
137-
go func(done chan bool) {
138-
<-done
139-
util.Close(pcCloser)
140-
util.Close(acCloser)
141-
util.Close(rcCloser)
142-
util.Close(rcredsCloser)
143-
}(doneCh)
144135
return initServerInterface(
145136
apiClient,
146137
projectClient,

argocd/provider_test.go

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,24 +9,22 @@ import (
99

1010
var testAccProviders map[string]terraform.ResourceProvider
1111
var testAccProvider *schema.Provider
12-
var testDoneCh = make(chan bool, 1)
1312

1413
func init() {
15-
testAccProvider = Provider(testDoneCh).(*schema.Provider)
14+
testAccProvider = Provider().(*schema.Provider)
1615
testAccProviders = map[string]terraform.ResourceProvider{
1716
"argocd": testAccProvider,
1817
}
19-
testDoneCh <- true
2018
}
2119

2220
func TestProvider(t *testing.T) {
23-
if err := Provider(testDoneCh).(*schema.Provider).InternalValidate(); err != nil {
21+
if err := Provider().(*schema.Provider).InternalValidate(); err != nil {
2422
t.Fatalf("err: %s", err)
2523
}
2624
}
2725

2826
func TestProvider_impl(t *testing.T) {
29-
var _ = Provider(testDoneCh)
27+
var _ = Provider()
3028
}
3129

3230
func testAccPreCheck(t *testing.T) {

main.go

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,9 @@ import (
77
)
88

99
func main() {
10-
// ArgoCD services connection pool closing channel
11-
var doneCh = make(chan bool, 1)
12-
1310
plugin.Serve(&plugin.ServeOpts{
1411
ProviderFunc: func() terraform.ResourceProvider {
15-
return argocd.Provider(doneCh)
12+
return argocd.Provider()
1613
},
1714
})
18-
doneCh <- true
1915
}

0 commit comments

Comments
 (0)