Oh, yep. That is a bug. Using direct pool member selection doesn't cause a persistence record to be created (or a persist cookie to be inserted). You can add the persist record in an LB_SELECTED event like so (I've also made a few other optimizations):
when HTTP_REQUEST {
switch -glob [URI::decode [string tolower [HTTP::uri]]] {
*gb=1* {
pool webpool member 1.1.1.1 80
set need_add_persist 1
}
*gb=2* {
pool webpool member 2.2.2.2 80
set need_add_persist 1
}
*gb=3* {
pool webpool member 3.3.3.3 80
set need_add_persist 1
}
*gb=4* {
pool webpool member 4.4.4.4 80
set need_add_persist 1
}
*gb=* {
persist none
log "Persist Turn Off"
}
}
}
when LB_SELECTED {
if {[info exists need_add_persist]} {
persist add source_addr [IP::client_addr] 1800
unset need_add_persist
}
}