Forum Discussion

matt_k_58868's avatar
matt_k_58868
Icon for Nimbostratus rankNimbostratus
Apr 24, 2017

irule TCL error - no such pool

I have an apology irule attached to my global HTTPS virtual server that is having issues. I opened case and after troubleshooting an issue where Safari browsers wouldn't load a site, the tech was finally able to see an error that occurs only when using the Safari browser: TCL error: /Common/apology_irule - no such pool: (line 6) invoked from within "active_members [LB::server pool]"

"Possible reason why it seems to fail is that on the initial incoming HTTP_REQUEST event, there has been no LB decision process made yet, hence the pool has not been determined yet."

When I removed this irule from the VS, the issues with Safari cleared up.

The full irule is below, but the tech zero'd in on the following.

Looking at shortened version of the apology_irule:

ltm rule /Common/apology_irule {
  when LB_FAILED {
    HTTP::respond 200 content {
      <<< some HTML content >>>
    }
    log local2. "Apology rule triggered for [IP::client_addr] 
X-Forwarded-For: [HTTP::header
values
 X-Forwarded-For]"
   }

   when HTTP_REQUEST {
     if {[active_members [LB::server pool]] < 1 } {   <------- error on the log is coming from this line.
       HTTP::respond 200 content {
         <<< some HTML content >>>
       }
       log local2. "Apology rule triggered for [IP::client_addr] 
 X-Forwarded-For: [HTTP::header values X-Forwarded-For]"
     }
   }
 }

Possible reason why it seems to fail is that on the initial incoming HTTP_REQUEST event, there has been no LB decision process made yet, hence the pool has not been determined yet.

I'm new to F5 and have no irule experience so I'm looking for assitance on how to fix this apology irule so it won't cause issues and I can put it back in to service an apology page if the VS is down.

                                                                                                                                                                            This iRule will present an apology page instead of a connection reset when a pool goes down

when LB_FAILED {
    HTTP::respond 200 content { 

    
       Resource temporarily unavailable
    
    
    
        
        
        
        
            apology, blah, blah 
    

    }

   log local2. "Apology rule triggered for [IP::client_addr] X-Forwarded-For: [HTTP::header values X-Forwarded-For]"
}
when HTTP_REQUEST {
   if {[active_members [LB::server pool]] < 1 } {
      HTTP::respond 200 content {

    
       Resource temporarily unavailable
    
    
    
        
        
        
        
            apology, blah, blah 
    

       }
       log local2. "Apology rule triggered for [IP::client_addr] X-Forwarded-For: [HTTP::header values X-Forwarded-For]"
   }
}
  • Try moving that to HTTP_REQUEST_SEND or HTTP_REQUEST_RELEASE, those events are serverside and should have a pool member assigned

     

  • Hi. Thank you for the suggestion. When I change HTTP_REQUEST to HTTP_REQUEST_SEND or HTTP_REQUEST_RELEASE the entire site breaks for all browsers and all versions.

     

  • Hello Matt,

     

    On the VS where you applied this irule do you have a pool on the ressources page for the "Default Pool" option ?

     

    If not, how do you select the pool, in another irule ?

     

    Thanks