Use the descendents_tracker gem

The gem handles threading and some other edge cases. It's a small gem so
it makes sense to use it rather than reimplement.