Forum Discussion

hoolio's avatar
hoolio
Icon for Cirrostratus rankCirrostratus
Jun 28, 2010

Datagroup access during a datagroup update

Hi,

We're testing updates to a relatively large datagroup while accessing the datagroup from an iRule. With an internal datagroup on 10.2.0 containing ~5000 entries, we run apachebench against the VS and log a debug line if the number of class entries changes:


when HTTP_REQUEST {
   if {[class size my_class]] != 5000}{
     log local0. "size: [class size my_class]"
   }
}

When clicking update on the GUI's datagroup page for this test class, we see ~3000 instances of varying counts in the course of sending 100 concurrent requests for a total of 100,000. It looks like the class length count starts to drop and then increments back up to the correct total. The reason we tried testing this count was we were seeing class lookups fail for entries which should have existed in the class.

I thought a datagroup update was an atomic operation where the class would continue to exist in it's past configuration state for an existing TCP connection and wouldn't be updated until a new TCP connection was established after the datagroup update was complete.

Can anyone clarify whether this variation in class entries is expected behavior? If so, has F5 done any performance testing that would give a rough idea of when you might start to see a service affecting issue while updating a datagroup on the various platforms? As it is, it's looking like we'd need to suggest to customers that they only update datagroups during low traffic periods or maintenance windows.

Also, would it have less impact on live traffic to do a diff between the old/new class contents and then use 'b class CLASS_NAME add|delete' to modify the datagroup?

Thanks, Aaron