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

Corrupted cluster map configuration when notification received from Server 7.2

    XMLWordPrintable

Details

    • Bug
    • Resolution: Fixed
    • Major
    • 3.5.1
    • 3.5.1
    • library
    • None
    • 0

    Description

      When CB Server 7.2 sends a cluster map changed notification, it is sent with a JSON body containing the new map. After deserializing, we are not replacing $HOST with the correct values, causing the in-memory map to become corrupt and subsequent operations to timeout.

      This regression was introduced because previously the config maps received in the push notification were failing to be deserialized and discarded. Now that we deserialize successfully, this bug is causing a regression. However, it was caught before the regression was released. The change that fixed deserialization is https://review.couchbase.org/c/couchbase-net-client/+/207520

      Couchbase.Core.Exceptions.UnambiguousTimeoutException
      The Delete operation 1232/1cdf37f9-987a-4919-a3c1-e1eaab2d433a timed out after 00:00:02.7127148. It was retried 6 times using Couchbase.Core.Retry.BestEffortRetryStrategy. The KvTimeout is 00:00:02.5000000.
         at Couchbase.Utils.ThrowHelper.ThrowTimeoutException(IOperation operation, Exception innerException, TypedRedactor redactor, IErrorContext context) in E:\repos\couchbase-net-client\src\Couchbase\Utils\ThrowHelper.cs:line 103
         at Couchbase.Core.Retry.RetryOrchestrator.RetryAsync(BucketBase bucket, IOperation operation, CancellationTokenPair tokenPair) in E:\repos\couchbase-net-client\src\Couchbase\Core\Retry\RetryOrchestrator.cs:line 390
         at Couchbase.KeyValue.CouchbaseCollection.RemoveAsync(String id, RemoveOptions options) in E:\repos\couchbase-net-client\src\Couchbase\KeyValue\CouchbaseCollection.cs:line 448
         at Couchbase.IntegrationTests.GetTests.Can_Get_Over_16_Projections() in E:\repos\couchbase-net-client\tests\Couchbase.IntegrationTests\GetTests.cs:line 284
         at Xunit.Sdk.TestInvoker`1.<>c__DisplayClass48_1.<<InvokeTestMethodAsync>b__1>d.MoveNext() in C:\Dev\xunit\xunit\src\xunit.execution\Sdk\Frameworks\Runners\TestInvoker.cs:line 264
      --- End of stack trace from previous location ---
         at Xunit.Sdk.ExecutionTimer.AggregateAsync(Func`1 asyncAction) in C:\Dev\xunit\xunit\src\xunit.execution\Sdk\Frameworks\ExecutionTimer.cs:line 48
         at Xunit.Sdk.ExceptionAggregator.RunAsync(Func`1 code) in C:\Dev\xunit\xunit\src\xunit.core\Sdk\ExceptionAggregator.cs:line 96
       
      System.OperationCanceledException
      Operation 1232/1cdf37f9-987a-4919-a3c1-e1eaab2d433a cancelled (Internal) after 2709.3018ms. (NodeNotAvailable,NodeNotAvailable,NodeNotAvailable,NodeNotAvailable,NodeNotAvailable,NodeNotAvailable)
         at Couchbase.Core.Retry.RetryOrchestrator.RetryAsync(BucketBase bucket, IOperation operation, CancellationTokenPair tokenPair) in E:\repos\couchbase-net-client\src\Couchbase\Core\Retry\RetryOrchestrator.cs:line 186
       
      Couchbase.NodeNotAvailableException
      Cannot find a Couchbase Server node for $HOST:11210.
         at Couchbase.CouchbaseBucket.SendAsync(IOperation op, CancellationTokenPair tokenPair) in E:\repos\couchbase-net-client\src\Couchbase\CouchbaseBucket.cs:line 239
         at Couchbase.Core.Retry.RetryOrchestrator.RetryAsync(BucketBase bucket, IOperation operation, CancellationTokenPair tokenPair) in E:\repos\couchbase-net-client\src\Couchbase\Core\Retry\RetryOrchestrator.cs:line 196
      

      Attachments

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

        Activity

          People

            btburnett3 Brant Burnett
            btburnett3 Brant Burnett
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Gerrit Reviews

                There are no open Gerrit changes

                PagerDuty