[ https://issues.apache.org/jira/browse/SOLR-16641?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17682589#comment-17682589 ]
Dawid Weiss commented on SOLR-16641: ------------------------------------ Thanks for figuring it out. Moving this to gradlew is entirely up to you guys. I'd avoid spinning subprocesses from there (especially heavyweights like gradlew...) as it affects everything else... but it can actually be beneficial in simplifying gradle code and running with local settings even on the first gradlew invocation. Up to you, really. > Circular task dependency in gradle > ---------------------------------- > > Key: SOLR-16641 > URL: https://issues.apache.org/jira/browse/SOLR-16641 > Project: Solr > Issue Type: Bug > Security Level: Public(Default Security Level. Issues are Public) > Components: Gradle > Reporter: Colvin Cowie > Priority: Trivial > Time Spent: 0.5h > Remaining Estimate: 0h > > I sent this to the dev mailing list a few days ago and didn't get a response, > so I'm opening this issue and will create a PR for it. > > I just cloned main from > [https://github.com/apache/solr/commit/1135fdfd7c49ff7ef23513ab01b4ee36ffc14f8f] > and to test that everything was working, before I start making changes, I > ran _gradlew tidy updateLicenses check -x test_ just to see that everything > would pass > [https://github.com/apache/solr/blob/main/dev-docs/how-to-contribute.adoc#making-a-new-contribution]. > > Gradle complains that there's a circular task dependency: > > {quote}solr>gradlew tidy updateLicenses check -x test > Downloading gradle-wrapper.jar from > [https://raw.githubusercontent.com/gradle/gradle/v7.6.0/gradle/wrapper/gradle-wrapper.jar] > To honour the JVM settings for this build a single-use Daemon process will be > forked. See > [https://docs.gradle.org/7.6/userguide/gradle_daemon.html#sec:disabling_the_daemon]. > Daemon will be stopped at the end of the build > FAILURE: Build failed with an exception. > * What went wrong: > Circular dependency between the following tasks: > :errorProneSkipped > \--- :localSettings > \--- :solr:updateLicenses > +--- :localSettings (*) > +--- :solr:benchmark:collectJarInfos > | +--- :localSettings (*) > | +--- :solr:core:jar > | | +--- :gitStatus > | | | \--- :localSettings (*) > | | +--- :localSettings (*) > | | +--- :solr:core:classes > | | | +--- :localSettings (*) > | | | +--- :solr:core:compileJava > | | | | +--- :errorProneSkipped (*) > | | | | +--- :localSettings (*) > | | | | +--- :solr:core:validateSourcePatterns > | | | | | \--- :localSettings (*) > | | | | +--- :solr:solrj:compileJava > | | | | | +--- :errorProneSkipped (*) > | | | | | +--- :localSettings (*) > | | | | | \--- :solr:solrj:validateSourcePatterns > | | | | | \--- :localSettings (*) > | | | | +--- :solr:solrj-streaming:compileJava > | | | | | +--- :errorProneSkipped (*) > | | | | | +--- :localSettings (*) > | | | | | +--- :solr:solrj:compileJava (*) > | | | | | \--- > :solr:solrj-streaming:validateSourcePatterns > | | | | | \--- :localSettings (*) > | | | | \--- :solr:solrj-zookeeper:compileJava > | | | | +--- :errorProneSkipped (*) > | | | | +--- :localSettings (*) > | | | | +--- :solr:solrj:compileJava (*) > | | | | \--- > :solr:solrj-zookeeper:validateSourcePatterns > | | | | \--- :localSettings (*) > | | | \--- :solr:core:processResources > | | | \--- :localSettings (*) > | | \--- :solr:core:compileJava (*) > | +--- :solr:solrj:jar > | | +--- :gitStatus (*) > | | +--- :localSettings (*) > | | +--- :solr:solrj:classes > | | | +--- :localSettings (*) > | | | +--- :solr:solrj:compileJava (*) > | | | \--- :solr:solrj:processResources > | | | \--- :localSettings (*) > | | \--- :solr:solrj:compileJava (*) > | +--- :solr:solrj-streaming:jar > | | +--- :gitStatus (*) > | | +--- :localSettings (*) > | | +--- :solr:solrj-streaming:classes > | | | +--- :localSettings (*) > | | | +--- :solr:solrj-streaming:compileJava (*) > | | | \--- :solr:solrj-streaming:processResources > | | | \--- :localSettings (*) > | | \--- :solr:solrj-streaming:compileJava (*) > | +--- :solr:solrj-zookeeper:jar > | | +--- :gitStatus (*) > | | +--- :localSettings (*) > | | +--- :solr:solrj-zookeeper:classes > | | | +--- :localSettings (*) > | | | +--- :solr:solrj-zookeeper:compileJava (*) > | | | \--- :solr:solrj-zookeeper:processResources > | | | \--- :localSettings (*) > | | \--- :solr:solrj-zookeeper:compileJava (*) > | \--- :solr:test-framework:jar > | +--- :gitStatus (*) > | +--- :localSettings (*) > | +--- :solr:test-framework:classes > | | +--- :localSettings (*) > | | +--- :solr:test-framework:compileJava > | | | +--- :errorProneSkipped (*) > | | | +--- :localSettings (*) > | | | +--- :solr:core:compileJava (*) > | | | +--- :solr:solrj:compileJava (*) > | | | +--- :solr:solrj-streaming:compileJava (*) > | | | +--- :solr:solrj-zookeeper:compileJava (*) > | | | \--- :solr:test-framework:validateSourcePatterns > | | | \--- :localSettings (*) > | | \--- :solr:test-framework:processResources > | | \--- :localSettings (*) > | \--- :solr:test-framework:compileJava (*) > +--- :solr:core:collectJarInfos > | +--- :localSettings (*) > | +--- :solr:core:jar (*) > | +--- :solr:solrj:jar (*) > | +--- :solr:solrj-streaming:jar (*) > | +--- :solr:solrj-zookeeper:jar (*) > | +--- :solr:test-framework:jar (*) > | \--- :solr:modules:analysis-extras:jar > | +--- :gitStatus (*) > | +--- :localSettings (*) > | +--- :solr:modules:analysis-extras:classes > | | +--- :localSettings (*) > | | +--- :solr:modules:analysis-extras:compileJava > | | | +--- :errorProneSkipped (*) > | | | +--- :localSettings (*) > | | | +--- :solr:core:compileJava (*) > | | | +--- :solr:solrj:compileJava (*) > | | | +--- :solr:solrj-streaming:compileJava (*) > | | | +--- :solr:solrj-zookeeper:compileJava (*) > | | | \--- > :solr:modules:analysis-extras:validateSourcePatterns > | | | \--- :localSettings (*) > | | \--- :solr:modules:analysis-extras:processResources > | | \--- :localSettings (*) > | \--- :solr:modules:analysis-extras:compileJava (*) > +--- :solr:distribution:collectJarInfos > | \--- :localSettings (*) > +--- :solr:docker:collectJarInfos > | \--- :localSettings (*) > +--- :solr:documentation:collectJarInfos > | \--- :localSettings (*) > +--- :solr:example:collectJarInfos > | \--- :localSettings (*) > +--- :solr:modules:collectJarInfos > | \--- :localSettings (*) > +--- :solr:packaging:collectJarInfos > | \--- :localSettings (*) > +--- :solr:prometheus-exporter:collectJarInfos > | +--- :localSettings (*) > | +--- :solr:core:jar (*) > | +--- :solr:solrj:jar (*) > | +--- :solr:solrj-streaming:jar (*) > | +--- :solr:solrj-zookeeper:jar (*) > | \--- :solr:test-framework:jar (*) > +--- :solr:server:collectJarInfos > | +--- :localSettings (*) > | +--- :solr:core:jar (*) > | +--- :solr:solrj:jar (*) > | +--- :solr:solrj-streaming:jar (*) > | \--- :solr:solrj-zookeeper:jar (*) > +--- :solr:solr-ref-guide:collectJarInfos > | \--- :localSettings (*) > +--- :solr:solrj:collectJarInfos > | +--- :localSettings (*) > | +--- :solr:core:jar (*) > | +--- :solr:solrj:jar (*) > | +--- :solr:solrj-streaming:jar (*) > | +--- :solr:solrj-zookeeper:jar (*) > | \--- :solr:test-framework:jar (*) > +--- :solr:solrj-streaming:collectJarInfos > | +--- :localSettings (*) > | +--- :solr:core:jar (*) > | +--- :solr:solrj:jar (*) > | +--- :solr:solrj-streaming:jar (*) > | +--- :solr:solrj-zookeeper:jar (*) > | +--- :solr:test-framework:jar (*) > | \--- :solr:modules:sql:jar > | +--- :gitStatus (*) > | +--- :localSettings (*) > | +--- :solr:modules:sql:classes > | | +--- :localSettings (*) > | | +--- :solr:modules:sql:compileJava > | | | +--- :errorProneSkipped (*) > | | | +--- :localSettings (*) > | | | +--- :solr:core:compileJava (*) > | | | +--- :solr:solrj:compileJava (*) > | | | +--- :solr:solrj-streaming:compileJava (*) > | | | +--- :solr:solrj-zookeeper:compileJava (*) > | | | \--- :solr:modules:sql:validateSourcePatterns > | | | \--- :localSettings (*) > | | \--- :solr:modules:sql:processResources > | | \--- :localSettings (*) > | \--- :solr:modules:sql:compileJava (*) > +--- :solr:solrj-zookeeper:collectJarInfos > | +--- :localSettings (*) > | +--- :solr:core:jar (*) > | +--- :solr:solrj:jar (*) > | +--- :solr:solrj-streaming:jar (*) > | +--- :solr:solrj-zookeeper:jar (*) > | \--- :solr:test-framework:jar (*) > +--- :solr:test-framework:collectJarInfos > | +--- :localSettings (*) > | +--- :solr:core:jar (*) > | +--- :solr:solrj:jar (*) > | +--- :solr:solrj-streaming:jar (*) > | \--- :solr:solrj-zookeeper:jar (*) > +--- :solr:webapp:collectJarInfos > | +--- :localSettings (*) > | +--- :solr:core:jar (*) > | +--- :solr:solrj:jar (*) > | +--- :solr:solrj-streaming:jar (*) > | \--- :solr:solrj-zookeeper:jar (*) > +--- :solr:modules:analysis-extras:collectJarInfos > | +--- :localSettings (*) > | +--- :solr:core:jar (*) > | +--- :solr:solrj:jar (*) > | +--- :solr:solrj-streaming:jar (*) > | +--- :solr:solrj-zookeeper:jar (*) > | \--- :solr:test-framework:jar (*) > +--- :solr:modules:analytics:collectJarInfos > | +--- :localSettings (*) > | +--- :solr:core:jar (*) > | +--- :solr:solrj:jar (*) > | +--- :solr:solrj-streaming:jar (*) > | +--- :solr:solrj-zookeeper:jar (*) > | \--- :solr:test-framework:jar (*) > +--- :solr:modules:clustering:collectJarInfos > | +--- :localSettings (*) > | +--- :solr:core:jar (*) > | +--- :solr:solrj:jar (*) > | +--- :solr:solrj-streaming:jar (*) > | +--- :solr:solrj-zookeeper:jar (*) > | \--- :solr:test-framework:jar (*) > +--- :solr:modules:extraction:collectJarInfos > | +--- :localSettings (*) > | +--- :solr:core:jar (*) > | +--- :solr:solrj:jar (*) > | +--- :solr:solrj-streaming:jar (*) > | +--- :solr:solrj-zookeeper:jar (*) > | \--- :solr:test-framework:jar (*) > +--- :solr:modules:gcs-repository:collectJarInfos > | +--- :localSettings (*) > | +--- :solr:core:jar (*) > | +--- :solr:solrj:jar (*) > | +--- :solr:solrj-streaming:jar (*) > | +--- :solr:solrj-zookeeper:jar (*) > | \--- :solr:test-framework:jar (*) > +--- :solr:modules:hadoop-auth:collectJarInfos > | +--- :localSettings (*) > | +--- :solr:core:jar (*) > | +--- :solr:solrj:jar (*) > | +--- :solr:solrj-streaming:jar (*) > | +--- :solr:solrj-zookeeper:jar (*) > | +--- :solr:test-framework:jar (*) > | \--- :solr:modules:analysis-extras:jar (*) > +--- :solr:modules:hdfs:collectJarInfos > | +--- :localSettings (*) > | +--- :solr:core:jar (*) > | +--- :solr:solrj:jar (*) > | +--- :solr:solrj-streaming:jar (*) > | +--- :solr:solrj-zookeeper:jar (*) > | +--- :solr:test-framework:jar (*) > | \--- :solr:modules:analysis-extras:jar (*) > +--- :solr:modules:jwt-auth:collectJarInfos > | +--- :localSettings (*) > | +--- :solr:core:jar (*) > | +--- :solr:solrj:jar (*) > | +--- :solr:solrj-streaming:jar (*) > | +--- :solr:solrj-zookeeper:jar (*) > | \--- :solr:test-framework:jar (*) > +--- :solr:modules:langid:collectJarInfos > | +--- :localSettings (*) > | +--- :solr:core:jar (*) > | +--- :solr:solrj:jar (*) > | +--- :solr:solrj-streaming:jar (*) > | +--- :solr:solrj-zookeeper:jar (*) > | \--- :solr:test-framework:jar (*) > +--- :solr:modules:ltr:collectJarInfos > | +--- :localSettings (*) > | +--- :solr:core:jar (*) > | +--- :solr:solrj:jar (*) > | +--- :solr:solrj-streaming:jar (*) > | +--- :solr:solrj-zookeeper:jar (*) > | \--- :solr:test-framework:jar (*) > +--- :solr:modules:opentelemetry:collectJarInfos > | +--- :localSettings (*) > | +--- :solr:core:jar (*) > | +--- :solr:solrj:jar (*) > | +--- :solr:solrj-streaming:jar (*) > | +--- :solr:solrj-zookeeper:jar (*) > | \--- :solr:test-framework:jar (*) > +--- :solr:modules:s3-repository:collectJarInfos > | +--- :localSettings (*) > | +--- :solr:core:jar (*) > | +--- :solr:solrj:jar (*) > | +--- :solr:solrj-streaming:jar (*) > | +--- :solr:solrj-zookeeper:jar (*) > | \--- :solr:test-framework:jar (*) > +--- :solr:modules:scripting:collectJarInfos > | +--- :localSettings (*) > | +--- :solr:core:jar (*) > | +--- :solr:solrj:jar (*) > | +--- :solr:solrj-streaming:jar (*) > | +--- :solr:solrj-zookeeper:jar (*) > | \--- :solr:test-framework:jar (*) > \--- :solr:modules:sql:collectJarInfos > +--- :localSettings (*) > +--- :solr:core:jar (*) > +--- :solr:solrj:jar (*) > +--- :solr:solrj-streaming:jar (*) > +--- :solr:solrj-zookeeper:jar (*) > +--- :solr:test-framework:jar (*) > \--- :solr:modules:analysis-extras:jar (*) > (*) - details omitted (listed previously) > * Try: > > Run with --stacktrace option to get the stack trace. > > Run with --info or --debug option to get more log output. > > Run with --scan to get full insights. > * Get more help at [https://help.gradle.org|https://help.gradle.org/] > Deprecated Gradle features were used in this build, making it incompatible > with Gradle 8.0. > You can use '--warning-mode all' to show the individual deprecation warnings > and determine if they come from your own scripts or plugins. > See > [https://docs.gradle.org/7.6/userguide/command_line_interface.html#sec:command_line_warnings] > BUILD FAILED in 1m 28s > 2 actionable tasks: 2 executed > Error: Something went wrong. Make sure you're using Java 11 - 19.{quote} > > > After running gradlew on its own I've realised that it's because if the > gradle.properties file doesn't exist, the _localSettings_ task gets added as > a dependency of all other tasks: > [https://github.com/apache/solr/blob/f25d77a45c53db09742cb0f9599ee7c9774b87ab/gradle/generation/local-settings.gradle#L123] > and, I assume, other tasks are indirectly being added as a dependency of > localSettings. > > > Rather than trying to unpick the task dependencies, it seems like the easiest > fix to this is to not have localSettings as a task, and just execute the > generation of the gradle.properties inline in the script when they're absent. > (Unless there was a specific reason for it needing to be a task?). That > removes the circular task dependency. -- This message was sent by Atlassian Jira (v8.20.10#820010) --------------------------------------------------------------------- To unsubscribe, e-mail: issues-unsubscr...@solr.apache.org For additional commands, e-mail: issues-h...@solr.apache.org