You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@trafficserver.apache.org by "Leif Hedstrom (JIRA)" <ji...@apache.org> on 2011/01/24 23:57:45 UTC

[jira] Commented: (TS-643) unable to purge objects on other servers in full cluster mode

    [ https://issues.apache.org/jira/browse/TS-643?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12986078#action_12986078 ] 

Leif Hedstrom commented on TS-643:
----------------------------------

I must be missing something, but I don't understand quite the changes in Cache.cc. You now have

Action *
CacheProcessor::remove(Continuation *cont, URL *url, CacheFragType frag_type)
{
  Debug("cache_remove", "[CacheProcessor::remove] Issuing cache delete for %s", url->string_get_ref());
#ifdef CLUSTER_CACHE
  if (cache_clustering_enabled > 0) {
    INK_MD5 md5;
    int len = 0;

    url->MD5_get(&md5);
    const char *hostname = url->host_get(&len);
    return remove(cont, &md5, frag_type, true, false, (char *) hostname, len);
  }
#endif
  return caches[frag_type]->remove(cont, url, frag_type);
}


but isn't that exactly identical to 

Action *
CacheProcessor::remove(Continuation *cont, URL *url, CacheFragType frag_type)
{
  Debug("cache_remove", "[CacheProcessor::remove] Issuing cache delete for %s", url->string_get_ref());
  return caches[frag_type]->remove(cont, url, frag_type);
}

As far as I can tell, the Cache::remove() method with just those three arguments does exactly the same MD5 / hostname lookups as your patch?

Action *
Cache::remove(Continuation *cont, CacheURL *url, CacheFragType type)
{
  INK_MD5 md5;
  url->MD5_get(&md5);
  int host_len = 0;
  const char *hostname = url->host_get(&host_len);
  return remove(cont, &md5, type, true, false, (char *) hostname, host_len);
}


What am I missing?

> unable to purge objects on other servers in full cluster mode
> -------------------------------------------------------------
>
>                 Key: TS-643
>                 URL: https://issues.apache.org/jira/browse/TS-643
>             Project: Traffic Server
>          Issue Type: Bug
>    Affects Versions: 2.1.5
>         Environment: full cluster mode
>            Reporter: Zhao Yongming
>            Assignee: Zhao Yongming
>         Attachments: 0001-TS-643-fix-PURGE-of-objects-on-other-hosts--in-full-cluster-mode.patch
>
>
> when sending purge request to random hosts in cluster, if the object is not on that host, it will not be delete but send back a 200 ok request. that should be fixed.
> after check the following code in Cache.cc:
> Action *
> CacheProcessor::remove(Continuation *cont, URL *url, CacheFragType frag_type)
> {
> #ifdef CLUSTER_CACHE
>   if (cache_clustering_enabled > 0) {
>   }
> #endif
>   return caches[frag_type]->remove(cont, url, frag_type);
> }
> I am sure the purge in cluster is need to fix. as there is:
> iocore/cluster/P_ClusterInline.h:367:Cluster_remove(ClusterMachine * m, Continuation * cont, CacheKey * key,
> we should fix CacheProcessor::remove to use the Cluster_remove method in cluster mode.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.