Created by Francesco Chemolli and last modified
Get this branch:
bzr branch lp:~squid/squid/storeentry-refactor
Members of squid can upload to this branch. Log in for directions.

Branch merges

Related bugs

Related blueprints

Branch information


Recent revisions

13209. By Francesco Chemolli on 2014-01-04

Added missing includes

13208. By Francesco Chemolli on 2014-01-04

Added missing include

13207. By Francesco Chemolli on 2014-01-04

Split StoreEntry declaration from Store

13206. By Francesco Chemolli on 2014-01-03

BaseMultiQueue is virtual but had no virtual destructor

13205. By Francesco Chemolli on 2014-01-03

Got rid of Store.cci

13204. By Amos Jeffries on 2014-01-02

Fix SBuf::rfind

13203. By Francesco Chemolli on 2014-01-02

Fix SBuf and SBufList unit tests linkage

13202. By Alex Rousskov on 2014-01-02

tests/testSBufList on CentOS needs MemObject::endOffset().

13201. By Alex Rousskov on 2014-01-01

Initial Large Rock and Collapsed Forwarding support.

Large Rock: Support disk (and shared memory) caching of responses exceeding
one db slot (or one shared memory page) in size. A single db slot/page size is
still limited to 32KB (smaller values can be configured for disk caches using
the newly added cache_dir slot-size option). Removal of old rock cache dir
(followed by squid-z) is required -- the on-disk db structure has changed.

Collapsed Forwarding: Optionally merge concurrent cachable requests for the
same URI earlier: After the request headers have been parsed (as before), but
now _before_ the response headers have been received. Merging of requests
received by different SMP workers is supported. Controlled by the new
collapsed_forwarding directive in squid.conf. Disabled by default because all
but one of the merged requests have to be delayed (until the response headers
are received) for the merging to work, which may be worse than forwarding all
concurrent requests immediately. The overall feature idea and request
eligibility conditions are based on Collapsed Forwarding in Squid2.

Summary of other important changes (merged branch log contains the details):

* Tightened StoreEntry locking. Split StoreEntry::lock() into "just lock" and
  "update entry reference time" interfaces, addressing an old XXX. Improved
  entry lock/unlock debugging. Needs more work.

* Adjusted StoreIOState::write() API to allow callers detect write errors.

* Simplified MemObject::write() API to remove an essentially unused callback.

* Mark client streams that sent everything as STREAM_COMPLETE. The old code
  used STREAM_UNPLANNED_COMPLETE if the completed stream was associated with a
  non-persistent connection, which did not make sense to me and, IIRC, led to
  store entry aborts even though the entries were not damaged in any way.

* mem_hdr::hasContigousContentRange() now returns true for empty ranges.

* Support "appending" ReadWriteLock state that can be shared by readers and
  the writer. The writer promises not to update key metadata (except growing
  object size and next pointers) and readers promise to be careful when
  reading growing slices.

* Fixed StoreEntry::mayStartSwapOut() logic to handle terminated swapouts.

* Improved STORE_MEM_CLIENT detection and documented known (and mostly old)
  StoreEntry::storeClientType() problems.

* Removed StoreEntry::hidden_mem_obj hack.

* Polished StoreEntry debugging to report more info, less noise. Use e: prefix.

* Added a script to extract store entry(ies) debugging from cache.log.

13200. By Alex Rousskov on 2014-01-01

Added MemBlob::appended() method. Handy during out-of-band buffer manipulation.

Branch metadata

Branch format:
Branch format 7
Repository format:
Bazaar repository format 2a (needs bzr 1.16 or later)
Stacked on:
This branch contains Public information 
Everyone can see this information.