mod_jk worker recovery state does not properly persist with the state repeating ERR and ERR/REC periodically

Solution Verified - Updated -

Issue

  • Using mod_jk for load balancing, we have issues with worker error states persisting long past when the JBoss worker is indeed available again. Checking the mod_jk logging, we can see that the worker actually flips back and forth between error and recovery state:

    [debug] recover_workers::jk_lb_worker.c (551): worker node1 is marked for recovery
    [debug] recover_workers::jk_lb_worker.c (564): worker node1 escalating local error to global error
    [debug] recover_workers::jk_lb_worker.c (551): worker node1 is marked for recovery
    [debug] recover_workers::jk_lb_worker.c (564): worker node1 escalating local error to global error
    

    This allows error states to persist if we're unlucky as traffic may only reach the worker when it has flipped back to an error state. This issue can become exacerbated in situations without session replication/failover and low traffic in a multiple httpd server load balancing configuration.

  • mod_jk worker recovery state does not properly persist. When a new request reaches during recovery state (ERR/REC) after back-end comes back, mod_jk correctly recover. However, when no request reaches after back-end comes back, the state repeats flipping back and forth between error (ERR) and recovery (ERR/REC) periodically.

Environment

  • JBoss Enterprise Application Platform (EAP)
  • JBoss Enterprise Web Server (EWS) 1.0.x
  • Apache httpd
    • mod_jk 1.2.32 and earlier

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