What strategies do you use for error handling, data validation, and pipeline recovery when an ETL job fails mid-process?