I have a pool selection iRule which is updated quite often. However, I have noticed that changes to the rule is sometimes not taken into effect until a long time after updating it. What could be the reason?
iRules works in a connection based context. So when updating an iRule the new version of the iRule would only be applicable for new connections. If you want to force all clients to use the new iRule you'd have to somehow close their connection. One way to do that is with the tmsh command "delete sys connection".
Just make sure to apply a filter before you run it (use tab for the different options), or you'll kill all connections on the device.