END_RESPONSE message is not sent when the request duration exceeds the write-timeout on ajp-listener with CPING/CPONG enabled

Solution In Progress - Updated -

Issue

If the request duration exceeds write-timeout in ajp-listener with ping enabled in ProxyPass directive on httpd-side, we can see the following error in Apache's error_log.

ProxyPass "/app/" "ajp://127.0.0.1:8009/app/" ping=10 ttl=55 timeout=120

HTTPD_HOME/logs/error_log

[Thu Dec 05 17:31:33.334793 2024] [proxy_ajp:error] [pid 60300:tid 60320] (70014)End of file found: AH01030: ajp_ilink_receive() can't receive header
[Thu Dec 05 17:31:33.334836 2024] [proxy_ajp:error] [pid 60300:tid 60320] [client 127.0.0.1:45284] AH00992: ajp_read_header: ajp_ilink_receive failed
[Thu Dec 05 17:31:33.334845 2024] [proxy_ajp:error] [pid 60300:tid 60320] (120006)APR does not understand this error code: [client 127.0.0.1:45284] AH00893: dialog to 127.0.0.1:8009 (127.0.0.1:8009) failed

If we check the packet capture, we can confirm that the END_RESPONSE message was not sent.

1    2024-12-05 17:29:53.081136    127.0.0.1    127.0.0.1    TCP    74    42054 → 8009 [SYN] Seq=0 Win=65495 Len=0 MSS=65495 SACK_PERM TSval=3760530610 TSecr=0 WS=128
2    2024-12-05 17:29:53.081140    127.0.0.1    127.0.0.1    TCP    74    8009 → 42054 [SYN, ACK] Seq=0 Ack=1 Win=65483 Len=0 MSS=65495 SACK_PERM TSval=3760530610 TSecr=3760530610 WS=128
3    2024-12-05 17:29:53.081144    127.0.0.1    127.0.0.1    TCP    66    42054 → 8009 [ACK] Seq=1 Ack=1 Win=65536 Len=0 TSval=3760530610 TSecr=3760530610
4    2024-12-05 17:29:53.081188    127.0.0.1    127.0.0.1    AJP13    71    2:REQ:CPING
5    2024-12-05 17:29:53.081189    127.0.0.1    127.0.0.1    TCP    66    8009 → 42054 [ACK] Seq=1 Ack=6 Win=65536 Len=0 TSval=3760530610 TSecr=3760530610
6    2024-12-05 17:29:53.090263    127.0.0.1    127.0.0.1    AJP13    71    2:RSP:CPONG
7    2024-12-05 17:29:53.090271    127.0.0.1    127.0.0.1    TCP    66    42054 → 8009 [ACK] Seq=6 Ack=6 Win=65536 Len=0 TSval=3760530619 TSecr=3760530619
8    2024-12-05 17:29:53.090330    127.0.0.1    127.0.0.1    AJP13    243    2:REQ:GET /app/slow.jsp HTTP/1.1
9    2024-12-05 17:29:53.132099    127.0.0.1    127.0.0.1    TCP    66    8009 → 42054 [ACK] Seq=6 Ack=183 Win=65536 Len=0 TSval=3760530661 TSecr=3760530619
10   2024-12-05 17:31:33.333474    127.0.0.1    127.0.0.1    AJP13    350    2:RSP:SEND BODY CHUNK
11   2024-12-05 17:31:33.334781    127.0.0.1    127.0.0.1    TCP    66    8009 → 42054 [FIN, ACK] Seq=290 Ack=183 Win=65536 Len=0 TSval=3760630863 TSecr=3760530619   <<<=== FIN from server-side without END RESPONSE message
12   2024-12-05 17:31:33.334861    127.0.0.1    127.0.0.1    TCP    66    42054 → 8009 [FIN, ACK] Seq=183 Ack=291 Win=65536 Len=0 TSval=3760630863 TSecr=3760630862
13   2024-12-05 17:31:33.334875    127.0.0.1    127.0.0.1    TCP    66    8009 → 42054 [ACK] Seq=291 Ack=184 Win=65536 Len=0 TSval=3760630863 TSecr=3760630863

Environment

  • Red Hat JBoss Enterprise Application Platform (EAP)
    • 7.4
    • 8.0

Subscriber exclusive content

A Red Hat subscription provides unlimited access to our knowledgebase, tools, and much more.

Current Customers and Partners

Log in for full access

Log In

New to Red Hat?

Learn more about Red Hat subscriptions

Using a Red Hat product through a public cloud?

How to access this content