]>
err.no Git - varnish/log
phk [Fri, 20 Feb 2009 18:13:42 +0000 (18:13 +0000)]
Don't clean on every request, that was for debugging only.
git-svn-id: svn+ssh://projects.linpro.no/svn/varnish/trunk@3800
d4fa192b -c00b-0410-8231-
f00ffab90ce4
phk [Fri, 20 Feb 2009 18:05:34 +0000 (18:05 +0000)]
Don't try to rush waiting sessions of refcount is zero, there cannot be
any (they would hold a reference).
Should be merged to 2.0.3
git-svn-id: svn+ssh://projects.linpro.no/svn/varnish/trunk@3799
d4fa192b -c00b-0410-8231-
f00ffab90ce4
phk [Fri, 20 Feb 2009 18:00:06 +0000 (18:00 +0000)]
Add a lot more paranoia asserts
git-svn-id: svn+ssh://projects.linpro.no/svn/varnish/trunk@3798
d4fa192b -c00b-0410-8231-
f00ffab90ce4
phk [Fri, 20 Feb 2009 17:21:30 +0000 (17:21 +0000)]
Put the cleanup next to the preallocation and remember to release
the preallocated objcore
git-svn-id: svn+ssh://projects.linpro.no/svn/varnish/trunk@3797
d4fa192b -c00b-0410-8231-
f00ffab90ce4
phk [Fri, 20 Feb 2009 15:25:06 +0000 (15:25 +0000)]
Add a delta-stats structure to worker threads and keep
track of n_object and n_objecthead in them.
Accumulate into global stats after work is done if the lock is
free and always before going idle.
git-svn-id: svn+ssh://projects.linpro.no/svn/varnish/trunk@3796
d4fa192b -c00b-0410-8231-
f00ffab90ce4
phk [Fri, 20 Feb 2009 15:18:46 +0000 (15:18 +0000)]
Make "hcb.dump" a CLI command
git-svn-id: svn+ssh://projects.linpro.no/svn/varnish/trunk@3795
d4fa192b -c00b-0410-8231-
f00ffab90ce4
phk [Fri, 20 Feb 2009 14:00:16 +0000 (14:00 +0000)]
Add a argument to the stat_field macro, to be used with locking evilness
shortly.
git-svn-id: svn+ssh://projects.linpro.no/svn/varnish/trunk@3794
d4fa192b -c00b-0410-8231-
f00ffab90ce4
petter [Fri, 20 Feb 2009 13:45:35 +0000 (13:45 +0000)]
Open the socket non-blocking so we can time out if the management console doesn't print a banner
git-svn-id: svn+ssh://projects.linpro.no/svn/varnish/trunk@3793
d4fa192b -c00b-0410-8231-
f00ffab90ce4
petter [Fri, 20 Feb 2009 11:45:30 +0000 (11:45 +0000)]
Added possibility to add nodes to a group without have the settings of the group or node altered, which can be usefull to group node logically if the web GUI is used as a monitoring tool. Also fixed a logical bug in the settings inheritance code.
git-svn-id: svn+ssh://projects.linpro.no/svn/varnish/trunk@3792
d4fa192b -c00b-0410-8231-
f00ffab90ce4
phk [Fri, 20 Feb 2009 11:05:14 +0000 (11:05 +0000)]
Be more defensive around objhead retirement.
git-svn-id: svn+ssh://projects.linpro.no/svn/varnish/trunk@3791
d4fa192b -c00b-0410-8231-
f00ffab90ce4
phk [Fri, 20 Feb 2009 09:56:49 +0000 (09:56 +0000)]
Remove unused hoh_digest
git-svn-id: svn+ssh://projects.linpro.no/svn/varnish/trunk@3790
d4fa192b -c00b-0410-8231-
f00ffab90ce4
petter [Fri, 20 Feb 2009 06:53:55 +0000 (06:53 +0000)]
Forgot to escape \ when sending VCL to management port
git-svn-id: svn+ssh://projects.linpro.no/svn/varnish/trunk@3789
d4fa192b -c00b-0410-8231-
f00ffab90ce4
phk [Thu, 19 Feb 2009 16:00:22 +0000 (16:00 +0000)]
Split a couple of generally useful routines out of storage_file
git-svn-id: svn+ssh://projects.linpro.no/svn/varnish/trunk@3788
d4fa192b -c00b-0410-8231-
f00ffab90ce4
petter [Thu, 19 Feb 2009 14:10:35 +0000 (14:10 +0000)]
Some minor cosmetics and bugs discovered during documentation writing.
git-svn-id: svn+ssh://projects.linpro.no/svn/varnish/trunk@3787
d4fa192b -c00b-0410-8231-
f00ffab90ce4
petter [Wed, 18 Feb 2009 15:36:25 +0000 (15:36 +0000)]
A mojor update to the web GUI, unfortunately all done in one go. Nevertheless, here it is, and has many improvements to the christmas edition commited in december:
- the GUI now uses a sqlite3 database for storage, so all configuratons are stored
- aggregated statistics for groups
- graphs on demand for raw data
- CSV export of stat data
- 'Restricted mode' to get a web GUI which prevent you from doing changes
- logging of changes performed in the GUI
- generall minor improvements in the GUI
Additional perl module dependencies are Algorithm::Diff and DBD::Sqlite3
A proper documentation will appear on the wiki in a couple of days to describe all that can be done with the web GUI.
git-svn-id: svn+ssh://projects.linpro.no/svn/varnish/trunk@3786
d4fa192b -c00b-0410-8231-
f00ffab90ce4
tfheen [Wed, 18 Feb 2009 08:15:44 +0000 (08:15 +0000)]
Make sure we have a C99 compiler
git-svn-id: svn+ssh://projects.linpro.no/svn/varnish/trunk@3785
d4fa192b -c00b-0410-8231-
f00ffab90ce4
des [Tue, 17 Feb 2009 17:10:29 +0000 (17:10 +0000)]
Correct and complete description of -a.
git-svn-id: svn+ssh://projects.linpro.no/svn/varnish/trunk@3784
d4fa192b -c00b-0410-8231-
f00ffab90ce4
phk [Tue, 17 Feb 2009 11:11:57 +0000 (11:11 +0000)]
with the prefetch timer out of the way, we do not need the ttl
in objcore, only when the timer fires.
git-svn-id: svn+ssh://projects.linpro.no/svn/varnish/trunk@3783
d4fa192b -c00b-0410-8231-
f00ffab90ce4
phk [Tue, 17 Feb 2009 10:50:42 +0000 (10:50 +0000)]
Now that we only have one timer firing, remove stuff to deal with
different events.
git-svn-id: svn+ssh://projects.linpro.no/svn/varnish/trunk@3782
d4fa192b -c00b-0410-8231-
f00ffab90ce4
phk [Tue, 17 Feb 2009 10:29:20 +0000 (10:29 +0000)]
Eliminate prefetch, grace was a much better idea.
git-svn-id: svn+ssh://projects.linpro.no/svn/varnish/trunk@3781
d4fa192b -c00b-0410-8231-
f00ffab90ce4
phk [Tue, 17 Feb 2009 10:12:21 +0000 (10:12 +0000)]
Assert that we got an objcore
git-svn-id: svn+ssh://projects.linpro.no/svn/varnish/trunk@3780
d4fa192b -c00b-0410-8231-
f00ffab90ce4
phk [Tue, 17 Feb 2009 10:06:19 +0000 (10:06 +0000)]
Move the ttl from object up to the objcore
git-svn-id: svn+ssh://projects.linpro.no/svn/varnish/trunk@3779
d4fa192b -c00b-0410-8231-
f00ffab90ce4
phk [Tue, 17 Feb 2009 09:50:05 +0000 (09:50 +0000)]
Move the pass flag from the object to the objcore.
git-svn-id: svn+ssh://projects.linpro.no/svn/varnish/trunk@3778
d4fa192b -c00b-0410-8231-
f00ffab90ce4
tfheen [Tue, 17 Feb 2009 09:48:10 +0000 (09:48 +0000)]
Remove __BEGIN_DECLS and __END_DECLS as those do not exist on Solaris (and we do not need them)
git-svn-id: svn+ssh://projects.linpro.no/svn/varnish/trunk@3777
d4fa192b -c00b-0410-8231-
f00ffab90ce4
phk [Tue, 17 Feb 2009 09:46:33 +0000 (09:46 +0000)]
Convert assert to error report
git-svn-id: svn+ssh://projects.linpro.no/svn/varnish/trunk@3776
d4fa192b -c00b-0410-8231-
f00ffab90ce4
tfheen [Tue, 17 Feb 2009 09:09:08 +0000 (09:09 +0000)]
Add documentation for cli_banner
git-svn-id: svn+ssh://projects.linpro.no/svn/varnish/trunk@3775
d4fa192b -c00b-0410-8231-
f00ffab90ce4
phk [Mon, 16 Feb 2009 15:34:00 +0000 (15:34 +0000)]
Allow for pass opbjects not having a objcore
git-svn-id: svn+ssh://projects.linpro.no/svn/varnish/trunk@3774
d4fa192b -c00b-0410-8231-
f00ffab90ce4
phk [Mon, 16 Feb 2009 15:06:18 +0000 (15:06 +0000)]
Move the object busy flag up to the objcore.
git-svn-id: svn+ssh://projects.linpro.no/svn/varnish/trunk@3773
d4fa192b -c00b-0410-8231-
f00ffab90ce4
phk [Mon, 16 Feb 2009 14:22:00 +0000 (14:22 +0000)]
Compress objcore a bit more by squezing 32 bit fields to 8 bit, still
leaving plenty of space.
git-svn-id: svn+ssh://projects.linpro.no/svn/varnish/trunk@3772
d4fa192b -c00b-0410-8231-
f00ffab90ce4
des [Mon, 16 Feb 2009 13:40:29 +0000 (13:40 +0000)]
Correct copyright and attribution.
Approved by: phk, ssm
git-svn-id: svn+ssh://projects.linpro.no/svn/varnish/trunk@3771
d4fa192b -c00b-0410-8231-
f00ffab90ce4
phk [Mon, 16 Feb 2009 13:38:39 +0000 (13:38 +0000)]
Reduce objhead size by overloading.
git-svn-id: svn+ssh://projects.linpro.no/svn/varnish/trunk@3770
d4fa192b -c00b-0410-8231-
f00ffab90ce4
phk [Fri, 13 Feb 2009 13:43:30 +0000 (13:43 +0000)]
To prevent masking bugs, disable auto_restart by default.
Enable it explicitly in the one testcase where we check that it works.
git-svn-id: svn+ssh://projects.linpro.no/svn/varnish/trunk@3769
d4fa192b -c00b-0410-8231-
f00ffab90ce4
phk [Fri, 13 Feb 2009 13:42:44 +0000 (13:42 +0000)]
Make sure to clean the VBE properly before releasing it.
git-svn-id: svn+ssh://projects.linpro.no/svn/varnish/trunk@3768
d4fa192b -c00b-0410-8231-
f00ffab90ce4
phk [Fri, 13 Feb 2009 12:16:34 +0000 (12:16 +0000)]
Add two hidden CLI commands for panic'ing the master and worker process.
git-svn-id: svn+ssh://projects.linpro.no/svn/varnish/trunk@3767
d4fa192b -c00b-0410-8231-
f00ffab90ce4
phk [Fri, 13 Feb 2009 11:10:37 +0000 (11:10 +0000)]
Use semaphores instead of delays
git-svn-id: svn+ssh://projects.linpro.no/svn/varnish/trunk@3766
d4fa192b -c00b-0410-8231-
f00ffab90ce4
phk [Fri, 13 Feb 2009 10:46:14 +0000 (10:46 +0000)]
Don't copy the debug flag around, make it a global instead.
git-svn-id: svn+ssh://projects.linpro.no/svn/varnish/trunk@3765
d4fa192b -c00b-0410-8231-
f00ffab90ce4
phk [Fri, 13 Feb 2009 10:38:22 +0000 (10:38 +0000)]
vi(1) 'x' key misfire.
git-svn-id: svn+ssh://projects.linpro.no/svn/varnish/trunk@3764
d4fa192b -c00b-0410-8231-
f00ffab90ce4
phk [Fri, 13 Feb 2009 10:35:46 +0000 (10:35 +0000)]
Disable CLI banner when running tests.
git-svn-id: svn+ssh://projects.linpro.no/svn/varnish/trunk@3763
d4fa192b -c00b-0410-8231-
f00ffab90ce4
phk [Fri, 13 Feb 2009 10:13:27 +0000 (10:13 +0000)]
Add a "banner" command to the CLI interface.
Add a parameter "cli_banner" (default on) which injects an implicit
"banner" CLI command on all cli connections when opened.
The net result is that you get a CLI response when you connect to
the CLI ports:
200 193
-----------------------------
Varnish HTTP accelerator CLI.
-----------------------------
Type 'help' for command list.
Type 'quit' to close CLI session.
Type 'start' to launch worker process.
Presently the contents of the CLI response is "undefined", in the
sense that you should not programatically depend on anything besides
the "200" reply code.
git-svn-id: svn+ssh://projects.linpro.no/svn/varnish/trunk@3762
d4fa192b -c00b-0410-8231-
f00ffab90ce4
phk [Fri, 13 Feb 2009 09:49:11 +0000 (09:49 +0000)]
Update copyright year
git-svn-id: svn+ssh://projects.linpro.no/svn/varnish/trunk@3761
d4fa192b -c00b-0410-8231-
f00ffab90ce4
phk [Fri, 13 Feb 2009 09:38:57 +0000 (09:38 +0000)]
Add VLU_Data() function for injecting input
git-svn-id: svn+ssh://projects.linpro.no/svn/varnish/trunk@3760
d4fa192b -c00b-0410-8231-
f00ffab90ce4
phk [Fri, 13 Feb 2009 09:25:33 +0000 (09:25 +0000)]
parameter name change "acceptor" -> "waiter"
git-svn-id: svn+ssh://projects.linpro.no/svn/varnish/trunk@3759
d4fa192b -c00b-0410-8231-
f00ffab90ce4
phk [Fri, 13 Feb 2009 09:19:50 +0000 (09:19 +0000)]
Due to lack og foresight,the threads that keep an eye on client connections
to see if they get reused ended up being named "acceptors", which is a bad
name because we have another thread which accepts new connections.
Rename the "fake" acceptors to "waiters"
git-svn-id: svn+ssh://projects.linpro.no/svn/varnish/trunk@3758
d4fa192b -c00b-0410-8231-
f00ffab90ce4
phk [Thu, 12 Feb 2009 22:26:44 +0000 (22:26 +0000)]
Move the LRU timestamp from the objcore to the object, we only access
it when we have used the object anyway.
git-svn-id: svn+ssh://projects.linpro.no/svn/varnish/trunk@3757
d4fa192b -c00b-0410-8231-
f00ffab90ce4
phk [Thu, 12 Feb 2009 17:23:16 +0000 (17:23 +0000)]
Move objcore over objects, so that objhead has a list of objcore
which point to the objects.
Preallocate objcore with obj+objhead before we enter locked
hash sections.
Rename objcore.list to objcore.lru_list.
Eliminate obj.list and objhead.hashlen
git-svn-id: svn+ssh://projects.linpro.no/svn/varnish/trunk@3756
d4fa192b -c00b-0410-8231-
f00ffab90ce4
tfheen [Wed, 11 Feb 2009 14:55:26 +0000 (14:55 +0000)]
Merge r3752: Added som changelog changes from fedora package
git-svn-id: svn+ssh://projects.linpro.no/svn/varnish/trunk@3754
d4fa192b -c00b-0410-8231-
f00ffab90ce4
tfheen [Wed, 11 Feb 2009 14:55:02 +0000 (14:55 +0000)]
Merge r3751 into trunk: Packaging fixes
- Changelog item to specfile for the rpm package
- Added html doc to the rpm package
git-svn-id: svn+ssh://projects.linpro.no/svn/varnish/trunk@3753
d4fa192b -c00b-0410-8231-
f00ffab90ce4
phk [Wed, 11 Feb 2009 11:24:12 +0000 (11:24 +0000)]
Pull struct objexp out of the closet and call it objcore.
In the future, this will be the bits of a cached object we cannot
realistically expect to stay paged out for any period of time.
git-svn-id: svn+ssh://projects.linpro.no/svn/varnish/trunk@3750
d4fa192b -c00b-0410-8231-
f00ffab90ce4
des [Fri, 6 Feb 2009 21:21:50 +0000 (21:21 +0000)]
Fix backslashes.
git-svn-id: svn+ssh://projects.linpro.no/svn/varnish/trunk@3693
d4fa192b -c00b-0410-8231-
f00ffab90ce4
des [Fri, 6 Feb 2009 21:12:46 +0000 (21:12 +0000)]
Whitespace cleanup
git-svn-id: svn+ssh://projects.linpro.no/svn/varnish/trunk@3692
d4fa192b -c00b-0410-8231-
f00ffab90ce4
phk [Tue, 3 Feb 2009 21:49:47 +0000 (21:49 +0000)]
Regression testcase for #433
git-svn-id: svn+ssh://projects.linpro.no/svn/varnish/trunk@3576
d4fa192b -c00b-0410-8231-
f00ffab90ce4
phk [Tue, 3 Feb 2009 21:49:26 +0000 (21:49 +0000)]
Overhaul the ESI parser in light of #433 and the prospect of future
addition of features to the ESI code.
The particular situation in #433 arises because a XML comment is not
bounded in length, the same way as an <esi:include...> element naturally
is. This opens the window for trouble when large sections of XML is
commented out for some reason or another.
Bite the bullet and create a "storage-pointer" consisting of a pointer
to a storage segment and a pointer into that segment.
Add a main-loop which uses these pointers to walks over the entire
object, looking for stuff we care about, and handle each appropriately.
In addition to coping properly with the situation in #433, this code is
also close to 100 lines shorter and has a more logical structure.
The downside is that it is isn't quite as memory-access-alergic as the
previous version. (I challenge anybody to measure the effect of this.)
Fixes: #433
git-svn-id: svn+ssh://projects.linpro.no/svn/varnish/trunk@3575
d4fa192b -c00b-0410-8231-
f00ffab90ce4
phk [Tue, 3 Feb 2009 21:22:52 +0000 (21:22 +0000)]
Add line numbers to this test, so we can see where it croaks, when it does.
git-svn-id: svn+ssh://projects.linpro.no/svn/varnish/trunk@3574
d4fa192b -c00b-0410-8231-
f00ffab90ce4
phk [Tue, 3 Feb 2009 18:44:21 +0000 (18:44 +0000)]
Add a counter for esi parse errors and test it in all ESI related
tests cases.
git-svn-id: svn+ssh://projects.linpro.no/svn/varnish/trunk@3573
d4fa192b -c00b-0410-8231-
f00ffab90ce4
phk [Tue, 3 Feb 2009 17:34:08 +0000 (17:34 +0000)]
Add bodylen expects to the ESI test cases
git-svn-id: svn+ssh://projects.linpro.no/svn/varnish/trunk@3572
d4fa192b -c00b-0410-8231-
f00ffab90ce4
phk [Tue, 3 Feb 2009 12:59:13 +0000 (12:59 +0000)]
Update this test to actually test what it should.
I suspect a white-space cleanup got it at some point.
git-svn-id: svn+ssh://projects.linpro.no/svn/varnish/trunk@3571
d4fa192b -c00b-0410-8231-
f00ffab90ce4
phk [Tue, 3 Feb 2009 12:45:06 +0000 (12:45 +0000)]
Make it possible (at great performance loss) to force straight
time sequencing of shmlog records for debugging purposes.
git-svn-id: svn+ssh://projects.linpro.no/svn/varnish/trunk@3570
d4fa192b -c00b-0410-8231-
f00ffab90ce4
phk [Tue, 3 Feb 2009 12:42:39 +0000 (12:42 +0000)]
Mark that we do limited segment size fetches for debugging
git-svn-id: svn+ssh://projects.linpro.no/svn/varnish/trunk@3569
d4fa192b -c00b-0410-8231-
f00ffab90ce4
phk [Tue, 3 Feb 2009 10:48:20 +0000 (10:48 +0000)]
Opps, debugging hack leaked in.
git-svn-id: svn+ssh://projects.linpro.no/svn/varnish/trunk@3568
d4fa192b -c00b-0410-8231-
f00ffab90ce4
phk [Tue, 3 Feb 2009 10:47:29 +0000 (10:47 +0000)]
The esi detector should also spot esi comments.
git-svn-id: svn+ssh://projects.linpro.no/svn/varnish/trunk@3567
d4fa192b -c00b-0410-8231-
f00ffab90ce4
phk [Tue, 3 Feb 2009 10:26:02 +0000 (10:26 +0000)]
Add an (unlocked) counter for number of ESI objects we have parsed.
Add two test-cases for objects we should not esi parse.
git-svn-id: svn+ssh://projects.linpro.no/svn/varnish/trunk@3566
d4fa192b -c00b-0410-8231-
f00ffab90ce4
phk [Mon, 2 Feb 2009 16:48:28 +0000 (16:48 +0000)]
Close a race where VCL tries to modify the obj.ttl at the same moment
the grim reaper has taken the object off the binheap to inspect it.
git-svn-id: svn+ssh://projects.linpro.no/svn/varnish/trunk@3565
d4fa192b -c00b-0410-8231-
f00ffab90ce4
tfheen [Fri, 30 Jan 2009 14:40:32 +0000 (14:40 +0000)]
Move mybe{32,64}enc definitions outside of ifdef so we work on 64 bit BE platforms too.
git-svn-id: svn+ssh://projects.linpro.no/svn/varnish/trunk@3564
d4fa192b -c00b-0410-8231-
f00ffab90ce4
phk [Wed, 28 Jan 2009 11:48:07 +0000 (11:48 +0000)]
More FlexeLint silencing.
git-svn-id: svn+ssh://projects.linpro.no/svn/varnish/trunk@3550
d4fa192b -c00b-0410-8231-
f00ffab90ce4
tfheen [Wed, 28 Jan 2009 11:48:03 +0000 (11:48 +0000)]
Add missing header file to tarball
Fixes build failure
git-svn-id: svn+ssh://projects.linpro.no/svn/varnish/trunk@3549
d4fa192b -c00b-0410-8231-
f00ffab90ce4
phk [Wed, 28 Jan 2009 10:46:54 +0000 (10:46 +0000)]
silence a couple of Flexelint complaints.
git-svn-id: svn+ssh://projects.linpro.no/svn/varnish/trunk@3548
d4fa192b -c00b-0410-8231-
f00ffab90ce4
phk [Tue, 27 Jan 2009 21:14:35 +0000 (21:14 +0000)]
Stop processing ESI elements as soon as we discover that the client
has closed the connection on us.
Fixes #427
git-svn-id: svn+ssh://projects.linpro.no/svn/varnish/trunk@3547
d4fa192b -c00b-0410-8231-
f00ffab90ce4
phk [Tue, 27 Jan 2009 12:18:12 +0000 (12:18 +0000)]
proper errorchecks for regsub syntax.
(The recent change that moved the compiler into its own subprocess
eliminates risk that a compiler error causes the management process
to die, you just do not get a sensible syntax error).
Fixes: #417
git-svn-id: svn+ssh://projects.linpro.no/svn/varnish/trunk@3546
d4fa192b -c00b-0410-8231-
f00ffab90ce4
phk [Tue, 27 Jan 2009 08:46:51 +0000 (08:46 +0000)]
Don't modify the obj_timer_when field outside the binheap lock.
This hopefully finaly lays the sporadic
assert(oe2->timer_when >= oe->timer_when);
panics to rest.
git-svn-id: svn+ssh://projects.linpro.no/svn/varnish/trunk@3545
d4fa192b -c00b-0410-8231-
f00ffab90ce4
phk [Tue, 27 Jan 2009 08:17:29 +0000 (08:17 +0000)]
Lack of a backend name is no reasonable cause for a panic.
git-svn-id: svn+ssh://projects.linpro.no/svn/varnish/trunk@3544
d4fa192b -c00b-0410-8231-
f00ffab90ce4
phk [Sat, 24 Jan 2009 12:56:27 +0000 (12:56 +0000)]
Test that we know the purge variable when it is compiled in.
git-svn-id: svn+ssh://projects.linpro.no/svn/varnish/trunk@3543
d4fa192b -c00b-0410-8231-
f00ffab90ce4
phk [Sat, 24 Jan 2009 10:36:46 +0000 (10:36 +0000)]
Implement the new-purge case where the entire expression comes
from VCL.
It is possible to instigate purges two ways from VCL now:
sub vcl_recv {
# Purge the req.url
if (req.request == "PURGE") {
purge (req.url == req.url);
error 410;
}
# Take entire purge instruction from "Purge:" header
if (req.request == "PURGESTR") {
purge ("" req.http.purge);
error 410;
}
Testcase for this.
git-svn-id: svn+ssh://projects.linpro.no/svn/varnish/trunk@3542
d4fa192b -c00b-0410-8231-
f00ffab90ce4
phk [Fri, 23 Jan 2009 21:17:02 +0000 (21:17 +0000)]
First cut at VCL support for new-purge.
git-svn-id: svn+ssh://projects.linpro.no/svn/varnish/trunk@3541
d4fa192b -c00b-0410-8231-
f00ffab90ce4
phk [Fri, 23 Jan 2009 13:22:43 +0000 (13:22 +0000)]
Don't append a CRNL to the body.
And add separate rxhdrs and rxbody primitives.
Submitted by: Yonatan Broza & Dmitry Rubinstein
git-svn-id: svn+ssh://projects.linpro.no/svn/varnish/trunk@3540
d4fa192b -c00b-0410-8231-
f00ffab90ce4
ingvar [Thu, 22 Jan 2009 13:07:20 +0000 (13:07 +0000)]
Don't need debug patch outside fedora package
git-svn-id: svn+ssh://projects.linpro.no/svn/varnish/trunk@3539
d4fa192b -c00b-0410-8231-
f00ffab90ce4
phk [Thu, 22 Jan 2009 10:42:58 +0000 (10:42 +0000)]
Move the purgable variables into a CPP table, so we can share them with
the VCL compiler
git-svn-id: svn+ssh://projects.linpro.no/svn/varnish/trunk@3538
d4fa192b -c00b-0410-8231-
f00ffab90ce4
phk [Wed, 21 Jan 2009 23:00:43 +0000 (23:00 +0000)]
Enforce a minimum ttl for "hit for pass" objects to prevent a value
of zero from serializing access to an object with very draconian
backend cache-control headers.
We could get far even with a one second TTL, but following our general
"there is a reason people put Varnish there in the first place" logic
we use the default_ttl parameter (default: 120 s) for this value.
If another value is desired, this can be set in vcl_fetch, even if it
looks somewhat counter-intuitive:
sub vcl_fetch {
if (obj.http.set-cookie) {
set obj.ttl = 10s;
pass;
}
}
Fixes #425
git-svn-id: svn+ssh://projects.linpro.no/svn/varnish/trunk@3537
d4fa192b -c00b-0410-8231-
f00ffab90ce4
phk [Mon, 19 Jan 2009 13:46:31 +0000 (13:46 +0000)]
Add "no match" operator !~ to VCL regexps
git-svn-id: svn+ssh://projects.linpro.no/svn/varnish/trunk@3534
d4fa192b -c00b-0410-8231-
f00ffab90ce4
phk [Mon, 19 Jan 2009 12:58:44 +0000 (12:58 +0000)]
Be much more BOFH about bereq, more asserts, free them where they
obviously should be freed.
This could fix 421 or make it much worse, but give us more info.
git-svn-id: svn+ssh://projects.linpro.no/svn/varnish/trunk@3530
d4fa192b -c00b-0410-8231-
f00ffab90ce4
tfheen [Mon, 19 Jan 2009 12:44:57 +0000 (12:44 +0000)]
Make make dist happier; distribute the files we need
git-svn-id: svn+ssh://projects.linpro.no/svn/varnish/trunk@3527
d4fa192b -c00b-0410-8231-
f00ffab90ce4
phk [Mon, 19 Jan 2009 11:45:03 +0000 (11:45 +0000)]
Add a new paramter "purge_hash" which defaults to "off".
Only save the hash-string in the session workspace and objects when
this paramter is set to "on".
For sites with many small objects, this will save significant VM.
When this paramter is set to "off", the "purge.hash" facility will
not work, but this should not be a problem, because the new purging
facility allow much more expressive purging, the typical case
being:
purge req.http.host ~ www.foo.com && req.url ~ "article2383"
git-svn-id: svn+ssh://projects.linpro.no/svn/varnish/trunk@3526
d4fa192b -c00b-0410-8231-
f00ffab90ce4
phk [Mon, 19 Jan 2009 09:48:16 +0000 (09:48 +0000)]
Move the vca_pipes to a more proper header file
git-svn-id: svn+ssh://projects.linpro.no/svn/varnish/trunk@3525
d4fa192b -c00b-0410-8231-
f00ffab90ce4
phk [Mon, 19 Jan 2009 09:36:07 +0000 (09:36 +0000)]
Move the fiddling of banned objects to cache_ban.c
git-svn-id: svn+ssh://projects.linpro.no/svn/varnish/trunk@3524
d4fa192b -c00b-0410-8231-
f00ffab90ce4
phk [Mon, 19 Jan 2009 09:22:49 +0000 (09:22 +0000)]
A couple of FlexeLint nits
git-svn-id: svn+ssh://projects.linpro.no/svn/varnish/trunk@3523
d4fa192b -c00b-0410-8231-
f00ffab90ce4
phk [Sun, 18 Jan 2009 16:57:29 +0000 (16:57 +0000)]
List referenced, but gone purges, mark them with a "G"
git-svn-id: svn+ssh://projects.linpro.no/svn/varnish/trunk@3522
d4fa192b -c00b-0410-8231-
f00ffab90ce4
phk [Sun, 18 Jan 2009 16:57:06 +0000 (16:57 +0000)]
Add a protective object to prevent purge.list from pruning our
purges before we test their numbers.
git-svn-id: svn+ssh://projects.linpro.no/svn/varnish/trunk@3521
d4fa192b -c00b-0410-8231-
f00ffab90ce4
phk [Sun, 18 Jan 2009 16:43:46 +0000 (16:43 +0000)]
Set cost 10 on regexp tests.
Let purge.list prune the tail of the list before dumping.
git-svn-id: svn+ssh://projects.linpro.no/svn/varnish/trunk@3520
d4fa192b -c00b-0410-8231-
f00ffab90ce4
phk [Sun, 18 Jan 2009 16:25:54 +0000 (16:25 +0000)]
Add the ability to purge on random request or object headers.
For instance:
purge req.http.host ~ www.foo.com && req.url ~ "\.png$"
purge obj.http.set-cookie ~ USER=383839
Now, why would you want purge on request headers and not object headers ?
Simple, some information the object does not have, the Host: header is
a good example.
Assuming that the Host: header is part of the hash we use to lookup
an object (as is the default), we can avoid copying that field into
the object (saving memory: O(nObjects)) by using the request value
to purge against.
git-svn-id: svn+ssh://projects.linpro.no/svn/varnish/trunk@3519
d4fa192b -c00b-0410-8231-
f00ffab90ce4
phk [Sun, 18 Jan 2009 15:42:29 +0000 (15:42 +0000)]
Implement exact matching and negatives for bans.
You can now purge using these four conditionals:
purge req.url == "/diediedie.html"
purge req.url != "/index.html"
purge req.url !~ "\.html$"
purge req.url ~ "\.jpg$"
git-svn-id: svn+ssh://projects.linpro.no/svn/varnish/trunk@3518
d4fa192b -c00b-0410-8231-
f00ffab90ce4
phk [Sun, 18 Jan 2009 15:14:54 +0000 (15:14 +0000)]
Don't list gone bans.
Emit && \ for line continuation.
git-svn-id: svn+ssh://projects.linpro.no/svn/varnish/trunk@3517
d4fa192b -c00b-0410-8231-
f00ffab90ce4
phk [Sun, 18 Jan 2009 14:54:41 +0000 (14:54 +0000)]
Properly quote the ban descriptions.
git-svn-id: svn+ssh://projects.linpro.no/svn/varnish/trunk@3516
d4fa192b -c00b-0410-8231-
f00ffab90ce4
phk [Sun, 18 Jan 2009 14:50:20 +0000 (14:50 +0000)]
Move the body of cli_quote() to vsb_quote() and give it a, presently
unused, "how" argument flag.
We currently have far too many "quote this string properly" implementations
in varnish, hopefully, this will replace most of them.
Once this stabilizes, vsb_quote() will be contributed back to FreeBSD.
git-svn-id: svn+ssh://projects.linpro.no/svn/varnish/trunk@3515
d4fa192b -c00b-0410-8231-
f00ffab90ce4
phk [Sun, 18 Jan 2009 14:26:32 +0000 (14:26 +0000)]
redo the purge.list function with proper locking
git-svn-id: svn+ssh://projects.linpro.no/svn/varnish/trunk@3514
d4fa192b -c00b-0410-8231-
f00ffab90ce4
phk [Wed, 14 Jan 2009 20:40:54 +0000 (20:40 +0000)]
After HSH_Lookup() returns NULL indicating a busy object, we diddled
the session a bit to transfer the per-request stats to the session
counters with SES_Charge().
Not only was it inconsistent to charge accounting data in the middle
of a request, it was also illegal because after the hash lock was
released we no longer owned the session.
Once a system is under sufficient load that there is a queue for the
CPU, a race could happen where upon hitting a busy object, the hash lock
was released, another thread would schedule, finish the busy object,
start the sessions on the waiting list, finish off the request we had
and then when we get the cpu again and access it, it's gone.
The previous commit (r3512) eliminated the need to call SES_Charge,
this commit removes the (option) shmlog message inside the hash lock
thus, hopefully, eliminating the race that caused #418.
Fixes: #418
git-svn-id: svn+ssh://projects.linpro.no/svn/varnish/trunk@3513
d4fa192b -c00b-0410-8231-
f00ffab90ce4
phk [Wed, 14 Jan 2009 20:28:27 +0000 (20:28 +0000)]
Originally we shaved 64 bytes from the session to the worker thread
by keeping the current requests accounting stats in the worker thread.
For reasons which will be explained in the next commit, this is no
longer a good idea, and this commit moves these counters from
the worker thread to the session at a slight but all in all
trivial cost in memory footprint.
Remove the call to SES_Charge() when we hit a busy object, it is
not necessary to clean the worker thread counters here now.
Move these counters from the worker thread to the see
git-svn-id: svn+ssh://projects.linpro.no/svn/varnish/trunk@3512
d4fa192b -c00b-0410-8231-
f00ffab90ce4
phk [Tue, 13 Jan 2009 14:18:54 +0000 (14:18 +0000)]
Add testcase for cli:purge
git-svn-id: svn+ssh://projects.linpro.no/svn/varnish/trunk@3511
d4fa192b -c00b-0410-8231-
f00ffab90ce4
phk [Tue, 13 Jan 2009 14:18:08 +0000 (14:18 +0000)]
Add CLI_PURGE definition
git-svn-id: svn+ssh://projects.linpro.no/svn/varnish/trunk@3510
d4fa192b -c00b-0410-8231-
f00ffab90ce4
phk [Tue, 13 Jan 2009 14:05:54 +0000 (14:05 +0000)]
Commit the old urge facilities to the new world order.
git-svn-id: svn+ssh://projects.linpro.no/svn/varnish/trunk@3509
d4fa192b -c00b-0410-8231-
f00ffab90ce4
phk [Tue, 13 Jan 2009 12:30:14 +0000 (12:30 +0000)]
Change the way bans/purges are stored, so that each ban has a list of
conditions to test.
This paves the way for a much more expressive ban/purge syntax where
things like:
purge req.http.host ~ "web1.com" && req.url ~ "\.png"
purge obj.age > 1w && obj.size > 1MB
purge obj.http.set-cookie ~ "USER=838339" && req.url ~ "\.html"
become possible.
Not quite there yet though.
git-svn-id: svn+ssh://projects.linpro.no/svn/varnish/trunk@3508
d4fa192b -c00b-0410-8231-
f00ffab90ce4
phk [Mon, 12 Jan 2009 13:51:33 +0000 (13:51 +0000)]
Ditch HSH_Compare() and just check the digest with memcmp()
git-svn-id: svn+ssh://projects.linpro.no/svn/varnish/trunk@3507
d4fa192b -c00b-0410-8231-
f00ffab90ce4