[master] 50686f61e vfp: First stab at centralized debug logging
Dridi Boukelmoune
dridi.boukelmoune at gmail.com
Mon Jun 10 17:08:06 UTC 2024
commit 50686f61ec7e7b257cb38fdbcadf1b4147ec42d9
Author: Dridi Boukelmoune <dridi.boukelmoune at gmail.com>
Date: Fri May 24 11:52:04 2024 +0200
vfp: First stab at centralized debug logging
It was instrumental in the understanding of a filter bug that was
previously difficult to troubleshoot.
diff --git a/bin/varnishd/cache/cache_fetch_proc.c b/bin/varnishd/cache/cache_fetch_proc.c
index 704262b60..3336cda25 100644
--- a/bin/varnishd/cache/cache_fetch_proc.c
+++ b/bin/varnishd/cache/cache_fetch_proc.c
@@ -170,20 +170,30 @@ enum vfp_status
VFP_Suck(struct vfp_ctx *vc, void *p, ssize_t *lp)
{
enum vfp_status vp;
- struct vfp_entry *vfe;
+ struct vfp_entry *vfe, *vfe_prev;
+ const char *prev_name = "<storage>";
+ ssize_t limit;
CHECK_OBJ_NOTNULL(vc, VFP_CTX_MAGIC);
AN(p);
AN(lp);
+ limit = *lp;
vfe = vc->vfp_nxt;
CHECK_OBJ_NOTNULL(vfe, VFP_ENTRY_MAGIC);
vc->vfp_nxt = VTAILQ_NEXT(vfe, list);
+ vfe_prev = VTAILQ_PREV(vfe, vfp_entry_s, list);
+ if (vfe_prev != NULL)
+ prev_name = vfe_prev->vfp->name;
+
if (vfe->closed == VFP_NULL) {
/* Layer asked to be bypassed when opened */
vp = VFP_Suck(vc, p, lp);
+ VFP_DEBUG(vc, "bypassing %s vp=%d", vfe->vfp->name, vp);
} else if (vfe->closed == VFP_OK) {
vp = vfe->vfp->pull(vc, vfe, p, lp);
+ VFP_DEBUG(vc, "%s pulled %zdB/%zdB from %s vp=%d",
+ prev_name, *lp, limit, vfe->vfp->name, vp);
if (vp != VFP_OK && vp != VFP_END && vp != VFP_ERROR)
vp = VFP_Error(vc, "Fetch filter %s returned %d",
vfe->vfp->name, vp);
@@ -195,6 +205,7 @@ VFP_Suck(struct vfp_ctx *vc, void *p, ssize_t *lp)
/* Already closed filter */
*lp = 0;
vp = vfe->closed;
+ VFP_DEBUG(vc, "ignoring %s vp=%d", vfe->vfp->name, vp);
}
vc->vfp_nxt = vfe;
assert(vp != VFP_NULL);
More information about the varnish-commit
mailing list