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

Reply via email to