VOL-5106 interadaptor grpc retry
[VOL-5168] - Odd job failure reported for voltha-openonu-adapter-go
Change-Id: I7161b438b3d6843a4837c32567c540ab25c03e93
diff --git a/VERSION b/VERSION
index bb4dd7b..6ceb272 100755
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-2.11.0-dev
+2.11.1
diff --git a/internal/pkg/core/openonu.go b/internal/pkg/core/openonu.go
index f22cef7..6831237 100755
--- a/internal/pkg/core/openonu.go
+++ b/internal/pkg/core/openonu.go
@@ -21,21 +21,21 @@
"context"
"errors"
"fmt"
+ grpc_retry "github.com/grpc-ecosystem/go-grpc-middleware/retry"
+ "github.com/opencord/voltha-lib-go/v7/pkg/db"
+ vgrpc "github.com/opencord/voltha-lib-go/v7/pkg/grpc"
+ codes "google.golang.org/grpc/codes"
"hash/fnv"
"strings"
"sync"
"time"
- "github.com/opencord/voltha-lib-go/v7/pkg/db"
- vgrpc "github.com/opencord/voltha-lib-go/v7/pkg/grpc"
-
conf "github.com/opencord/voltha-lib-go/v7/pkg/config"
"github.com/opencord/voltha-protos/v5/go/adapter_service"
"github.com/opencord/voltha-protos/v5/go/common"
"github.com/opencord/voltha-protos/v5/go/health"
"github.com/opencord/voltha-protos/v5/go/olt_inter_adapter_service"
"google.golang.org/grpc"
- "google.golang.org/grpc/codes"
"google.golang.org/grpc/status"
"github.com/golang/protobuf/ptypes/empty"
@@ -1048,11 +1048,15 @@
if err != nil {
return err
}
+ retryCodes := []codes.Code{
+ codes.Unavailable, // server is currently unavailable
+ codes.DeadlineExceeded, // deadline for the operation was exceeded
+ }
+ backoffCtxOption := grpc_retry.WithBackoff(grpc_retry.BackoffLinearWithJitter(oo.config.PerRPCRetryTimeout, 0.2))
+ grpcRetryOptions := grpc_retry.UnaryClientInterceptor(grpc_retry.WithMax(oo.config.MaxRetries), grpc_retry.WithPerRetryTimeout(oo.config.PerRPCRetryTimeout), grpc_retry.WithCodes(retryCodes...), backoffCtxOption)
oo.parentAdapterClients[endpoint] = childClient
-
- go oo.parentAdapterClients[endpoint].Start(log.WithSpanFromContext(context.TODO(), ctx), getOltInterAdapterServiceClientHandler)
-
+ go oo.parentAdapterClients[endpoint].Start(log.WithSpanFromContext(context.TODO(), ctx), getOltInterAdapterServiceClientHandler, grpcRetryOptions)
// Wait until we have a connection to the child adapter.
// Unlimited retries or until context expires
subCtx := log.WithSpanFromContext(context.TODO(), ctx)