On 01/05/2006 11:27 PM, Graham Leggett wrote:
> Ruediger Pluem wrote:
[..cut..]
> Looking deeper into this, if the above was never true, then the loop
> would spin resulting in 100% processor usage for this process/thread
> while the download was running.
>
> Are you 100% sure this is never called?
Meanwhile I found the reason for this behaviour. We are never doing non
blocking reads:
#0 socket_bucket_read (a=0x8196748, str=0x40ad052c, len=0x40ad0530,
block=APR_BLOCK_READ) at
buckets/apr_buckets_socket.c:22
#1 0x40052463 in apr_brigade_split_line (bbOut=0x819c3a8, bbIn=0x819c288,
block=APR_BLOCK_READ, maxbytes=8192) at
buckets/apr_brigade.c:292
#2 0x080721d7 in ap_core_input_filter (f=0x8194cb0, b=0x819c3a8,
mode=AP_MODE_GETLINE, block=APR_BLOCK_READ, readbytes=0)
at core_filters.c:155
#3 0x0807c119 in ap_get_brigade (next=0x8194cb0, bb=0x819c3a8,
mode=AP_MODE_GETLINE, block=APR_BLOCK_READ,
readbytes=583581946604225836)
at util_filter.c:489
#4 0x404dbb47 in logio_in_filter (f=0x8194c88, bb=0x819c3a8,
mode=AP_MODE_GETLINE, block=APR_BLOCK_READ, readbytes=0)
at mod_logio.c:115
#5 0x0807c119 in ap_get_brigade (next=0x8194c88, bb=0x819c3a8,
mode=AP_MODE_GETLINE, block=APR_BLOCK_READ,
readbytes=583581774805533996)
at util_filter.c:489
#6 0x0807f27c in ap_http_filter (f=0x819c330, b=0x8195058,
mode=AP_MODE_READBYTES, block=APR_NONBLOCK_READ, readbytes=8192)
at http_filters.c:292
#7 0x0807c119 in ap_get_brigade (next=0x819c330, bb=0x8195058,
mode=AP_MODE_READBYTES, block=APR_NONBLOCK_READ,
readbytes=583712238732117292) at util_filter.c:489
#8 0x405bae91 in ap_proxy_http_process_response (p=0x8193f38, r=0x8197f80,
backend=0x818d908, origin=0x8194790,
conf=0x818c9b0,
server_portstr=0x40ad282c "") at mod_proxy_http.c:1463
#9 0x405bb9d2 in proxy_http_handler (r=0x8197f80, worker=0x818b808,
conf=0x818c9b0, url=0x8194780 "/test/long.jsp",
proxyname=0x0,
proxyport=0) at mod_proxy_http.c:1732
#10 0x405a4063 in proxy_run_scheme_handler (r=0x8197f80, worker=0x818b808,
conf=0x818c9b0,
url=0x8199730 "http://127.0.0.1:8080/test/long.jsp", proxyhost=0x0,
proxyport=0) at mod_proxy.c:1941
ap_http_filter changes the mode from APR_NONBLOCK_READ to APR_BLOCK_READ.
So I think we must check if we can adjust ap_http_filter. I guess this is not
an easy task.
Maybe this changes once Brian makes further progress on its async-read branch.
Regards
RĂ¼diger