Uploaded image for project: 'Couchbase Server'
  1. Couchbase Server
  2. MB-61231

Server error: race getting info while deleting bucket

    XMLWordPrintable

Details

    • Bug
    • Resolution: Fixed
    • Major
    • Morpheus
    • 7.6.0
    • ns_server
    • None
    • Untriaged
    • 0
    • Unknown

    Description

      While doing some testing I hit this failure

      [ns_server:debug,2024-03-19T15:40:10.349-07:00,n_0@127.0.0.1:chronicle_kv_log<0.485.0>:chronicle_kv_log:handle_info:42]delete (key: {bucket,"stevew",collections}, rev: {<<"8f51406d50ca4889347c31c15f0bdb60">>,
                                                        13293})
      [ns_server:debug,2024-03-19T15:40:10.349-07:00,n_0@127.0.0.1:<0.236849.0>:ns_server_stats:maybe_delete_stat:426]Deleting <<"memcached_e2e_call_time">> for "stevew" from ets table
      [ns_server:error,2024-03-19T15:40:10.349-07:00,n_0@127.0.0.1:<0.288410.0>:menelaus_util:reply_server_error_before_close:223]Server error during processing: ["web request failed",
                                       {path,"/pools/default/buckets"},
                                       {method,'GET'},
                                       {type,error},
                                       {what,{badmatch,not_present}},
                                       {trace,
                                        [{menelaus_web_buckets,
                                          '-add_couch_api_base/5-fun-0-',5,
                                          [{file,
                                            "/Users/steve.watanabe/morpheus/ns_server/apps/ns_server/src/menelaus_web_buckets.erl"},
                                           {line,145}]},
                                         {lists,foldl,3,
                                          [{file,"lists.erl"},{line,1594}]},
                                         {menelaus_web_buckets,
                                          add_couch_api_base_loop,8,
                                          [{file,
                                            "/Users/steve.watanabe/morpheus/ns_server/apps/ns_server/src/menelaus_web_buckets.erl"},
                                           {line,124}]},
                                         {menelaus_web_buckets,build_bucket_info,4,
                                          [{file,
                                            "/Users/steve.watanabe/morpheus/ns_server/apps/ns_server/src/menelaus_web_buckets.erl"},
                                           {line,257}]},
                                         {menelaus_web_buckets,
                                          '-build_buckets_info/4-lc$^0/1-0-',4,
                                          [{file,
                                            "/Users/steve.watanabe/morpheus/ns_server/apps/ns_server/src/menelaus_web_buckets.erl"},
                                           {line,240}]},
                                         {menelaus_web_buckets,
                                          '-build_buckets_info/4-lc$^0/1-0-',4,
                                          [{file,
                                            "/Users/steve.watanabe/morpheus/ns_server/apps/ns_server/src/menelaus_web_buckets.erl"},
                                           {line,241}]},
                                         {menelaus_web_buckets,handle_bucket_list,
                                          1,
                                          [{file,
                                            "/Users/steve.watanabe/morpheus/ns_server/apps/ns_server/src/menelaus_web_buckets.erl"},
                                           {line,92}]},                                   {request_tracker,request,2,
                                          [{file,
                                            "/Users/steve.watanabe/morpheus/ns_server/apps/ns_server/src/request_tracker.erl"},
                                           {line,40}]}]}]
       

      The cause is a race when getting info for a bucket while it is being deleted. This code should not call ns_bucket:get_bucket()

      add_couch_api_base(BucketName, BucketUUID, KV, Node, LocalAddr) ->
          %% Must completely remove these, as they are used as a signal to the SDK's
          %% regarding whether or not we support views on this couchbase cluster.
          NodesKeysList = ?COUCHDB_ENABLED([{Node, couchApiBase},
                                            {{ssl, Node}, couchApiBaseHTTPS}], []),
          lists:foldl(fun({N, Key}, KVAcc) ->
                              case capi_utils:capi_bucket_url_bin(N, BucketName,
                                                                  BucketUUID, LocalAddr) of
                                  undefined ->
                                      KVAcc;
                                  Url ->
                                      {ok, BCfg} = ns_bucket:get_bucket(BucketName),
                                      case ns_bucket:bucket_type(BCfg) of 

      Attachments

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

        Activity

          People

            steve.watanabe Steve Watanabe
            steve.watanabe Steve Watanabe
            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