You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@httpd.apache.org by Akshay Patil <ak...@alefmobitech.com> on 2015/04/28 14:48:50 UTC

[users@httpd] [mod_disk_cache ] Cache Sharing Over NFS issue

Hello All,

I am facing a similar problem with same configuration of
mod_disk_cache as
http://httpd.markmail.org/message/di37llxqakennodv?q=NFS&page=4

But, that is a question of 2008 and still remains unanswered on the httpd
mailing list.

I am trying to share a NFS mount between two physical machines running
mod_cache_disk module, so that both machines should be able to share the
cached data. These two cache servers are behind a load balancer which
routes incoming requests in round-robin fashion.

The mounts were owned by "cacheUser" and this user has read/write
permissions to mounted directory. Also, the running process of httpd was
owned by the same user "cacheUser".

After a lot of investigation, I found out, that the code in file
"mod_cache_disk.c" has logic as below:

This snippet belongs to function open_entity().














*/* Atomic check - does the body file belong to the header file? */
if (dobj->disk_info.inode == finfo.inode &&
dobj->disk_info.device == finfo.device) {            /* Initialize the
cache_handle callback functions */            ap_log_rerror(APLOG_MARK,
APLOG_DEBUG, 0, r, APLOGNO(00709)                    "Recalled cached URL
info header %s", dobj->name);            /* make the configuration stick
*/            h->cache_obj = obj;            obj->vobj = dobj;
return OK;        }*

I believe, checking the inode prevents different machines to share the same
data over NFS. Also, the device ID for mounted folder changes.
Hence, this check fails.

And I get  error in log which is part of this code section :-



*/* Oh dear, no luck matching header to the body */
ap_log_rerror(APLOG_MARK, APLOG_DEBUG, 0, r, APLOGNO(00710)
"Cached URL info header '%s' didn't match body, ignoring this
entry",            dobj->name);*



I would like to know what is the reason behind using this logic of checking
the inode instead of the actual contents?


Regards,
*Akshay Patil*