Uploaded image for project: 'Couchbase .NET client library'
  1. Couchbase .NET client library
  2. NCBC-934

GetFromReplica returns null when no replicas exist in the replica list

    XMLWordPrintable

    Details

    • Type: Bug
    • Status: Resolved
    • Priority: Blocker
    • Resolution: Fixed
    • Affects Version/s: 2.1.2
    • Fix Version/s: 2.1.4
    • Component/s: library
    • Labels:
      None

      Description

      [ArgumentNullException: Value cannot be null.
      Parameter name: result]
      XXXXXX.OOOO.Couchbase.CouchbaseExtensions.ReturnResultFromOperationResult(IOperationResult result, String key, String bucketName, String memberName) in d:\Builds\5\YYYYY\XXXXXX.OOOO.8.6.0\Sources\XXXXXX.OOOO.Net45\Couchbase\CouchbaseExtensions.cs:133
      XXXXXX.OOOO.Couchbase.CouchbaseExtensions.GetJsonForId(ReadOnlyBucket bucket, Object id, IOperationResult`1& operationResult) in d:\Builds\5\YYYYY\XXXXXX.OOOO.8.6.0\Sources\XXXXXX.OOOO.Net45\Couchbase\CouchbaseExtensions.cs:474
      XXXXXX.OOOO.Security.Repository.CouchbaseAuthRepository.GetUserByUsername(String username) in d:\Builds\5\YYYYY\XXXXXX.OOOO.8.6.0\Sources\XXXXXX.OOOO.Net45\Security\Repository\CouchbaseAuthRepository.cs:238
      XXXXXX.OOOO.Security.DullMembershipProvider.GetUser(String username, Boolean userIsOnline) in d:\Builds\5\YYYYY\XXXXXX.OOOO.8.6.0\Sources\XXXXXX.OOOO.Net45\Security\DullMembershipProvider.cs:72
      System.Web.Security.Membership.GetUser(String username, Boolean userIsOnline) +175
      XXXXXX.OOOO.Security.DullAuthorizeAttribute.AuthorizeCore(HttpContextBase httpContext) in d:\Builds\5\YYYYY\XXXXXX.OOOO.8.6.0\Sources\XXXXXX.OOOO.Net45\Security\DullAuthorizeAttribute.cs:41
      System.Web.Mvc.AuthorizeAttribute.OnAuthorization(AuthorizationContext filterContext) +294
      XXXXXX.OOOO.Security.DullAuthorizeAttribute.OnAuthorization(AuthorizationContext filterContext) in d:\Builds\5\YYYYY\XXXXXX.OOOO.8.6.0\Sources\XXXXXX.OOOO.Net45\Security\DullAuthorizeAttribute.cs:26
      System.Web.Mvc.ControllerActionInvoker.InvokeAuthorizationFilters(ControllerContext controllerContext, IList`1 filters, ActionDescriptor actionDescriptor) +156
      System.Web.Mvc.Async.<>c_DisplayClass21.<BeginInvokeAction>b_19(AsyncCallback asyncCallback, Object asyncState) +1449
      System.Web.Mvc.Async.WrappedAsyncResultBase`1.Begin(AsyncCallback callback, Object state, Int32 timeout) +150
      System.Web.Mvc.Async.AsyncResultWrapper.Begin(AsyncCallback callback, Object state, BeginInvokeDelegate beginDelegate, EndInvokeDelegate`1 endDelegate, Object tag, Int32 timeout) +96
      System.Web.Mvc.Async.AsyncControllerActionInvoker.BeginInvokeAction(ControllerContext controllerContext, String actionName, AsyncCallback callback, Object state) +487
      System.Web.Mvc.Controller.<BeginExecuteCore>b__1c(AsyncCallback asyncCallback, Object asyncState, ExecuteCoreState innerState) +45
      System.Web.Mvc.Async.WrappedAsyncVoid`1.CallBeginDelegate(AsyncCallback callback, Object callbackState) +111
      System.Web.Mvc.Async.WrappedAsyncResultBase`1.Begin(AsyncCallback callback, Object state, Int32 timeout) +150
      System.Web.Mvc.Async.AsyncResultWrapper.Begin(AsyncCallback callback, Object callbackState, BeginInvokeDelegate`1 beginDelegate, EndInvokeVoidDelegate`1 endDelegate, TState invokeState, Object tag, Int32 timeout, SynchronizationContext callbackSyncContext) +203
      System.Web.Mvc.Controller.BeginExecuteCore(AsyncCallback callback, Object state) +879
      System.Web.Mvc.Async.WrappedAsyncResultBase`1.Begin(AsyncCallback callback, Object state, Int32 timeout) +150
      System.Web.Mvc.Async.AsyncResultWrapper.Begin(AsyncCallback callback, Object callbackState, BeginInvokeDelegate`1 beginDelegate, EndInvokeVoidDelegate`1 endDelegate, TState invokeState, Object tag, Int32 timeout, SynchronizationContext callbackSyncContext) +154
      System.Web.Mvc.Controller.BeginExecute(RequestContext requestContext, AsyncCallback callback, Object state) +527
      System.Web.Mvc.MvcHandler.<BeginProcessRequest>b__4(AsyncCallback asyncCallback, Object asyncState, ProcessRequestState innerState) +108
      System.Web.Mvc.Async.WrappedAsyncVoid`1.CallBeginDelegate(AsyncCallback callback, Object callbackState) +111
      System.Web.Mvc.Async.WrappedAsyncResultBase`1.Begin(AsyncCallback callback, Object state, Int32 timeout) +150
      System.Web.Mvc.Async.AsyncResultWrapper.Begin(AsyncCallback callback, Object callbackState, BeginInvokeDelegate`1 beginDelegate, EndInvokeVoidDelegate`1 endDelegate, TState invokeState, Object tag, Int32 timeout, SynchronizationContext callbackSyncContext) +203
      System.Web.Mvc.MvcHandler.BeginProcessRequest(HttpContextBase httpContext, AsyncCallback callback, Object state) +681
      System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +12651815
      System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +288

      > Couchbase.NetClient.dll!Couchbase.Core.VBucket.LocateReplica(int index) Line 85 C#
      Couchbase.NetClient.dll!Couchbase.Core.Buckets.RequestExecuterBase.ReadFromReplica<string>(Couchbase.IO.Operations.ReplicaRead<string> operation) Line 341 C#
      Couchbase.NetClient.dll!Couchbase.CouchbaseBucket.GetFromReplica<string>(string key) Line 662 C#

        Attachments

        No reviews matched the request. Check your Options in the drop-down menu of this sections header.

          Activity

          Hide
          jmorris Jeff Morris added a comment -

          How does the catch block not catch this, log the exception and return null? https://github.com/couchbase/couchbase-net-client/blob/master/Src/Couchbase/Core/VBucket.cs#L85

          Show
          jmorris Jeff Morris added a comment - How does the catch block not catch this, log the exception and return null? https://github.com/couchbase/couchbase-net-client/blob/master/Src/Couchbase/Core/VBucket.cs#L85
          Hide
          jmorris Jeff Morris added a comment -

          Looking deeper into this, GetFromReplica will return null instead of an IOperationResult if it cannot find a replica to use.

          Show
          jmorris Jeff Morris added a comment - Looking deeper into this, GetFromReplica will return null instead of an IOperationResult if it cannot find a replica to use.
          Hide
          subhashni Subhashni Balakrishnan (Inactive) added a comment -

          I was able to reproduce the null response on a replica read rebalance 2 out situational run with 3.0.3 cluster. Please find the logs here https://s3.amazonaws.com/bugdb/jira/SDKQE/log.zip

          Show
          subhashni Subhashni Balakrishnan (Inactive) added a comment - I was able to reproduce the null response on a replica read rebalance 2 out situational run with 3.0.3 cluster. Please find the logs here https://s3.amazonaws.com/bugdb/jira/SDKQE/log.zip

            People

            • Assignee:
              jmorris Jeff Morris
              Reporter:
              jmorris Jeff Morris
            • Votes:
              0 Vote for this issue
              Watchers:
              6 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved:

                Gerrit Reviews

                There are no open Gerrit changes

                  PagerDuty

                  Error rendering 'com.pagerduty.jira-server-plugin:PagerDuty'. Please contact your Jira administrators.