This repository has been archived by the owner on May 23, 2023. It is now read-only.
Enable multi_ack
and multi_ack_detailed
capabilities
#4
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Enabling
multi_ack
andmulti_ack_detailed
allows the use ofgo-git
against Azure DevOps.Those capabilities are not fully implemented, however they have no impact for "fresh new fetches", which are the primary use case for Flux.
fetch
/pull
operations against Azure DevOps will result in:This change was tested against a range of Git Service Providers to ensure no regression was being introduced.
Note that the tests were completed on the scope of Source and Image Automation Controllers, which only use a subset of the Git features implemented by
go-git
.The blue line in the graph below represents
rate(go_memstats_alloc_bytes_total{app="source-controller"}[$__rate_interval])
and shows a stable memory profile throughout the 6h. The same has been observed since the beginning of the tests (+19h).For the purposes of the tests, all the repositories had their
spec.gitImplementation
set togo-git
, the controller has its libgit2 managed transport disabled andOptimizedGitClones=false
. The controller was set to have 40 workers to quickly iterate through the 35 GitRepository objects. Most target sources have at least one large file (~100mb). The reconciliation intervals are set to30s
, forcing the reconciliations to be overlapping every so often.Additional memory and GC related settings:
For completeness, an additional graph without
go_memstats_alloc_bytes_total
so it is easier to track GC duration and goroutine numbers: