See <http://build.squid-cache.org/job/3.HEAD-amd64-CentOS-5.3/1680/changes>
Changes: [Christos Tsantilas] author: Martin Huter <[email protected]>, Alex Rousskov <[email protected]>, Christos Tsantilas <[email protected]> Bug 2619: Excessive RAM growth due to unlimited adapted body data consumption If the client does not read from the open connection (i.e. the user does not confirm the browsers download-message-box in microsofts IE), squid keeps on reading data from the ICAP server into the store entry, while no more data can be delivered to the client. Thus the store entry in memory is growing and squid may - in worst case - consume memory up to the size of the users download. This patch add API to StoreEntry to call the producer back when released memory/space from the StoreEntry and add code to the ICAP client code to not consume body data comes from the ICAP server when there is not available space in the store entry. [Christos Tsantilas] Fill access log's %error_detail when responding with ERR_SECURE_CONNECT_FAIL. This is a Measurement Factory project ------------------------------------------ [...truncated 7385 lines...] Testing ../../src/HttpHdrScTarget.h ...Ok. Testing ../../src/HttpHeader.h ...Ok. Testing ../../src/HttpHeaderMask.h ...Ok. Testing ../../src/HttpHeaderRange.h ...Ok. Testing ../../src/HttpMsg.h ...Ok. Testing ../../src/HttpParser.h ...Ok. Testing ../../src/HttpReply.h ...Ok. Testing ../../src/HttpRequest.h ...Ok. Testing ../../src/HttpRequestMethod.h ...Ok. Testing ../../src/HttpStatusCode.h ...Ok. Testing ../../src/HttpStatusLine.h ...Ok. Testing ../../src/HttpVersion.h ...Ok. Testing ../../src/ICP.h ...Ok. Testing ../../src/icp_opcode.h ...Ok. Testing ../../src/ipcache.h ...Ok. Testing ../../src/LeakFinder.h ...Ok. Testing ../../src/LoadableModule.h ...Ok. Testing ../../src/LoadableModules.h ...Ok. Testing ../../src/lookup_t.h ...Ok. Testing ../../src/MemBlob.h ...Ok. Testing ../../src/MemBuf.h ...Ok. Testing ../../src/Mem.h ...Ok. Testing ../../src/mem_node.h ...Ok. Testing ../../src/MemObject.h ...Ok. Testing ../../src/MemStore.h ...Ok. Testing ../../src/NullDelayId.h ...Ok. Testing ../../src/Packer.h ...Ok. Testing ../../src/Parsing.h ...Ok. Testing ../../src/pconn.h ...Ok. Testing ../../src/PeerDigest.h ...Ok. Testing ../../src/PeerSelectState.h ...Ok. Testing ../../src/PingData.h ...Ok. Testing ../../src/ProtoPort.h ...Ok. Testing ../../src/protos.h ...Ok. Testing ../../src/RemovalPolicy.h ...Ok. Testing ../../src/Server.h ...Ok. Testing ../../src/snmp_core.h ...Ok. Testing ../../src/squid.h ...Ok. Testing ../../src/SquidMath.h ...Ok. Testing ../../src/SquidString.h ...Ok. Testing ../../src/SquidTime.h ...Ok. Testing ../../src/stmem.h ...Ok. Testing ../../src/StoreClient.h ...Ok. Testing ../../src/StoreEntryStream.h ...Ok. Testing ../../src/StoreFileSystem.h ...Ok. Testing ../../src/Store.h ...Ok. Testing ../../src/StoreHashIndex.h ...Ok. Testing ../../src/StoreIOBuffer.h ...Ok. Testing ../../src/StoreIOState.h ...Ok. Testing ../../src/StoreMeta.h ...Ok. Testing ../../src/StoreMetaMD5.h ...Ok. Testing ../../src/StoreMetaObjSize.h ...Ok. Testing ../../src/StoreMetaSTD.h ...Ok. Testing ../../src/StoreMetaSTDLFS.h ...Ok. Testing ../../src/StoreMetaUnpacker.h ...Ok. Testing ../../src/StoreMetaURL.h ...Ok. Testing ../../src/StoreMetaVary.h ...Ok. Testing ../../src/StoreSearch.h ...Ok. Testing ../../src/StoreStats.h ...Ok. Testing ../../src/StoreSwapLogData.h ...Ok. Testing ../../src/structs.h ...Ok. Testing ../../src/SwapDir.h ...Ok. Testing ../../src/swap_log_op.h ...Ok. Testing ../../src/TimeOrTag.h ...Ok. Testing ../../src/typedefs.h ...Ok. Testing ../../src/URL.h ...Ok. Testing ../../src/URLScheme.h ...Ok. Testing ../../src/wordlist.h ...Ok. Testing ../../src/DiskIO/DiskFile.h ...Ok. Testing ../../src/DiskIO/DiskIOModule.h ...Ok. Testing ../../src/DiskIO/DiskIOStrategy.h ...Ok. Testing ../../src/DiskIO/IORequestor.h ...Ok. Testing ../../src/DiskIO/ReadRequest.h ...Ok. Testing ../../src/DiskIO/WriteRequest.h ...Ok. Testing ../../src/DiskIO/AIO/AIODiskFile.h ...Ok. Testing ../../src/DiskIO/AIO/AIODiskIOModule.h ...Ok. Testing ../../src/DiskIO/AIO/AIODiskIOStrategy.h ...Ok. Testing ../../src/DiskIO/AIO/aio_win32.h ...Ok. Testing ../../src/DiskIO/AIO/async_io.h ...Ok. Testing ../../src/DiskIO/Blocking/BlockingDiskIOModule.h ...Ok. Testing ../../src/DiskIO/Blocking/BlockingFile.h ...Ok. Testing ../../src/DiskIO/Blocking/BlockingIOStrategy.h ...Ok. Testing ../../src/DiskIO/DiskDaemon/diomsg.h ...Ok. Testing ../../src/DiskIO/DiskDaemon/DiskdAction.h ...Ok. Testing ../../src/DiskIO/DiskDaemon/DiskDaemonDiskIOModule.h ...Ok. Testing ../../src/DiskIO/DiskDaemon/DiskdFile.h ...Ok. Testing ../../src/DiskIO/DiskDaemon/DiskdIOStrategy.h ...Ok. Testing ../../src/DiskIO/DiskThreads/DiskThreadsDiskFile.h ...Ok. Testing ../../src/DiskIO/DiskThreads/DiskThreadsDiskIOModule.h ...Ok. Testing ../../src/DiskIO/DiskThreads/DiskThreads.h ...Ok. Testing ../../src/DiskIO/DiskThreads/DiskThreadsIOStrategy.h ...Ok. Testing ../../src/DiskIO/IpcIo/IpcIoDiskIOModule.h ...Ok. Testing ../../src/DiskIO/IpcIo/IpcIoFile.h ...Ok. Testing ../../src/DiskIO/IpcIo/IpcIoIOStrategy.h ...Ok. Testing ../../src/DiskIO/Mmapped/MmappedDiskIOModule.h ...Ok. Testing ../../src/DiskIO/Mmapped/MmappedFile.h ...Ok. Testing ../../src/DiskIO/Mmapped/MmappedIOStrategy.h ...Ok. .. OK (2) PASS: tests/testACLMaxUserIP . OK (1) PASS: tests/testBoilerplate .. OK (2) PASS: tests/testCacheManager . OK (1) PASS: tests/testDiskIO ..Actual Text: Last event to run: last event Operation \tNext Execution \tWeight\tCallback Valid? test event \t0.000 sec\t 0\t N/A test event2 \t0.000 sec\t 0\t N/A .... OK (6) PASS: tests/testEvent ... OK (3) PASS: tests/testEventLoop PASS: tests/test_http_range . OK (1) PASS: tests/testHttpParser . OK (1) PASS: tests/testHttpReply ............. OK (13) PASS: tests/testHttpRequest Not implementedNot implementedNot implementedNot implementedNot implementedNot implementedNot implementedNot implementedNot implementedNot implementedNot implementedNot implementedNot implementedNot implementedNot implementedNot implementedNot implementedNot implementedNot implementedNot implementedNot implementedNot implementedNot implementedNot implementedNot implementedNot implemented........... OK (11) PASS: tests/testStore .... OK (4) PASS: tests/testString stub time| persistent connection module initialized .......... OK (10) PASS: tests/testURL . OK (1) PASS: tests/testConfigParser Not implementedNot implementedNot implementedNot implementedNot implementedNot implementedNot implementedNot implementedNot implementedNot implementedNot implementedNot implementedNot implementedNot implementedNot implementedNot implementedNot implementedNot implementedNot implemented.. OK (2) PASS: tests/testRock Not implementedNot implemented.. OK (2) PASS: tests/testUfs PASS: testHeaders =================== All 17 tests passed =================== make[5]: Leaving directory `<http://build.squid-cache.org/job/3.HEAD-amd64-CentOS-5.3/ws/btlayer-00-default/squid-3.HEAD-BZR/_build/src'> make[4]: Leaving directory `<http://build.squid-cache.org/job/3.HEAD-amd64-CentOS-5.3/ws/btlayer-00-default/squid-3.HEAD-BZR/_build/src'> make[3]: Leaving directory `<http://build.squid-cache.org/job/3.HEAD-amd64-CentOS-5.3/ws/btlayer-00-default/squid-3.HEAD-BZR/_build/src'> make[2]: Leaving directory `<http://build.squid-cache.org/job/3.HEAD-amd64-CentOS-5.3/ws/btlayer-00-default/squid-3.HEAD-BZR/_build/src'> Making check in tools make[2]: Entering directory `<http://build.squid-cache.org/job/3.HEAD-amd64-CentOS-5.3/ws/btlayer-00-default/squid-3.HEAD-BZR/_build/tools'> Making check in purge make[3]: Entering directory `<http://build.squid-cache.org/job/3.HEAD-amd64-CentOS-5.3/ws/btlayer-00-default/squid-3.HEAD-BZR/_build/tools/purge'> make make[4]: Entering directory `<http://build.squid-cache.org/job/3.HEAD-amd64-CentOS-5.3/ws/btlayer-00-default/squid-3.HEAD-BZR/_build/tools/purge'> make[4]: Nothing to be done for `all'. make[4]: Leaving directory `<http://build.squid-cache.org/job/3.HEAD-amd64-CentOS-5.3/ws/btlayer-00-default/squid-3.HEAD-BZR/_build/tools/purge'> make check-TESTS make[4]: Entering directory `<http://build.squid-cache.org/job/3.HEAD-amd64-CentOS-5.3/ws/btlayer-00-default/squid-3.HEAD-BZR/_build/tools/purge'> make[4]: Leaving directory `<http://build.squid-cache.org/job/3.HEAD-amd64-CentOS-5.3/ws/btlayer-00-default/squid-3.HEAD-BZR/_build/tools/purge'> make[3]: Leaving directory `<http://build.squid-cache.org/job/3.HEAD-amd64-CentOS-5.3/ws/btlayer-00-default/squid-3.HEAD-BZR/_build/tools/purge'> make[3]: Entering directory `<http://build.squid-cache.org/job/3.HEAD-amd64-CentOS-5.3/ws/btlayer-00-default/squid-3.HEAD-BZR/_build/tools'> make make[4]: Entering directory `<http://build.squid-cache.org/job/3.HEAD-amd64-CentOS-5.3/ws/btlayer-00-default/squid-3.HEAD-BZR/_build/tools'> Making all in purge make[5]: Entering directory `<http://build.squid-cache.org/job/3.HEAD-amd64-CentOS-5.3/ws/btlayer-00-default/squid-3.HEAD-BZR/_build/tools/purge'> make[5]: Nothing to be done for `all'. make[5]: Leaving directory `<http://build.squid-cache.org/job/3.HEAD-amd64-CentOS-5.3/ws/btlayer-00-default/squid-3.HEAD-BZR/_build/tools/purge'> make[5]: Entering directory `<http://build.squid-cache.org/job/3.HEAD-amd64-CentOS-5.3/ws/btlayer-00-default/squid-3.HEAD-BZR/_build/tools'> make[5]: Nothing to be done for `all-am'. make[5]: Leaving directory `<http://build.squid-cache.org/job/3.HEAD-amd64-CentOS-5.3/ws/btlayer-00-default/squid-3.HEAD-BZR/_build/tools'> make[4]: Leaving directory `<http://build.squid-cache.org/job/3.HEAD-amd64-CentOS-5.3/ws/btlayer-00-default/squid-3.HEAD-BZR/_build/tools'> make check-TESTS make[4]: Entering directory `<http://build.squid-cache.org/job/3.HEAD-amd64-CentOS-5.3/ws/btlayer-00-default/squid-3.HEAD-BZR/_build/tools'> make[4]: Leaving directory `<http://build.squid-cache.org/job/3.HEAD-amd64-CentOS-5.3/ws/btlayer-00-default/squid-3.HEAD-BZR/_build/tools'> make[3]: Leaving directory `<http://build.squid-cache.org/job/3.HEAD-amd64-CentOS-5.3/ws/btlayer-00-default/squid-3.HEAD-BZR/_build/tools'> make[2]: Leaving directory `<http://build.squid-cache.org/job/3.HEAD-amd64-CentOS-5.3/ws/btlayer-00-default/squid-3.HEAD-BZR/_build/tools'> Making check in test-suite make[2]: Entering directory `<http://build.squid-cache.org/job/3.HEAD-amd64-CentOS-5.3/ws/btlayer-00-default/squid-3.HEAD-BZR/_build/test-suite'> make debug MemPoolTest mem_node_test mem_hdr_test refcount splay StackTest syntheticoperators VirtualDeleteOperator make[3]: Entering directory `<http://build.squid-cache.org/job/3.HEAD-amd64-CentOS-5.3/ws/btlayer-00-default/squid-3.HEAD-BZR/_build/test-suite'> depbase=`echo debug.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`; \ if g++ -DHAVE_CONFIG_H -I../.. -I../../include -I../../lib -I../../src -I../include -I../../test-suite -Wall -Wpointer-arith -Wwrite-strings -Wcomments -Werror -pipe -D_REENTRANT -g -O2 -MT debug.o -MD -MP -MF "$depbase.Tpo" -c -o debug.o ../../test-suite/debug.cc; \ then mv -f "$depbase.Tpo" "$depbase.Po"; else rm -f "$depbase.Tpo"; exit 1; fi depbase=`echo test_tools.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`; \ if g++ -DHAVE_CONFIG_H -I../.. -I../../include -I../../lib -I../../src -I../include -I../../test-suite -Wall -Wpointer-arith -Wwrite-strings -Wcomments -Werror -pipe -D_REENTRANT -g -O2 -MT test_tools.o -MD -MP -MF "$depbase.Tpo" -c -o test_tools.o ../../test-suite/test_tools.cc; \ then mv -f "$depbase.Tpo" "$depbase.Po"; else rm -f "$depbase.Tpo"; exit 1; fi depbase=`echo stub_debug.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`; \ if g++ -DHAVE_CONFIG_H -I../.. -I../../include -I../../lib -I../../src -I../include -I../../test-suite -Wall -Wpointer-arith -Wwrite-strings -Wcomments -Werror -pipe -D_REENTRANT -g -O2 -MT stub_debug.o -MD -MP -MF "$depbase.Tpo" -c -o stub_debug.o ../../test-suite/stub_debug.cc; \ then mv -f "$depbase.Tpo" "$depbase.Po"; else rm -f "$depbase.Tpo"; exit 1; fi depbase=`echo MemPoolTest.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`; \ if g++ -DHAVE_CONFIG_H -I../.. -I../../include -I../../lib -I../../src -I../include -I../../test-suite -Wall -Wpointer-arith -Wwrite-strings -Wcomments -Werror -pipe -D_REENTRANT -g -O2 -MT MemPoolTest.o -MD -MP -MF "$depbase.Tpo" -c -o MemPoolTest.o ../../test-suite/MemPoolTest.cc; \ then mv -f "$depbase.Tpo" "$depbase.Po"; else rm -f "$depbase.Tpo"; exit 1; fi depbase=`echo mem_node_test.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`; \ if g++ -DHAVE_CONFIG_H -I../.. -I../../include -I../../lib -I../../src -I../include -I../../test-suite -Wall -Wpointer-arith -Wwrite-strings -Wcomments -Werror -pipe -D_REENTRANT -g -O2 -MT mem_node_test.o -MD -MP -MF "$depbase.Tpo" -c -o mem_node_test.o ../../test-suite/mem_node_test.cc; \ then mv -f "$depbase.Tpo" "$depbase.Po"; else rm -f "$depbase.Tpo"; exit 1; fi depbase=`echo mem_hdr_test.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`; \ if g++ -DHAVE_CONFIG_H -I../.. -I../../include -I../../lib -I../../src -I../include -I../../test-suite -Wall -Wpointer-arith -Wwrite-strings -Wcomments -Werror -pipe -D_REENTRANT -g -O2 -MT mem_hdr_test.o -MD -MP -MF "$depbase.Tpo" -c -o mem_hdr_test.o ../../test-suite/mem_hdr_test.cc; \ then mv -f "$depbase.Tpo" "$depbase.Po"; else rm -f "$depbase.Tpo"; exit 1; fi depbase=`echo refcount.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`; \ if g++ -DHAVE_CONFIG_H -I../.. -I../../include -I../../lib -I../../src -I../include -I../../test-suite -Wall -Wpointer-arith -Wwrite-strings -Wcomments -Werror -pipe -D_REENTRANT -g -O2 -MT refcount.o -MD -MP -MF "$depbase.Tpo" -c -o refcount.o ../../test-suite/refcount.cc; \ then mv -f "$depbase.Tpo" "$depbase.Po"; else rm -f "$depbase.Tpo"; exit 1; fi ../../test-suite/mem_hdr_test.cc: In function ‘void testLowAndHigh()’: ../../test-suite/mem_hdr_test.cc:60: error: call of overloaded ‘StoreIOBuffer(int, int, NULL)’ is ambiguous ../../src/StoreIOBuffer.h:62: note: candidates are: StoreIOBuffer::StoreIOBuffer(MemBuf*, int64_t, size_t) ../../src/StoreIOBuffer.h:48: note: StoreIOBuffer::StoreIOBuffer(size_t, int64_t, char*) make[3]: *** [mem_hdr_test.o] Error 1 make[3]: *** Waiting for unfinished jobs.... make[3]: Leaving directory `<http://build.squid-cache.org/job/3.HEAD-amd64-CentOS-5.3/ws/btlayer-00-default/squid-3.HEAD-BZR/_build/test-suite'> make[2]: *** [check-am] Error 2 make[2]: Leaving directory `<http://build.squid-cache.org/job/3.HEAD-amd64-CentOS-5.3/ws/btlayer-00-default/squid-3.HEAD-BZR/_build/test-suite'> make[1]: *** [check-recursive] Error 1 make[1]: Leaving directory `<http://build.squid-cache.org/job/3.HEAD-amd64-CentOS-5.3/ws/btlayer-00-default/squid-3.HEAD-BZR/_build'> make: *** [distcheck] Error 2 buildtest.sh result is 2 BUILD: .././test-suite/buildtests/layer-00-default.opts configure: BUILD LIBRARIES: configure: BUILD EXTRA LIBRARIES: -lm -lnsl -lresolv -lrt -ldl -ldl configure: BUILD OBJECTS: configure: BUILD EXTRA OBJECTS: configure: BUILD C FLAGS: configure: BUILD EXTRA C FLAGS: -Wall -Wpointer-arith -Wwrite-strings -Wmissing-prototypes -Wmissing-declarations -Wcomments -Werror -pipe -D_REENTRANT configure: BUILD C++ FLAGS: -g -O2 configure: BUILD EXTRA C++ FLAGS: -Wall -Wpointer-arith -Wwrite-strings -Wcomments -Werror -pipe -D_REENTRANT configure: BUILD LIBRARIES: configure: BUILD EXTRA LIBRARIES: -lm -lnsl -lresolv -lrt -ldl -ldl configure: BUILD OBJECTS: configure: BUILD EXTRA OBJECTS: configure: BUILD C FLAGS: configure: BUILD EXTRA C FLAGS: -Wall -Wpointer-arith -Wwrite-strings -Wmissing-prototypes -Wmissing-declarations -Wcomments -Werror -pipe -D_REENTRANT configure: BUILD C++ FLAGS: -g -O2 configure: BUILD EXTRA C++ FLAGS: -Wall -Wpointer-arith -Wwrite-strings -Wcomments -Werror -pipe -D_REENTRANT ../../test-suite/mem_hdr_test.cc:60: error: call of overloaded ‘StoreIOBuffer(int, int, NULL)’ is ambiguous make[3]: *** [mem_hdr_test.o] Error 1 make[2]: *** [check-am] Error 2 make[1]: *** [check-recursive] Error 1 make: *** [distcheck] Error 2 Build FAILED. Build step 'Execute shell' marked build as failure
