Commit 727872bf authored by Geoff Simmons's avatar Geoff Simmons

Add the log_checks parameter to the reader constructor.

parent 40400658
......@@ -56,7 +56,8 @@ varnish v1 -vcl {
backend b { .host = "${bad_ip}"; }
sub vcl_init {
new rdr = file.reader("${tmpdir}/file", ttl=0.1s);
new rdr = file.reader("${tmpdir}/file", ttl=0.1s,
log_checks=true);
}
sub vcl_recv {
......@@ -85,6 +86,12 @@ client c1 {
expect resp.http.Get == "quux baz bar foo"
} -run
logexpect l1 -v v1 -d 1 -g raw -q "Debug" {
expect * * Debug {^vmod file: rdr: check for \S+ running at}
expect * * Debug {^vmod file: rdr: updating \S+ at}
expect * * Debug {^vmod file: rdr: check for \S+ finished successfully at}
} -run
shell {rm -f ${tmpdir}/file}
delay .1
......
......@@ -67,6 +67,7 @@ struct file_info {
size_t len;
dev_t dev;
ino_t ino;
VCL_BOOL log_checks;
};
#define RDR_INITIALIZED (1 << 0)
......@@ -95,6 +96,7 @@ check(union sigval val)
struct stat st;
int fd;
void *addr;
char timbuf[VTIM_FORMAT_SIZE];
CAST_OBJ_NOTNULL(rdr, val.sival_ptr, FILE_READER_MAGIC);
CHECK_OBJ_NOTNULL(rdr->info, FILE_INFO_MAGIC);
......@@ -103,6 +105,12 @@ check(union sigval val)
AN(rdr->errbuf);
AN(info->path);
if (info->log_checks) {
VTIM_format(VTIM_real(), timbuf);
VSL(SLT_Debug, 0, "vmod file: %s: check for %s running at %s",
rdr->vcl_name, info->path, timbuf);
}
AZ(pthread_rwlock_wrlock(&rdr->lock));
errno = 0;
......@@ -130,6 +138,12 @@ check(union sigval val)
goto out;
}
if (info->log_checks) {
VTIM_format(VTIM_real(), timbuf);
VSL(SLT_Debug, 0, "vmod file: %s: updating %s at %s",
rdr->vcl_name, info->path, timbuf);
}
if (rdr->flags & RDR_MAPPED) {
AN(rdr->addr);
if (munmap(rdr->addr, info->len) != 0) {
......@@ -186,13 +200,21 @@ check(union sigval val)
out:
AZ(pthread_rwlock_unlock(&rdr->lock));
if (info->log_checks) {
VTIM_format(VTIM_real(), timbuf);
VSL(SLT_Debug, 0,
"vmod file: %s: check for %s finished successfully at %s",
rdr->vcl_name, info->path, timbuf);
}
return;
}
VCL_VOID
vmod_reader__init(VRT_CTX, struct VPFX(file_reader) **rdrp,
const char *vcl_name, struct vmod_priv *priv,
VCL_STRING name, VCL_STRING path, VCL_DURATION ttl)
VCL_STRING name, VCL_STRING path, VCL_DURATION ttl,
VCL_BOOL log_checks)
{
struct VPFX(file_reader) *rdr;
struct file_info *info;
......@@ -233,6 +255,7 @@ vmod_reader__init(VRT_CTX, struct VPFX(file_reader) **rdrp,
rdr->info = info;
rdr->vcl_name = strdup(vcl_name);
info->log_checks = log_checks;
if (*name == '/')
info->path = strdup(name);
......
......@@ -36,7 +36,7 @@ XXX ...
$Object reader(PRIV_VCL, STRING name,
STRING path="/usr/local/etc/varnish:/usr/local/share/varnish/vcl:/usr/etc/varnish:/usr/share/varnish/vcl",
DURATION ttl=120)
DURATION ttl=120, BOOL log_checks=0)
XXX ...
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment