For the record...<br><br>I also attempted to restart from vcl_deliver(), figuring I could check req.restart in vcl_recv() and make decisions there.<br><br>Unfortunately, while the VCL_RET_RESTART behavior in vcl_fetch() is to restart the request at vcl_recv(), the VCL_RET_RESTART behavior for vcl_deliver() is to INCOMPL(), which involves an abort() and I'm back where I started.<br>
<br>Any other ideas out there?<br><br>Thanks,<br><br>Nato<br><br><br><div class="gmail_quote">On Fri, Nov 14, 2008 at 11:46 AM, Nathan Uno <span dir="ltr"><<a href="mailto:nigel_varnish@unos.net">nigel_varnish@unos.net</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">This appears to be because include/vcl_returns.h (varnish 2.0.1) asserts that deliver shouldnt' return error:<br>
<br>VCL_MET_MAC(deliver,DELIVER,(VCL_RET_RESTART|VCL_RET_DELIVER))<br><br>The documentation (man 7 vcl) indicates that error can be returned from vcl_deliver():<br>
<br> The vcl_deliver subroutine may terminate with one of the following key-<br> words:<br><br> error code [reason]<br> Return the specified error code to the client and abandon the<br>
request.<br><br> deliver<br> Deliver the object to the client.<br><br>It looks from the revision history that the change took place between r2341 and 4 and r3047. It appears to be a deliberate change because vcl_error() calls vcl_deliver(). So it appears there is a documentation bug, not a code bug. >)<br>
<br>What I'm really interested in doing is forcing a document into cache without having that document delivered. I'm attempting to do this by defining a URL pattern to hint to varnish to fetch a document with a specific hash (i.e. not a hash specific to the particular request). vcl_hash() knows what to do and is working properly. vcl_fetch() knows what's going on and sets the infamous magic marker to tell vcl_deliver() what's up.<br>
<br>I had thought that I could just then tell vcl_deliver() to generate an "error" with HTTP status code of 200 and bogus content and avoid having the actual cached document returned. This, however, seems not to be the case.<br>
<br>Am I overlooking a much simpler way to accomplish my goal?<br><br>Thanks,<br><br>Nato<div><div></div><div class="Wj3C7c"><br><br><div class="gmail_quote">On Wed, Nov 12, 2008 at 10:34 PM, Nathan Uno <span dir="ltr"><<a href="mailto:nigel_varnish@unos.net" target="_blank">nigel_varnish@unos.net</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">If I call error from vcl_deliver varnishd appears to die. For example, the following (nonsensical) definition:<br>
<br>sub vcl_deliver {<br> error 503 "Badness";<br>}<br><br>... results in the following varnishlog output (which looks like a crash to me):<br>
<br> 10 SessionOpen c <a href="http://172.18.26.105" target="_blank">172.18.26.105</a> 47478 :8081<br> 10 ReqStart c <a href="http://172.18.26.105" target="_blank">172.18.26.105</a> 47478 1731927449<br> 10 RxRequest c GET<br>
10 RxURL c /PRIME/mtproxy/mtdata/14/2608/5704/1024<br>
10 RxProtocol c HTTP/1.1<br> 10 RxHeader c Accept-Encoding: identity<br> 10 RxHeader c Host: <a href="http://172.18.26.105:8081" target="_blank">172.18.26.105:8081</a><br> 10 RxHeader c Connection: close<br>
10 RxHeader c User-agent: Python-urllib/2.4<br>
10 VCL_call c recv<br> 10 VCL_return c lookup<br> 10 VCL_call c hash<br> 10 VCL_return c hash<br> 10 VCL_call c miss<br> 10 VCL_return c fetch<br> 12 BackendOpen b default <a href="http://127.0.0.1" target="_blank">127.0.0.1</a> 60316 <a href="http://127.0.0.1" target="_blank">127.0.0.1</a> 8880<br>
10 Backend c 12 default default<br> 12 TxRequest b GET<br> 12 TxURL b /PRIME/mtproxy/mtdata/14/2608/5704/1024<br> 12 TxProtocol b HTTP/1.1<br> 12 TxHeader b Accept-Encoding: identity<br> 12 TxHeader b Host: <a href="http://172.18.26.105:8081" target="_blank">172.18.26.105:8081</a><br>
12 TxHeader b User-agent: Python-urllib/2.4<br> 12 TxHeader b X-Varnish: 1731927449<br> 12 TxHeader b X-Forwarded-For: <a href="http://172.18.26.105" target="_blank">172.18.26.105</a><br> 0 CLI - Rd vcl.load boot ./<a href="http://vcl.1P9zoqAU.so" target="_blank">vcl.1P9zoqAU.so</a><br>
0 CLI - Wr 0 200 Loaded "./<a href="http://vcl.1P9zoqAU.so" target="_blank">vcl.1P9zoqAU.so</a>" as "boot"<br> 0 CLI - Rd vcl.use boot<br> 0 CLI - Wr 0 200 <br> 0 CLI - Rd start<br>
0 Debug - "Acceptor is epoll"<br> 0 CLI - Wr 0 200 <br> 0 WorkThread - 0x4485ec10 start<br> 0 WorkThread - 0x4525fc10 start<br> 0 WorkThread - 0x45c60c10 start<br> 0 WorkThread - 0x46661c10 start<br>
0 WorkThread - 0x47062c10 start<br> 0 WorkThread - 0x47a63c10 start<br> 0 WorkThread - 0x48464c10 start<br> 0 WorkThread - 0x48e65c10 start<br> 0 WorkThread - 0x49866c10 start<br> 0 WorkThread - 0x4a267c10 start<br>
<br>
</blockquote></div><br>
</div></div></blockquote></div><br>