Uploaded image for project: 'Java Couchbase JVM Core'
  1. Java Couchbase JVM Core
  2. JVMCBC-657

Improve config refresh selection strategy

    XMLWordPrintable

Details

    • New Feature
    • Status: Resolved
    • Major
    • Resolution: Fixed
    • None
    • 1.7.5
    • Config Management
    • None
    • 1

    Description

      Right now the logic on how to select the refresher is very simplistic: if we loaded the original config over http, it will use http for refresh. If it loads through carrier it will use carrier for refresh.

      Unfortunately, this is too simplistic: we might bootstrap off of a node in a MDS environment where there is no KV service enabled, but throughout the cluster there are. If it is a couchbase bucket and a modern cluster, it is more or less a given. Using http refresh has a couple limitations and should not be used if we can help it.

      Attachments

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

        Activity

          david.nault David Nault added a comment - - edited

          Paraphrasing Michael's description of the fix:

          The issue was resolved by modifying the logic to select which refresher is going to be used.

          Instead of picking the same refresher as the loader, the code checks if it is a couchbase bucket and a "modern server" (by checking for nodesExt in the capabilities). As a result memcached buckets will still use the http refresher, but in all other modern servers the code will now use the carrier refresher even if we had to load through http.

          As a result, we can now switch to the carrier refresher (the most efficient and reliable way to grab new configs) even if the user bootstrapped originally over http, for example through a query-only node.

          david.nault David Nault added a comment - - edited Paraphrasing Michael's description of the fix: The issue was resolved by modifying the logic to select which refresher is going to be used. Instead of picking the same refresher as the loader, the code checks if it is a couchbase bucket and a "modern server" (by checking for nodesExt in the capabilities). As a result memcached buckets will still use the http refresher, but in all other modern servers the code will now use the carrier refresher even if we had to load through http. As a result, we can now switch to the carrier refresher (the most efficient and reliable way to grab new configs) even if the user bootstrapped originally over http, for example through a query-only node.

          People

            daschl Michael Nitschinger
            daschl Michael Nitschinger
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Gerrit Reviews

                There are no open Gerrit changes

                PagerDuty