1
<?xml version="1.0" encoding="utf-8"?>
2
<html xmlns="http://www.w3.org/1999/xhtml">
4
<title>Change log for Varnish 2.0.3</title>
5
<link rel="stylesheet" type="text/css" href="changes.css"/>
8
<h1>Change log for Varnish 2.0.3</h1>
9
<h2>Changes between 2.0.2 and 2.0.3</h2>
13
<p>Handle If-Modified-Since and ESI sub-objects better,
14
fixing a problem where we sometimes neglected to insert
18
<p><span class="code">restart</span> in <span class="code">vcl_hit</span> is now supported.</p>
21
<p>Setting the TTL of an object to 0 seconds would sometimes
22
cause it to be delivered for up to one second - epsilon. This
23
has been corrected and we should now never deliver those
24
objects to other clients.</p>
27
<p>The malloc storage backend now prints the maximum storage
28
size, just like the file backend.</p>
31
<p>Various small documentation bugs have been fixed.</p>
34
<p>Varnish did not set a default interval for backend
35
probes, causing it to poll the backend continuously. This has
39
<p>Allow "true" and "false" when setting boolean parameters,
40
in addition to on/off, enable/disable and yes/no.</p>
43
<p>Default to always talking HTTP 1.1 with the backend.</p>
46
<p>Varnish did not make sure the file it was loading was a
47
regular file. This could cause Varnish to crash if it was
48
asked to load a directory or other non-regular file. We now
49
check that the file is a regular file before loading it.</p>
52
<p>The binary heap used for expiry processing had
53
scalability problems. Work around this by using stripes of a
54
fixed size, which should make this scale better, particularly
55
when starting up and having lots of objects.</p>
58
<p>When we imported the <span class="code">jemalloc</span> library into
59
the Varnish tree, it did not compile without warnings. This
60
has now been fixed.</p>
63
<p>Varnish took a very long time to detect that the backend
64
did not respond. To remedy this, we now have read timeouts in
65
addition to the connect timeout. Both
66
the <span class="code">first_byte_timeout</span> and
67
the <span class="code">between_bytes_timeout</span> defaults to 60 seconds.
68
The connect timeout is no longer in milliseconds, but rather in
72
<p>Previously, the VCL to C conversion as well as the
73
invocation of the C compiler was done in the management
74
process. This is now done in a separate sub-process. This
75
prevents any bugs in the VCL compiler from affecting the
76
management process.</p>
79
<p>Chunked encoding headers were counted in the statistics
80
for header bytes. They no longer are.</p>
83
<p>ESI processed objects were not counted in the statistics
84
for body bytes. They now are.</p>
87
<p>It is now possible to adjust the maximum record length of
88
log entries in the shmlog by tuning the <span class="code">shm_reclen</span>
92
<p>The management parameters listed in the CLI were not
93
sorted, which made it hard to find the parameter you were
94
looking for. They are now sorted, which should make this
98
<p>Add a new hashing type, "critbit", which uses a lock-less
99
tree based lookup algorithm. This is experimental and should
100
not be enabled in production environments without proper
104
<p>The session workspace had a default size of 8k. It is
105
now 16k, which should make VCLs where many headers are
106
processed less prone to panics.</p>
109
<p>We have seen that people seem to be confused as to which
110
actions in the different VCL functions return and which ones
111
don't. Add a new syntax <span class="code">return(action)</span> to make
112
this more explicit. The old syntax is still supported.</p>
115
<p>Varnish would return an error if any of the management
116
IPs listed in the <span class="code">-T</span> parameter could not be
117
listened to. We now only return an error if none of them can
121
<p>In the case of the backend or client giving us too many
122
parameters, we used to just ignore the overflowing headers.
123
This is problematic if you end up ignoreing Content-Length,
124
Transfer-Encoding and similar headers. We now give out a 400
125
error to the client if it sends us too many and 503 if we get
126
too many from the backend.</p>
129
<p>We used panic if we got a too large chunked header.
130
This behaviour has been changed into just failing the
134
<p>Varnish now supports an extended purge method where it is
135
possible to do <span class="code">purge req.http.host ~ "web1.com" && req.url ~ "\.png"
136
</span> and similar. See the documentation for details.</p>
139
<p>Under heavy load, Varnish would sometimes crash when
140
trying to update the per-request statistics. This has now been
144
<p>It is now possible to not save the hash string in the
145
session and object workspace. This will save a lot of memory
146
on sites with many small objects. Disabling
147
the <span class="code">purge_hash</span> parameter also disables
148
the <span class="code">purge.hash</span> facility.</p>
151
<p>Varnish now supports <span class="code">!~</span> as a "no match"
152
regular expression matcher.</p>
155
<p>In some cases, you could get serialised access to "pass"
156
objects. We now make it default to the default_ttl value; this
157
can be overridden in vcl_fetch.</p>
160
<p>Varnish did not check the syntax of <span class="code">regsub</span>
161
calls properly. More checking has been added.</p>
164
<p>If the client closed the connection while Varnish was
165
processing ESI elements, Varnish would crash while trying to
166
write the object to the client. We now check if the client has
167
closed the connection.</p>
170
<p>The ESI parser had a bug where it would crash if an XML
171
comment would span storage segments. This has been
175
<h3>VCL Manual page</h3>
178
<p>The documentation on how capturing parentheses work was
179
wrong. This has been corrected.</p>
182
<p>Grace has now been documented.</p>
185
<h3>varnishreplay</h3>
188
<p><span class="code">varnishreplay</span> did not work correctly on
189
Linux, due to a too small stack. This has now been fixed.</p>