[ https://issues.apache.org/jira/browse/TS-4707?focusedWorklogId=28817&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-28817 ]
ASF GitHub Bot logged work on TS-4707: -------------------------------------- Author: ASF GitHub Bot Created on: 12/Sep/16 17:06 Start Date: 12/Sep/16 17:06 Worklog Time Spent: 10m Work Description: Github user pbchou commented on a diff in the pull request: https://github.com/apache/trafficserver/pull/834#discussion_r78412433 --- Diff: proxy/ParentConsistentHash.cc --- @@ -63,21 +66,104 @@ ParentConsistentHash::getPathHash(HttpRequestData *hrdata, ATSHash64 *h) { const char *tmp = NULL; int len; - URL *url = hrdata->hdr->url_get(); + URL *url = hrdata->hdr->url_get(); + int num_dirs = 0; + + // Use over-ride URL from HttpTransact::State's cache_info.parent_selection_url, if present. + URL *ps_url = NULL; + Debug("parent_select", "hrdata->cache_info_parent_selection_url = %p", hrdata->cache_info_parent_selection_url); + if (hrdata->cache_info_parent_selection_url) { + ps_url = *(hrdata->cache_info_parent_selection_url); + Debug("parent_select", "ps_url = %p", ps_url); + if (ps_url) { + tmp = ps_url->string_get_ref(&len); + if (tmp && len > 0) { + // Print the over-ride URL + Debug("parent_select", "Using Over-Ride String='%.*s'.", len, tmp); + h->update(tmp, len); + h->final(); + return h->get(); + } + } + } // Always hash on '/' because paths returned by ATS are always stripped of it h->update("/", 1); tmp = url->path_get(&len); - if (tmp) { + + if (tmp && len > 0) { + // Print the Original path. + Debug("parent_select", "Original Path='%.*s'.", len, tmp); + + // Process the 'maxdirs' directive. + if (max_dirs != 0) { + // Determine number of directory components in the path. + // NOTE: Leading '/' is gone already. + for (int x = 0; x < len; x++) { + if (tmp[x] == '/') + num_dirs++; --- End diff -- Done, but I am surprised this can't be enforced by clang-format if that is the convention? Issue Time Tracking ------------------- Worklog Id: (was: 28817) Time Spent: 10h (was: 9h 50m) > Parent Consistent Hash Selection - add fname and maxdirs options. > ----------------------------------------------------------------- > > Key: TS-4707 > URL: https://issues.apache.org/jira/browse/TS-4707 > Project: Traffic Server > Issue Type: Improvement > Components: Parent Proxy > Reporter: Peter Chou > Assignee: Peter Chou > Fix For: 7.0.0 > > Time Spent: 10h > Remaining Estimate: 0h > > This enhancement adds two options, "fname" and "maxdirs", which can be used > to exclude the file-name and some of the directories in the path. The > remaining portions of the path are then used as part of the hash computation > for selecting among multiple parent caches. > For our usage, it was desirable from an operational perspective to direct all > components of particular sub-tree to a single parent cache (to simplify > trouble-shooting, pre-loading, etc.). This can be achieved by excluding the > query-string, file-name, and right-most portions of the path from the hash > computation. -- This message was sent by Atlassian JIRA (v6.3.4#6332)