- 27 Jan, 2020 11 commits
-
-
Nils Goroll authored
(actually not on 32bit, but where the default workspace is low) Ref #3203
-
Nils Goroll authored
-
Nils Goroll authored
related to vtest failures
-
Nils Goroll authored
Ref #3194
-
Nils Goroll authored
It now bails out due to a workspace overflow which it acually did trigger all the time, but that remained unnoticed due to #3194 The test to multiply the cookie header 128 times (8x in the first regex, 16x in the second) was not realistic even for "modern times", so I do not think we should have workspaces sized by such an example.
-
Nils Goroll authored
Since 8baf4a69 we lost information about an overflowed workspace by calling std.log(), which resulted from use of the workspace for construction of a contiguous string from the argument constituents. Since then, we have changed the interface to STRANDS, but this issue remained. We now solve the case for real by pushing the string concatenation down to VSL: New versions of VSL and VSLb (coded by example of VSLv() and VSLbt()) take a strands argument and create a log record without additional copy overhead. These solve #3194 for std.log(), make logging more efficient and, in particular, allow use of std.log() in low workspace conditions (because they do not require any). Also improve test coverage for std.log() Ref #3194
-
Nils Goroll authored
note: no change to vrt.h, this is a private interface between vcl and vrt_vcl/vpi.
-
Nils Goroll authored
... potentially saving a lock/unlock on the critical vcl_mtx Both callers of vcl_get(), VPI_vcl_select() and VCL_Refresh(), potentially have to unref another vcl first. For VCL_Refresh(), this happens when the active vcl changes and the previously active vcl is cached in (struct worker).vcl, which can be assumed to always be the case on a busy system. For VPI_vcl_select(), this happens when switching vcls at esi_level > 0. To summarize, this patch will primarily reduce contention on the vcl_mtx after a 'vcl.use' CLI command on a busy system and for 'return(vcl(...))' with ESI.
-
Nils Goroll authored
This is already implied in the code (because otherwise we would potentially leak a vcl reference (busy counter)). (yes, I have run make check with this)
-
Nils Goroll authored
We should not consider an early close of the backend connection a failure of the test, this vtc is not concerned with bodies.
-
Poul-Henning Kamp authored
-
- 23 Jan, 2020 1 commit
-
-
Dridi Boukelmoune authored
-
- 21 Jan, 2020 5 commits
-
-
Martin Tzvetanov Grigorov authored
-
Nils Goroll authored
This tests that we are at least consistent, though not necessarily correct See #2902
-
Nils Goroll authored
Our code was inconsistent with respect to the cli vrt_ctx.msg being set for vcl temperature events. This patch is intended as a temporary bandaid to at least make the code consistent. A proper solution is pending after clarification of the intent in #2902, in particular wrt VCL_EVENT_COLD, which, by design, should not have a ctx->msg, but does have one at the moment. See #2902 for more details
-
Nils Goroll authored
we were missing VCL_TaskEnter()/VCL_TaskLeave() Noticed working on #2902
-
Nils Goroll authored
it is the true (1) argument to VCL_Get_CliCtx which creates the msg vsb.
-
- 20 Jan, 2020 6 commits
-
-
Poul-Henning Kamp authored
Fixes #1853
-
Nils Goroll authored
... which was received from martin in private communication, thank you
-
Martin Blix Grydeland authored
Currently, with the 505b7bd9 patch, when calling WS_ReserveSize with bytes equal to the amount of workspace that is currently available, it will return zero and mark overflow. This patch redoes the patch, and changes it to return zero and overflow only when the requested number of bytes is larger than what is available.
-
Nils Goroll authored
The test is now conducted on the session workspace in order to have the client workspace free to generate vtc.log() output which needs workspace to format the string. This made me notice that vtc.log, via WS_Reset(), clears a previous workspace overflow and I wonder if this is how it should be.
-
Nils Goroll authored
-
Nils Goroll authored
introduced with a74315bc spotted by coverity
-
- 18 Jan, 2020 2 commits
-
-
Nils Goroll authored
... introduced with 3bb8b84c: in Pool_Work_Thread(), we could break out of the for (i = 0; i < TASK_QUEUE__END; i++) loop with tp set to the value from the previous iteration of the top while() loop where if should have been NULL (for no task found). Noticed staring at #3192 - unclear yet if related
-
Nils Goroll authored
When we turned the vcl temperatures into a struct, we overlooked this statement because of the cast. Noticed when staring at #3192
-
- 17 Jan, 2020 3 commits
-
-
Nils Goroll authored
in these cases, the initial AN(objp) was missing, so we would potentially dereference a NULL pointer without an explicit assertion failure. in VCL_Rel(), AN(*vcc) was likely just a typo resulting in a semantic noop (the check was a duplication of the NULL check in CHECK_OBJ_NOTNULL). ... more examples why using the macro is a good idea
-
Nils Goroll authored
command: spatch -I include/ -I bin/varnishd/ --dir . --in-place \ --sp-file tools/coccinelle/take_obj_notnull.cocci
-
Dridi Boukelmoune authored
The previous stabilization turned out not to reliably work with FreeBSD on aarch64 hardware. It was still an improvement overall, but the test case turned out to be a bit cryptic and when [idle_]send_timeout support landed in VCL it wasn't obvious how to add coverage. This attempt bites the bullet and defines one pair of client/logexpect instances per use case and clearly (I hope) indicates why it is doing things or not doing them. Since we now have two clients that aren't expected to complete before the test case itself the server is in dispatch mode instead of repeating its scenario. Using barriers in dispatch mode should raise a red flag for any reviewer, but in this case the barriers outside the server are properly serialized, are systematically used by every single client, and as a result should be safe. As usual, personal testing limited to x86_64 Linux and FreeBSD.
-
- 16 Jan, 2020 8 commits
-
-
Nils Goroll authored
when we stall sending on the backend side, we _have_ to run into a timeout on the client side, haven't we?
-
Nils Goroll authored
and enable debug output for better failure analysis
-
Nils Goroll authored
Furhter lighten the load for the test to succeed on FreeBSD vtest, hopefully. Also, when stars align, we do not git the busy object (streaming) and do not see chunked encoding.
-
Nils Goroll authored
we need a way for vtc to reach into session setup I guess
-
Nils Goroll authored
freebsd vtest boxes cannot complete the c2 response within the 20s extended send_timeout, apparently for too much overhead from timeout handling. Try to fix with less pressure
-
Nils Goroll authored
-
Nils Goroll authored
-
Nils Goroll authored
02bc0a68 requires 24 bytes more on 64bit, which brought o00005.vtc just over the top on smartos 64bit machines (the vtc tests PROXY TLVs, which get stored on the session workspace). Increase the default workspace_session by 256bytes (50%) to accomodate sane proxy TLV lengths by default. This is about 10x more than the minimum increase sufficient to accomodate the increased workspace usage. I went for 768 bytes because - this gives us the next least common multiple (12k) with the common 4K page size unless we went up to 1k - we were already quite tight with the default and could not accomodate common proxy TLV use (see for example #3131) As a ballpart reality check, I do not think that spending an additional 256MB should be an issue for users supporting 1M sessions.
-
- 15 Jan, 2020 4 commits
-
-
Nils Goroll authored
and test that they work for H1 To @Dridi, I would appreciate if you could have another look at s10.vtc. I *tried* to keep your good ideas intact, and hope you can live with these changes.
-
Nils Goroll authored
since d4b6228e the busyobj might also gain one, so depending on who deref's first, there may be one or zero references left.
-
Nils Goroll authored
-
Nils Goroll authored
thank you!
-