From b4d7a78fa54ba65cfa34cb9c038ea9fed706e2b5 Mon Sep 17 00:00:00 2001 From: shollyman Date: Thu, 18 Aug 2022 06:47:33 -0700 Subject: [PATCH] testing(bigquery/storage/managedwriter): instrumentation retries (#6537) We've caught more than one instance of a race failure. Add retries for the opencensus metrics test to reduce the likelihood of this failures. Fixes: #6535 --- .../storage/managedwriter/integration_test.go | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/bigquery/storage/managedwriter/integration_test.go b/bigquery/storage/managedwriter/integration_test.go index 13ec3d0be95..9db77641d2f 100644 --- a/bigquery/storage/managedwriter/integration_test.go +++ b/bigquery/storage/managedwriter/integration_test.go @@ -705,7 +705,21 @@ func testInstrumentation(ctx context.Context, t *testing.T, mwClient *Client, bq time.Sleep(time.Second) for _, tv := range testedViews { - metricData, err := view.RetrieveData(tv.Name) + // Attempt to further improve race failures by retrying metrics retrieval. + metricData, err := func() ([]*view.Row, error) { + attempt := 0 + for { + data, err := view.RetrieveData(tv.Name) + attempt = attempt + 1 + if attempt > 5 { + return data, err + } + if err == nil && len(data) == 1 { + return data, err + } + time.Sleep(time.Duration(attempt) * 500 * time.Millisecond) + } + }() if err != nil { t.Errorf("view %q RetrieveData: %v", tv.Name, err) }