Skip to content
This repository was archived by the owner on Oct 3, 2023. It is now read-only.

Commit 37aa280

Browse files
author
Ramon Nogueira
authored
Remove the check for unique project ID within the process (#9)
Fixes: #8
1 parent a6442a4 commit 37aa280

2 files changed

Lines changed: 1 addition & 43 deletions

File tree

stats.go

Lines changed: 1 addition & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -65,16 +65,8 @@ type statsExporter struct {
6565
defaultLabels map[string]labelValue
6666
}
6767

68-
// Enforces the singleton on NewExporter per projectID per process
69-
// lest there will be races with Stackdriver.
7068
var (
71-
seenProjectsMu sync.Mutex
72-
seenProjects = make(map[string]bool)
73-
)
74-
75-
var (
76-
errBlankProjectID = errors.New("expecting a non-blank ProjectID")
77-
errSingletonExporter = errors.New("only one exporter can be created per unique ProjectID per process")
69+
errBlankProjectID = errors.New("expecting a non-blank ProjectID")
7870
)
7971

8072
// newStatsExporter returns an exporter that uploads stats data to Stackdriver Monitoring.
@@ -85,18 +77,6 @@ func newStatsExporter(o Options, enforceProjectUniqueness bool) (*statsExporter,
8577
return nil, errBlankProjectID
8678
}
8779

88-
if enforceProjectUniqueness {
89-
seenProjectsMu.Lock()
90-
_, seen := seenProjects[o.ProjectID]
91-
if !seen {
92-
seenProjects[o.ProjectID] = true
93-
}
94-
seenProjectsMu.Unlock()
95-
if seen {
96-
return nil, errSingletonExporter
97-
}
98-
}
99-
10080
opts := append(o.MonitoringClientOptions, option.WithUserAgent(userAgent))
10181
client, err := monitoring.NewMetricClient(context.Background(), opts...)
10282
if err != nil {

stats_test.go

Lines changed: 0 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -48,28 +48,6 @@ func TestRejectBlankProjectID(t *testing.T) {
4848
}
4949
}
5050

51-
// Ensure only one exporter per projectID per process, any
52-
// subsequent invocations of NewExporter should fail.
53-
func TestNewExporterSingletonPerProcess(t *testing.T) {
54-
ids := []string{"open-census.io", "x", "fakeProjectID"}
55-
for _, projectID := range ids {
56-
opts := Options{ProjectID: projectID, MonitoringClientOptions: authOptions}
57-
exp, err := newStatsExporter(opts, true)
58-
if err != nil {
59-
t.Errorf("NewExporter() projectID = %q err = %q", projectID, err)
60-
continue
61-
}
62-
if exp == nil {
63-
t.Errorf("NewExporter returned a nil Exporter")
64-
continue
65-
}
66-
exp, err = newStatsExporter(opts, true)
67-
if err == nil || exp != nil {
68-
t.Errorf("NewExporter more than once should fail; exp (%v) err %v", exp, err)
69-
}
70-
}
71-
}
72-
7351
func TestExporter_makeReq(t *testing.T) {
7452
m := stats.Float64("test-measure", "measure desc", "unit")
7553

0 commit comments

Comments
 (0)