@Ankush O Wathodkar I mentioned in earlier comments, implementing pipeline logic to re-try the copy activity. Below is an example, including picture.
In this example, we have 4 activities. One represents whatever activities lead up to the copy you want to retry. Two are copy activities, one for the first try, the other for the second 're-try'. The last represents whatever activities happen after the copy.
Leading into the first copy from the "Whatever comes before" is a success dependency.
From the "First attempt" copy activity to the "Second attempt" copy activity is an on-failure dependancy.
The "Second attempt" copy activity is connected to the "Do whatever comes after" activity by both a skipped and success dependency. The skipped dependency handles the case when the "first attempt" succeeds, and the "second attempt" does not get run. The success dependency handles when the "first attempt" fails and the "second attempt" succeeds. Should the "second attempt" fail, the pipeline will halt.
From the "first attempt" copy activity to the "Do whatever comes after activity" is on on completion dependency. On completion dependency includes both the success and failure of the "first attempt". I use on completion instead of both success and failure dependencies for two reasons:
- it is easier to read
- on-completion does not cause the pipeline to return failurs status. Connecting by both success and failure would cause the pipeline to report failure status even if everything other than "first attempt" ran successfully.
The way "Do whatever comes after" reads the dependency logic is this:
Run "Do whatever comes after" if, and only if The "first attempt" completed AND ( The "second attempt" was successful OR the "second attempt" was skipped")
Please let me know if this helps.