Remove sync-over-async pattern from GitHub Actions integration
Nobody has claimed this yet.
- Dominant language
- C#
- Stars
- 5
- Forks
- 3
- Avg merge
- 1d 22h
- Merged PRs (30d)
- 14
Description
Background
PR #584 introduced GitHub Actions support. Several code paths use .GetAwaiter().GetResult() to block on async HTTP calls, risking thread-pool starvation and deadlocks.
Affected Code
GitHubActionsBuildServerClient.GetBuildDefinitions()— blocks onHttpClient.GetAsync()in a foreach loopGitHubDeployableBuild.IsValid()— blocks onValidateBuildAsync()RequestsManager.RequestDetail()— blocks onBuildServerDetailAsync()
Why Deferred
Same pattern exists in pre-existing Azure DevOps code paths. Fixing requires making IBuildServerClient.GetBuildDefinitions, IDeployableBuild.IsValid, and RequestsManager.RequestDetail fully async, plus updating all callers.
Recommended Approach
IBuildServerClient.GetBuildDefinitions→GetBuildDefinitionsAsyncreturningTask<>IDeployableBuild.IsValid→IsValidAsyncreturningTask<bool>RequestsManager.RequestDetail→RequestDetailAsync- Update all controller/service callers to await
Identified in multi-model review of PR #584 (Finding #7)
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by tracing the implementations and callers of IBuildServerClient.GetBuildDefinitions, IDeployableBuild.IsValid, and RequestsManager.RequestDetail, including the GitHub Actions and pre-existing Azure DevOps paths. The work is done when these interfaces and their callers are fully async, return the specified Task-based results, and no longer block on the listed async operations.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- csharp, github-actions
- Domain
- backend, devops
- Issue type
- Refactor
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Clearly specified
- Newbie friendliness
- 48/100