Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Wrap More in Retry Logic #1544

Closed
nnnvvvcv opened this issue Jul 26, 2023 · 3 comments · Fixed by #1545
Closed

Wrap More in Retry Logic #1544

nnnvvvcv opened this issue Jul 26, 2023 · 3 comments · Fixed by #1545

Comments

@nnnvvvcv
Copy link

nnnvvvcv commented Jul 26, 2023

Azure DevOps Extensions

WIKI Updater

Platform

Azure DevOps Services

Azure DevOps Server (TFS) Version

No response

Extension Version

No response

Describe the bug

We have quite a concurrent pipeline with a single build/test followed by a large set of deployment stages running in parallel. Part of the deployment stages we use the Release Notes Generator task followed by the WikiUpdater task.

Because these deployments are happening in parallel occasionally we hit the scenario where two WikiUpdater tasks are running around the same time on the same wiki repo.

One of the tasks succeeds but the other fails with:

Cloned dev.azure.com/<org>/<project>/_git/release_notes to /home/vsts/work/1/s\repo
Set GIT values in /home/vsts/work/1/s\repo
Pull in case of post clone updates from other users
Working file name is __latest.md
Created the '__latest.md' in '/home/vsts/work/1/s\repo/SIT/SFI' - fixing line-endings
Added SIT/SFI/__latest.md to repo /home/vsts/work/1/s\repo
Committed file "/home/vsts/work/1/s\repo" with message "SFI SIT Release notes from build [60243]" as SHA 81f8e9f
Attempt 1 - Push to dev.azure.com/<org>/<project>/_git/release_notes
Push failed, probably due to target being updated completed, will retry up to 32 times
Pull to get updates from other users
##[error]Error: Need to specify how to reconcile divergent branches.
##[error]Error: Need to specify how to reconcile divergent branches.

Looking at the code - the retry is around only the git push command - but because the remote repo has been updated by a parallel task it is the pull which is failing. I think this could be fixed by using a rebase rather than pull when iterating through the retries.

The line in question is:

Repo Steps

Run tasks in parallel against the same wiki repo

Expected Behavior

All parallel tasks complete (albeit with possibly retries)

Logging Information

Cloned dev.azure.com///_git/release_notes to /home/vsts/work/1/s\repo
Set GIT values in /home/vsts/work/1/s\repo
Pull in case of post clone updates from other users
Working file name is __latest.md
Created the '__latest.md' in '/home/vsts/work/1/s\repo/SIT/SFI' - fixing line-endings
Added SIT/SFI/__latest.md to repo /home/vsts/work/1/s\repo
Committed file "/home/vsts/work/1/s\repo" with message "SFI SIT Release notes from build [60243]" as SHA 81f8e9f
Attempt 1 - Push to dev.azure.com///_git/release_notes
Push failed, probably due to target being updated completed, will retry up to 32 times
Pull to get updates from other users
##[error]Error: Need to specify how to reconcile divergent branches.
##[error]Error: Need to specify how to reconcile divergent branches.

@rfennell
Copy link
Owner

I think the best option is to add a parameter so you can pick a pull or a rebase, leaving pull as the default so it is not a breaking change for other uses.

I will try to get that out this week

@nnnvvvcv
Copy link
Author

Works like a dream. Thanks for the quick turnaround!

@rfennell
Copy link
Owner

Wow, that's great news. I had expected more would be needed. A nice surprise for Monday

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
2 participants