Nice!

I believe at some point in the past we made a pass to try to convert our
stuff to this model. I wonder if we can prevent it proactively somehow,
like disabling the legacy way of creating tasks or something.

Kenn

On Mon, Dec 5, 2022 at 6:25 AM Kerry Donny-Clark via dev <
dev@beam.apache.org> wrote:

> Thanks Damon! I really appreciate how clear your emails are here. Instead
> of my usual feeling of "I don't quite understand, and don't have time to
> get context" I can read all the context in the mail.
> This error message had confused me, so I really appreciate the cleanup and
> explanation.
>
> On Fri, Dec 2, 2022, 7:28 PM Damon Douglas via dev <dev@beam.apache.org>
> wrote:
>
>> Hello Everyone,
>>
>> *If you are new to Beam and coming from non-Java language conventions, it
>> is likely you are new to gradle.  At the end of this email is a list of
>> definitions and references to help understand this email.*
>>
>> *Short Version (For those who know gradle)*:
>> A pull request [1] may fix the continual error message "Error: Backend
>> initialization required, please run "terraform init"".  The PR applies Task
>> Configuration Avoidance [2] by applying changes to a few tasks from
>> tasks(String) to tasks.register(String).
>>
>> *Long Version (For those who are not as familiar with gradle)*:
>>
>> I write this not as an expert but as someone still learning.  Gradle [3]
>> is the software we use in the Beam repository to automate many needed tasks
>> associated with building and testing code.  It is typically used in Java
>> projects but can be extended for other purposes.  We store code related to
>> our Beam Playground [4] that also uses gradle though it is not mainly a
>> Java project.  The unit of work for Gradle is what is called a task.  To
>> run a task you open a terminal and type "./gradlew nameOfMyTask".  There
>> are two main ways to create a custom task in our build.gradle files.  One
>> is writing task("doSomething") and the other is
>> tasks.register("doSomethingElse").  According to [2], the recommendation is
>> to use the tasks.register("doSomething").  This avoids executing other work
>> (configuration but don't worry about it for now) until one runs the
>> doSomething task or another task we are running depends on it.
>>
>> So why were we seeing this "Error: Backend initialization required"
>> message all the time?  The reason is that tasks were configured as
>> task("doSomething").  All I had to do was change this to
>> tasks.register("doSomething") and it removed the message.
>>
>> *Definitions/References*
>>
>> 1. https://github.com/apache/beam/pull/24509
>> 2.
>> https://docs.gradle.org/current/userguide/task_configuration_avoidance.html
>> 3. https://docs.gradle.org/current/userguide/what_is_gradle.html
>> 4. https://play.beam.apache.org/
>>
>> *Suggested Learning Path To Understand This Email*
>> 1.
>> https://docs.gradle.org/current/samples/sample_building_java_libraries.html
>> 2. https://docs.gradle.org/current/userguide/build_lifecycle.html
>> 3. https://docs.gradle.org/current/userguide/tutorial_using_tasks.html
>> 4.
>> https://docs.gradle.org/current/userguide/task_configuration_avoidance.html
>>
>> Best,
>>
>> Damon
>>
>>

Reply via email to