OK, this tells me what I need to know. The problem is that the cache is not assuming that you will dump more than 250K or so into a buffer before you call into the cache. The cache can handle long documents, but it assumes that you will hand them over piecemeal in smaller chunks.
I am going to create a bug and see if I can get you a real patch. john On 8/11/2010 11:09 AM, Patrick McManus wrote: > On Wed, 2010-08-11 at 13:53 -0400, Patrick McManus wrote: >> John, thanks for the idea. > > Some more information > > * The test in question reduces the document from 281KB to 259KB - the > headers are not altered. > > * The test just runs curl serially fetching the same URL (with the same > transform) 750 times.. the assert() will fail in the first few dozen > iterations. > > * I can now see a repeatable timeline: > > + transaction N goes through INK_EVENT_VCONN_WRITE_COMPLETE (having > sent all its transformed data to the user agent) > + transaction N+1 is started for the same URL as N > + transaction N receives INK_EVENT_HTTP_TXN_CLOSE > + assert() fails > > It appears from the logs that if N and N+1 do not overlap there is no > assert failure. >