See <http://build.squid-cache.org/job/3.HEAD-amd64-ubuntu-precise/450/changes>
Changes: [Alex Rousskov] Close idle client connections associated with closed idle pinned connections. Squid was not monitoring idle persistent connections pinned to servers. Squid would discover that the pinned server connection is closed only after receiving a new request on the idle client connection and trying to write that request to the server. In such cases, Squid propagates the pinned connection closure to the client (as it should). Chrome and, to a lesser extent, Firefox handle such races by opening a new connection and resending the failed [idempotent] request transparently to the user. However, IE usually displays an error page to the user. While some pconn races cannot be avoided, without monitoring idle pconns, Squid virtually guaranteed such a race in environments where origin server idle connection timeout is smaller than client/Squid timeouts and users are revisiting pages in the window between those two timeouts. Squid now monitors idle pinned connections similar to idle connections in the pconn pool and closes the corresponding idle client connection to keep the two sides in sync (to the extent possible). It is theoretically possible that this change will break servers that send whitespace on an idle persistent connection or perhaps send some SSL keepalive traffic. No such cases are known to exist though. ------------------------------------------ [...truncated 7207 lines...] Testing ../../src/neighbors.h ...Ok. Testing ../../src/NeighborTypeDomainList.h ...Ok. Testing ../../src/Notes.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/peer_proxy_negotiate_auth.h ...Ok. Testing ../../src/PeerSelectState.h ...Ok. Testing ../../src/peer_sourcehash.h ...Ok. Testing ../../src/peer_userhash.h ...Ok. Testing ../../src/PingData.h ...Ok. Testing ../../src/protos.h ...Ok. Testing ../../src/redirect.h ...Ok. Testing ../../src/refresh.h ...Ok. Testing ../../src/RefreshPattern.h ...Ok. Testing ../../src/RegexList.h ...Ok. Testing ../../src/RemovalPolicy.h ...Ok. Testing ../../src/repl_modules.h ...Ok. Testing ../../src/RequestFlags.h ...Ok. Testing ../../src/send-announce.h ...Ok. Testing ../../src/Server.h ...Ok. Testing ../../src/snmp_agent.h ...Ok. Testing ../../src/snmp_core.h ...Ok. Testing ../../src/SnmpRequest.h ...Ok. Testing ../../src/SquidConfig.h ...Ok. Testing ../../src/SquidDns.h ...Ok. Testing ../../src/SquidIpc.h ...Ok. Testing ../../src/SquidList.h ...Ok. Testing ../../src/SquidMath.h ...Ok. Testing ../../src/SquidString.h ...Ok. Testing ../../src/SquidTime.h ...Ok. Testing ../../src/StatCounters.h ...Ok. Testing ../../src/stat.h ...Ok. Testing ../../src/StatHist.h ...Ok. Testing ../../src/stmem.h ...Ok. Testing ../../src/StoreClient.h ...Ok. Testing ../../src/store_digest.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/store_key_md5.h ...Ok. Testing ../../src/store_log.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/store_rebuild.h ...Ok. Testing ../../src/StoreSearch.h ...Ok. Testing ../../src/StoreStats.h ...Ok. Testing ../../src/store_swapin.h ...Ok. Testing ../../src/StoreSwapLogData.h ...Ok. Testing ../../src/StrList.h ...Ok. Testing ../../src/SwapDir.h ...Ok. Testing ../../src/swap_log_op.h ...Ok. Testing ../../src/TimeOrTag.h ...Ok. Testing ../../src/tools.h ...Ok. Testing ../../src/typedefs.h ...Ok. Testing ../../src/unlinkd.h ...Ok. Testing ../../src/URL.h ...Ok. Testing ../../src/URLScheme.h ...Ok. Testing ../../src/urn.h ...Ok. Testing ../../src/wccp2.h ...Ok. Testing ../../src/wccp.h ...Ok. Testing ../../src/whois.h ...Ok. Testing ../../src/win32.h ...Ok. Testing ../../src/WinSvc.h ...Ok. Testing ../../src/wordlist.h ...Ok. Testing ../../src/YesNoNone.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/CommIO.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 /bin/bash: line 5: 31205 Illegal instruction (core dumped) ${dir}$tst FAIL: tests/testCacheManager . OK (1) PASS: tests/testDiskIO /bin/bash: line 5: 31214 Illegal instruction (core dumped) ${dir}$tst FAIL: tests/testEvent /bin/bash: line 5: 31220 Illegal instruction (core dumped) ${dir}$tst FAIL: tests/testEventLoop /bin/bash: line 5: 31226 Illegal instruction (core dumped) ${dir}$tst FAIL: tests/test_http_range ..... OK (5) PASS: tests/testHttpParser .SKIP: StatHist.cc enumInit (not implemented). SKIP: StatHist.cc enumInit (not implemented). SKIP: StatHist.cc enumInit (not implemented). SKIP: StatHist.cc enumInit (not implemented). SKIP: StatHist.cc enumInit (not implemented). SKIP: StatHist.cc enumInit (not implemented). SKIP: StatHist.cc enumInit (not implemented). SKIP: StatHist.cc enumInit (not implemented). SKIP: StatHist.cc enumInit (not implemented). SKIP: StatHist.cc enumInit (not implemented). SKIP: StatHist.cc enumInit (not implemented). SKIP: StatHist.cc enumInit (not implemented). SKIP: StatHist.cc enumInit (not implemented). SKIP: StatHist.cc enumInit (not implemented). SKIP: StatHist.cc enumInit (not implemented). SKIP: StatHist.cc enumInit (not implemented). OK (1) PASS: tests/testHttpReply /bin/bash: line 5: 31238 Illegal instruction (core dumped) ${dir}$tst FAIL: tests/testHttpRequest ...../bin/bash: line 5: 31244 Illegal instruction (core dumped) ${dir}$tst FAIL: tests/testStore .... OK (4) PASS: tests/testString stub time| persistent connection module initialized .......... OK (10) PASS: tests/testURL . OK (1) PASS: tests/testConfigParser ./bin/bash: line 5: 31259 Illegal instruction (core dumped) ${dir}$tst FAIL: tests/testStatHist . OK (1) PASS: tests/testVector .SKIP: StatHist.cc enumInit (not implemented). SKIP: StatHist.cc enumInit (not implemented). SKIP: StatHist.cc enumInit (not implemented). SKIP: StatHist.cc enumInit (not implemented). SKIP: StatHist.cc enumInit (not implemented). SKIP: StatHist.cc enumInit (not implemented). SKIP: StatHist.cc enumInit (not implemented). SKIP: StatHist.cc enumInit (not implemented). SKIP: StatHist.cc enumInit (not implemented). SKIP: StatHist.cc enumInit (not implemented). SKIP: StatHist.cc enumInit (not implemented). SKIP: StatHist.cc enumInit (not implemented). SKIP: StatHist.cc enumInit (not implemented). SKIP: StatHist.cc enumInit (not implemented). SKIP: StatHist.cc enumInit (not implemented). SKIP: StatHist.cc enumInit (not implemented). SKIP: tools.cc UsingSmp (not implemented). SKIP: tools.cc InDaemonMode (not implemented). .SKIP: tools.cc UsingSmp (not implemented). SKIP: tools.cc InDaemonMode (not implemented). SKIP: cache_cf.cc operator void* (not implemented). SKIP: tools.cc UsingSmp (not implemented). SKIP: tools.cc InDaemonMode (not implemented). SKIP: tools.cc UsingSmp (not implemented). /bin/bash: line 5: 31268 Illegal instruction (core dumped) ${dir}$tst FAIL: tests/testRock ./bin/bash: line 5: 31280 Illegal instruction (core dumped) ${dir}$tst FAIL: tests/testUfs PASS: testRefCount PASS: testHeaders ============================================= 9 of 20 tests failed Please report to http://bugs.squid-cache.org/ ============================================= make[5]: *** [check-TESTS] Error 1 make[5]: Leaving directory `<http://build.squid-cache.org/job/3.HEAD-amd64-ubuntu-precise/ws/btlayer-00-default/squid-3.HEAD-BZR/_build/src'> make[4]: *** [check-am] Error 2 make[4]: Leaving directory `<http://build.squid-cache.org/job/3.HEAD-amd64-ubuntu-precise/ws/btlayer-00-default/squid-3.HEAD-BZR/_build/src'> make[3]: *** [check-recursive] Error 1 make[3]: Leaving directory `<http://build.squid-cache.org/job/3.HEAD-amd64-ubuntu-precise/ws/btlayer-00-default/squid-3.HEAD-BZR/_build/src'> make[2]: *** [check] Error 2 make[2]: Leaving directory `<http://build.squid-cache.org/job/3.HEAD-amd64-ubuntu-precise/ws/btlayer-00-default/squid-3.HEAD-BZR/_build/src'> make[1]: *** [check-recursive] Error 1 make[1]: Leaving directory `<http://build.squid-cache.org/job/3.HEAD-amd64-ubuntu-precise/ws/btlayer-00-default/squid-3.HEAD-BZR/_build'> make: *** [distcheck] Error 1 buildtest.sh result is 2 BUILD: .././test-suite/buildtests/layer-00-default.opts configure: BUILD LIBRARIES: configure: BUILD EXTRA LIBRARIES: -lm -lnsl -lresolv -lcap -lrt -ldl -ldl configure: BUILD OBJECTS: configure: BUILD EXTRA OBJECTS: configure: BUILD C FLAGS: -Wall configure: BUILD EXTRA C FLAGS: -Wall -Wpointer-arith -Wwrite-strings -Wmissing-prototypes -Wmissing-declarations -Wcomments -Wshadow -Werror -pipe -D_REENTRANT configure: BUILD C++ FLAGS: -g -O2 -march=native -std=c++0x configure: BUILD EXTRA C++ FLAGS: -Wall -Wpointer-arith -Wwrite-strings -Wcomments -Wshadow -Werror -pipe -D_REENTRANT configure: BUILD LIBRARIES: configure: BUILD EXTRA LIBRARIES: -lm -lnsl -lresolv -lcap -lrt -ldl -ldl configure: BUILD OBJECTS: configure: BUILD EXTRA OBJECTS: configure: BUILD C FLAGS: -Wall configure: BUILD EXTRA C FLAGS: -Wall -Wpointer-arith -Wwrite-strings -Wmissing-prototypes -Wmissing-declarations -Wcomments -Wshadow -Werror -pipe -D_REENTRANT configure: BUILD C++ FLAGS: -g -O2 -march=native -std=c++0x configure: BUILD EXTRA C++ FLAGS: -Wall -Wpointer-arith -Wwrite-strings -Wcomments -Wshadow -Werror -pipe -D_REENTRANT checking for egrep... .././test-suite/../configure: line 6952: echo: write error: Broken pipe checking for fgrep... .././test-suite/../configure: line 7862: echo: write error: Broken pipe checking for egrep... ../configure: line 6952: echo: write error: Broken pipe checking for fgrep... ../configure: line 7862: echo: write error: Broken pipe FAIL: tests/testCacheManager FAIL: tests/testEvent FAIL: tests/testEventLoop FAIL: tests/test_http_range FAIL: tests/testHttpRequest FAIL: tests/testStore FAIL: tests/testStatHist FAIL: tests/testRock FAIL: tests/testUfs make[5]: *** [check-TESTS] Error 1 make[4]: *** [check-am] Error 2 make[3]: *** [check-recursive] Error 1 make[2]: *** [check] Error 2 make[1]: *** [check-recursive] Error 1 make: *** [distcheck] Error 1 Build FAILED. Build step 'Execute shell' marked build as failure