]> git.ipfire.org Git - thirdparty/squid.git/commit
Various shared memory-based collapsed forwarding improvements and fixes.
authorAlex Rousskov <rousskov@measurement-factory.com>
Sat, 22 Jun 2013 15:24:34 +0000 (09:24 -0600)
committerAlex Rousskov <rousskov@measurement-factory.com>
Sat, 22 Jun 2013 15:24:34 +0000 (09:24 -0600)
commit4475555f19b4b53536230b757d11ef7252372e29
tree7761fa2328787189cf9c99c6e2d7445539022644
parent920378bac31ba32f5d3c17f4d6d46498c9f2d0a1
Various shared memory-based collapsed forwarding improvements and fixes.

Lock transient entries while in use. Transient entry presence is used
used to detect collapsed entry aborts for not-yet-cached entries.

Store current transient locks and memory cache entry state in MemObject. Why
not in StoreEntry like the disk cache does?  To avoid penalizing those Stores
that keep idle StoreEntries in RAM.

Mark collapsing entries specially (in MemObject) so that we can stop updating
(un-tie) local entries that tried to collapse but did not like the collapsed
hit object that they started to get from another worker. When this happens,
the client side creates a new StoreEntry, but without a flag Store cannot tell
whether that entry needs to be kept in sync with the collapsed writer because
both the old entry and the new one have the same key. We may eventually find
a better way to distinguish the two cases.

Do not require MemObjects to be disassociated from various caches during
shutdown because Squid is currently incapable of maintaining Store::Root()
during shutdown.

Support incremental shared memory caching. Maintain and honor the
ENTRY_FWD_HDR_WAIT flag. Maintain shared memory cache reading/writing states.

Better updates of collapsed entries. Detect aborted entries. Do not release
entries that are not yet cached anywhere at the update time.

Polished entry debugging.

Bug 3480 fix.

Added XXXs to mark new problems and old bugs.
17 files changed:
src/CollapsedForwarding.h
src/MemObject.cc
src/MemObject.h
src/MemStore.cc
src/MemStore.h
src/Store.h
src/SwapDir.h
src/Transients.cc
src/Transients.h
src/fs/rock/RockIoState.cc
src/fs/rock/RockSwapDir.cc
src/fs/rock/RockSwapDir.h
src/store.cc
src/store_client.cc
src/store_dir.cc
src/store_swapout.cc
src/tests/stub_MemObject.cc