Skip to content

Disable repositories more often and add property to continue when disabled#36060

Merged
big-guy merged 8 commits into
releasefrom
ljacomet/gradle93/repo-disable-config
Dec 18, 2025
Merged

Disable repositories more often and add property to continue when disabled#36060
big-guy merged 8 commits into
releasefrom
ljacomet/gradle93/repo-disable-config

Conversation

@ljacomet

@ljacomet ljacomet commented Dec 17, 2025

Copy link
Copy Markdown
Member

This builds on top of 36059

It is a draft because there is still some work that needs to be done in disabling repos more aggressively.

Repositories are now also disabled if the max retry is reached for transient connection errors. This improves build reproducibility.
A new property can be configured per repository to indicate if a disabled repository should still allow resolution to continue.

@ljacomet ljacomet requested a review from big-guy December 17, 2025 09:41
@ljacomet ljacomet self-assigned this Dec 17, 2025
@ljacomet ljacomet added the in:dependency-remoting interaction with dependency repositories, mostly networked, S3 repositories label Dec 17, 2025
@ljacomet ljacomet marked this pull request as ready for review December 17, 2025 20:42
@ljacomet ljacomet requested a review from a team as a code owner December 17, 2025 20:42
@ljacomet

This comment has been minimized.

@bot-gradle

This comment has been minimized.

@bot-gradle

This comment has been minimized.

@ljacomet ljacomet force-pushed the ljacomet/gradle93/repo-disable-config branch from 7828618 to 8eb7122 Compare December 18, 2025 08:43
@ljacomet

This comment has been minimized.

@bot-gradle

This comment has been minimized.

@bot-gradle

This comment has been minimized.

@ljacomet ljacomet changed the title Configure behavior of repositories when disabled Disable repositories more often and add property to continue when disabled Dec 18, 2025
Also adjust test to clarify when Gradle disables and when it does not.
This is used to indicate that the build should not fail if the
repository cannot handle dependency resolution requests.
@ljacomet ljacomet force-pushed the ljacomet/gradle93/repo-disable-config branch from 8eb7122 to 7bf8a13 Compare December 18, 2025 17:08
@ljacomet ljacomet requested a review from a team as a code owner December 18, 2025 17:08
@ljacomet ljacomet force-pushed the ljacomet/gradle93/repo-disable-config branch from 7bf8a13 to eec58bf Compare December 18, 2025 18:13
@ljacomet ljacomet requested a review from big-guy December 18, 2025 18:13
@ljacomet ljacomet force-pushed the ljacomet/gradle93/repo-disable-config branch from eec58bf to b59fc00 Compare December 18, 2025 18:14
@ljacomet ljacomet added this to the 9.3.0 RC2 milestone Dec 18, 2025
local = new ErrorHandlingModuleComponentRepositoryAccess(delegate.getLocalAccess(), getId(), RepositoryDisabler.NoOpDisabler.INSTANCE, getName());
remote = new ErrorHandlingModuleComponentRepositoryAccess(delegate.getRemoteAccess(), getId(), remoteRepositoryDisabler, getName());
this.remoteRepositoryDisabler = remoteRepositoryDisabler;
local = new ErrorHandlingModuleComponentRepositoryAccess(delegate.getLocalAccess(), getId(), RepositoryDisabler.NoOpDisabler.INSTANCE, getName(), false);

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Does it make sense to say that the local part never continues (false) or that it always continues (true) or should it match the remote part? I'm not entirely sure myself since the local side can never be disabled.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think leaving it as false is good for now. But the whole error handling thing should be redefined for the local part. While there are common IOException, most of the logic makes little sense for local. And with proper handling, we might be able to do better errors. But let's do that in a different PR.

Comment thread platforms/documentation/docs/src/docs/release/notes.md Outdated

@lkasso lkasso left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Approved once @big-guy's changes are introduced.

Comment thread platforms/documentation/docs/src/docs/release/notes.md Outdated
ljacomet and others added 4 commits December 18, 2025 21:26
This improves reproducibility of builds by making sure Gradle does not
check the next repository in the list when the current one fails to
answer.
Includes release notes entry
…pository

DefaultUrlArtifactRepository is really about holding information about the URL
and not a repository itself.
@ljacomet ljacomet force-pushed the ljacomet/gradle93/repo-disable-config branch from b59fc00 to 9bcf1f4 Compare December 18, 2025 20:39
@ljacomet

Copy link
Copy Markdown
Member Author

@bot-gradle test RfR

@bot-gradle

This comment has been minimized.


@Override
public boolean isRepositoryDisabled() {
return remoteRepositoryDisabler.isDisabled(getId()) || delegate.isRepositoryDisabled();

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If I'm following this correctly, delegate.isRepositoryDisabled is always false. The only way for it to not be false is if remoteRepositoryDisabler.isDisabled is true.

It looks like ExternalResourceResolver is the only real implementation. Could it get a RepositoryDisabler and have it check isDisabled in isRepositoryDisabled?

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I didn't test this at all: 01c9ac9

@big-guy

big-guy commented Dec 18, 2025

Copy link
Copy Markdown
Member

@bot-gradle test RfR

@bot-gradle

This comment has been minimized.

@bot-gradle

Copy link
Copy Markdown
Collaborator

The following builds have been cancelled:

@big-guy big-guy enabled auto-merge December 18, 2025 22:17
@big-guy big-guy added this pull request to the merge queue Dec 18, 2025
@bot-gradle

Copy link
Copy Markdown
Collaborator

The following builds have passed:

Merged via the queue into release with commit f3567e9 Dec 18, 2025
28 checks passed
@big-guy big-guy deleted the ljacomet/gradle93/repo-disable-config branch December 18, 2025 23:08
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

in:dependency-remoting interaction with dependency repositories, mostly networked, S3 repositories

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants