@@ -20,7 +20,6 @@ import (
2020 "github.com/Azure/azure-container-networking/common"
2121 "github.com/Azure/azure-container-networking/log"
2222 "github.com/Azure/azure-container-networking/platform"
23- "github.com/pkg/errors"
2423)
2524
2625// TelemetryConfig - telemetry config read by telemetry service
@@ -328,34 +327,37 @@ func (tb *TelemetryBuffer) ConnectCNIToTelemetryService(telemetryNumRetries, tel
328327 path , dir := getTelemetryServiceDirectory ()
329328 args := []string {"-d" , dir }
330329 for attempt := 0 ; attempt < 2 ; attempt ++ {
331- if err := tb .Connect (); err != nil {
332- log . Logf ( "Connection to telemetry socket failed: %v" , err )
333- if runtime . GOOS == "windows" {
334- if err = netPlugin . LockKeyValueStore (); err != nil {
335- log . Logf ( "lock acquire error: %v" , err )
336- return errors . Wrap ( err , "lock acquire error" )
337- }
338- }
339- if err = tb .Cleanup ( FdName ); err != nil {
340- return errors . Wrap ( err , "cleanup failed" )
341- }
342- if err = StartTelemetryService ( path , args ); err != nil {
343- return errors . Wrap ( err , "StartTelemetryService failed" )
330+ tb .startAndConnectTelemetryService ( telemetryNumRetries , telemetryWaitTimeInMilliseconds , netPlugin , path , args )
331+ }
332+ return nil
333+ }
334+
335+ // This function is getting called from ConnectCNIToTelemetryService() in each attempt inside for loop
336+ // This function has been created to be able to add defer within the for loop
337+ func ( tb * TelemetryBuffer ) startAndConnectTelemetryService ( telemetryNumRetries , telemetryWaitTimeInMilliseconds int , netPlugin * cni. Plugin , path string , args [] string ) {
338+ if err : = tb .Connect ( ); err != nil {
339+ log . Logf ( "Connection to telemetry socket failed: %v" , err )
340+ if runtime . GOOS == "windows" {
341+ if err = netPlugin . LockKeyValueStore ( ); err != nil {
342+ log . Logf ( "lock acquire error: %v" , err )
344343 }
345- WaitForTelemetrySocket (telemetryNumRetries , time .Duration (telemetryWaitTimeInMilliseconds ))
346- if runtime .GOOS == "windows" {
344+ defer func () {
347345 if err = netPlugin .UnLockKeyValueStore (); err != nil {
348346 log .Logf ("failed to relinquish lock error: %v" , err )
349- return errors .Wrap (err , "failed to relinquish lock error" )
350347 }
351- }
352- } else {
353- tb .Connected = true
354- log .Logf ("Connected to telemetry service" )
355- return nil
348+ }()
349+ }
350+ if err = tb .Cleanup (FdName ); err != nil {
351+ log .Logf ("cleanup failed: %v" , err )
356352 }
353+ if err = StartTelemetryService (path , args ); err != nil {
354+ log .Logf ("StartTelemetryService failed: %v" , err )
355+ }
356+ WaitForTelemetrySocket (telemetryNumRetries , time .Duration (telemetryWaitTimeInMilliseconds ))
357+ } else {
358+ tb .Connected = true
359+ log .Logf ("Connected to telemetry service" )
357360 }
358- return nil
359361}
360362
361363func getTelemetryServiceDirectory () (path string , dir string ) {
0 commit comments