While loading test data, I found that when I tried adding members to more than one section in a single thread, changes would only show up for one section. For example, if I tried adding 70 students to "Disc 1" and 70 students to "Disc 2", at the end of the run, "Disc 1" would have 70 members but "Disc 2" would have 0 (or vice versa). Tomcat logs, the Sakai events table, and DB queries while the thread was paused all seemed to indicate that the updates were actually progressing, but then were somehow rolled back.
I've tracked the problem down to two ThreadLocal caches used by:
Details in comments.