Suppose I am a full node and a transaction C arrives at me. I didn't find its father, so I put it in the orphan transaction pool. After a while, C's father B arrived at me. But I also didn't find B's father. Assuming these transactions are legitimate, what should I do with the orphan transaction pool in this case? Should I kick C out of the orphan transaction pool since C has father? Or both B and C stay in the orphan transaction pool?
For a transaction to be valid, the UTXOs being spent in its inputs must exist. This is a transitive property. If the parent transaction is an orphan, you cannot be sure that its inputs exist, and therefore transitively, you cannot make any determination about the child.
All transactions that you cannot fully connect to the UTXO set should remain in the orphan pool.