Forum Discussion

Eric_Waite_1046's avatar
Eric_Waite_1046
Icon for Nimbostratus rankNimbostratus
Jan 11, 2007

iRule help

I am having the same problem with persistence on the following iRules.... I am currently using the first of the two.

The application I am working on is an applet program. The applet sessions on the server timeout in 60 minutes. For some reason, sometimes one of my reqests does not stick, and it is persisted to the wrong server. This causes my applet application to Have a SessionExpired exception.

I am working with f5 customer support and they have not come up with anything in the TCPdumps yet.

Is the following the correct way to set to > 60 minutes for the entry to stay in the persistence table ...?

Does anyone have any thoughts or suggestions, I am really stuck.

Thanks in advance...

- Eric

when HTTP_RESPONSE {
   log ""
   log ""
   log "RESPONSE"
   if { [HTTP::cookie exists "JID"] } {
     set resPers [HTTP::cookie "JID"]
     log "lookup for $resPers in table = >[persist lookup uie $resPers]<"
     if { [persist lookup uie $resPers] equals "" } {
     persist add uie $resPers 3700
    log "added response entry *$resPers* for server [LB::server addr]"
     } else {
         log "continued sessionId *$resPers* for server [LB::server addr]"
     }
   }
}
when HTTP_REQUEST {
      log "1 REQUEST: [HTTP::uri]"
      set jsess [findstr [HTTP::uri] "jsessionid" 11 "?"]
      log "2 $jsess"
      if { $jsess != "" } {
        persist uie $jsess 3700
        log "used URI value is *$jsess*, FOUND->[persist lookup uie $jsess]" 
      }
}

2 Replies

  • I've had similar problem regarding redirecting the traffic based on URI and we've observed, that sometimes there is problem with set command, which does not fill the variable...

    I would suggest to try to relace the

         if { [persist lookup uie $resPers] equals "" } {

    with

         if { [persist lookup uie [HTTP::cookie "JID"]] equals "" } {

    and see if the problem persists. At my own scenario, set failed to fill the variable with [LB::status] at HTTP_REQUEST event and later condition failed as the variable was empty. This could be the same as if the $resPers is empty, You are adding new persistency record.

  • It could also be your TCP idle timeout (set in the TCP profile that's applied to the virtual server). The default on that is 300 seconds, so ensure that you have lengthened that as well.

     

     

    Denny