added test for child creation (which doesn't use the advisory lock), and moved class-level find_or_create_by_path into a transaction boundary INSIDE the advisory lock (which makes sense after looking at the SQL logs)