[VOL-3187]Pass Context down the execution call hierarchy across voltha-go codebase
Change-Id: I6bc2a0f7226c1beed4ae01a15d7b5c4dc04358d8
diff --git a/rw_core/core/kv.go b/rw_core/core/kv.go
index 53db264..34e3643 100644
--- a/rw_core/core/kv.go
+++ b/rw_core/core/kv.go
@@ -29,13 +29,13 @@
"google.golang.org/grpc/status"
)
-func newKVClient(storeType string, address string, timeout time.Duration) (kvstore.Client, error) {
- logger.Infow("kv-store-type", log.Fields{"store": storeType})
+func newKVClient(ctx context.Context, storeType string, address string, timeout time.Duration) (kvstore.Client, error) {
+ logger.Infow(ctx, "kv-store-type", log.Fields{"store": storeType})
switch storeType {
case "consul":
- return kvstore.NewConsulClient(address, timeout)
+ return kvstore.NewConsulClient(ctx, address, timeout)
case "etcd":
- return kvstore.NewEtcdClient(address, timeout, log.FatalLevel)
+ return kvstore.NewEtcdClient(ctx, address, timeout, log.FatalLevel)
}
return nil, errors.New("unsupported-kv-store")
}
@@ -43,19 +43,19 @@
func stopKVClient(ctx context.Context, kvClient kvstore.Client) {
// Release all reservations
if err := kvClient.ReleaseAllReservations(ctx); err != nil {
- logger.Infow("fail-to-release-all-reservations", log.Fields{"error": err})
+ logger.Infow(ctx, "fail-to-release-all-reservations", log.Fields{"error": err})
}
// Close the DB connection
- kvClient.Close()
+ kvClient.Close(ctx)
}
// waitUntilKVStoreReachableOrMaxTries will wait until it can connect to a KV store or until maxtries has been reached
func waitUntilKVStoreReachableOrMaxTries(ctx context.Context, kvClient kvstore.Client, maxRetries int, retryInterval time.Duration) error {
- logger.Infow("verifying-KV-store-connectivity", log.Fields{"retries": maxRetries, "retryInterval": retryInterval})
+ logger.Infow(ctx, "verifying-KV-store-connectivity", log.Fields{"retries": maxRetries, "retryInterval": retryInterval})
count := 0
for {
if !kvClient.IsConnectionUp(ctx) {
- logger.Info("KV-store-unreachable")
+ logger.Info(ctx, "KV-store-unreachable")
if maxRetries != -1 {
if count >= maxRetries {
return status.Error(codes.Unavailable, "kv store unreachable")
@@ -70,13 +70,13 @@
return ctx.Err()
case <-time.After(retryInterval):
}
- logger.Infow("retry-KV-store-connectivity", log.Fields{"retryCount": count, "maxRetries": maxRetries, "retryInterval": retryInterval})
+ logger.Infow(ctx, "retry-KV-store-connectivity", log.Fields{"retryCount": count, "maxRetries": maxRetries, "retryInterval": retryInterval})
} else {
break
}
}
probe.UpdateStatusFromContext(ctx, "kv-store", probe.ServiceStatusRunning)
- logger.Info("KV-store-reachable")
+ logger.Info(ctx, "KV-store-reachable")
return nil
}
@@ -95,12 +95,12 @@
* start issuing UNAVAILABLE response while the probe is not ready.
*/
func monitorKVStoreLiveness(ctx context.Context, backend *db.Backend, liveProbeInterval, notLiveProbeInterval time.Duration) {
- logger.Info("start-monitoring-kvstore-liveness")
+ logger.Info(ctx, "start-monitoring-kvstore-liveness")
// Instruct backend to create Liveness channel for transporting state updates
- livenessChannel := backend.EnableLivenessChannel()
+ livenessChannel := backend.EnableLivenessChannel(ctx)
- logger.Debug("enabled-kvstore-liveness-channel")
+ logger.Debug(ctx, "enabled-kvstore-liveness-channel")
// Default state for kvstore is alive for rw_core
timeout := liveProbeInterval
@@ -110,17 +110,17 @@
select {
case liveness := <-livenessChannel:
- logger.Debugw("received-liveness-change-notification", log.Fields{"liveness": liveness})
+ logger.Debugw(ctx, "received-liveness-change-notification", log.Fields{"liveness": liveness})
if !liveness {
probe.UpdateStatusFromContext(ctx, "kv-store", probe.ServiceStatusNotReady)
- logger.Info("kvstore-set-server-notready")
+ logger.Info(ctx, "kvstore-set-server-notready")
timeout = notLiveProbeInterval
} else {
probe.UpdateStatusFromContext(ctx, "kv-store", probe.ServiceStatusRunning)
- logger.Info("kvstore-set-server-ready")
+ logger.Info(ctx, "kvstore-set-server-ready")
timeout = liveProbeInterval
}
@@ -133,7 +133,7 @@
break loop
case <-timeoutTimer.C:
- logger.Info("kvstore-perform-liveness-check-on-timeout")
+ logger.Info(ctx, "kvstore-perform-liveness-check-on-timeout")
// Trigger Liveness check if no liveness update received within the timeout period.
// The Liveness check will push Live state to same channel which this routine is