geode-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Kirk Lund <kl...@apache.org>
Subject Re: Weird intermittent build error caused by spotlessJava
Date Tue, 26 Mar 2019 22:30:06 GMT
Are you sure it's not necessary to do a clean build when switching between
different branches? Especially branches that are far enough apart in
revisions that their gradle build files are different? Sometimes two
branches, such as for two different releases, are significantly different
in the gradle files.

On Tue, Mar 26, 2019 at 2:49 PM Patrick Rhomberg <prhomberg@pivotal.io>
wrote:

> As Dan mentioned, the few times I've seen this has been a result of running
> clean in the same build set as spotless.  While that "shouldn't" be an
> issue, it seems to be the underlying cause.
>
> I encourage you to not clean every time you build.  We've done a lot of
> work lately to improve the correctness of our build, so incrementalization
> and task caching should (no scare quotes this time) be the go-to, rather
> than always cleaning before you build.  If you have a specific reason you
> think you need to clean before building, that's something we should fix.
> As the common developer use-case, we have ./gradlew dev to do both compile
> / assembly and spotlessApply.
>
> As a side note, both of your configurations could also be achieved via
> command-line arguments --no-daemon and --no-parallel respectively, if you
> don't want that behavior to be the default as specified in your local
> ~/.gradle/gradle.properties.
>
> On Tue, Mar 26, 2019 at 11:46 AM Kirk Lund <klund@apache.org> wrote:
>
> > I actually have two lines in my gradle.properties. The combo seems to
> make
> > spotless behave when it gets into the broken state I mentioned before:
> >
> > org.gradle.daemon=false
> > org.gradle.parallel=false
> >
> > This does make it slower but slower is better than broken.
> >
> > On Tue, Mar 26, 2019 at 11:38 AM Kirk Lund <klund@apache.org> wrote:
> >
> > > I just had this occur again. And I found another solution, albeit not a
> > > great one, but if you disable org.gradle.daemon that also clears up
> this
> > > problem. You can add this to ~/.gradle/gradle.properties:
> > >
> > > org.gradle.daemon=false
> > >
> > > Just to clarify, I'm on a Mac using gradlew in geode (I don't have my
> own
> > > version of gradle installed) and oracle jdk1.8.0_202.
> > >
> > > On Tue, Mar 26, 2019 at 10:48 AM Kirk Lund <klund@apache.org> wrote:
> > >
> > >> Few more details that might help others...
> > >>
> > >> Each Geode module fails in the same way but obviously on a different
> > >> .java file, and I have not altered these .java files -- they do not
> > appear
> > >> to have any format issues involving imports.
> > >>
> > >> Once gradle is in this state, switching branches from a feature branch
> > to
> > >> develop (which has no local changes) does not clear it up either.
> > >>
> > >> > Task :geode-junit:spotlessJava FAILED
> > >> Step 'removeUnusedImports' found problem in
> > >>
> >
> 'geode-junit/src/main/java/org/apache/geode/test/junit/rules/gfsh/DebuggableCommand.java':
> > >> null
> > >> java.lang.reflect.InvocationTargetException
> > >>
> > >> On Tue, Mar 26, 2019 at 10:43 AM Kirk Lund <klund@apache.org> wrote:
> > >>
> > >>> Intermittent build error caused by spotlessJava. My checkout of Geode
> > >>> intermittently gets into a state that then fails to build. I've been
> > seeing
> > >>> this come and go for the last month or two. I'm not sure what puts
it
> > into
> > >>> this state but executing:
> > >>>
> > >>> $ ./gradlew clean build -x test
> > >>>
> > >>> ...will repeatedly fail in junit:spotlessJava with a
> > >>> java.lang.reflect.InvocationTargetException and a root cause of
> > >>> ava.lang.NoClassDefFoundError:
> > >>> org/openjdk/tools/javac/comp/InferenceContext.
> > >>>
> > >>> Stopping the gradle daemon(s) does not clear the problem up. Cleaning
> > >>> does not clear it up. Changing JDK version does not clear it up. But
> I
> > just
> > >>> discovered this morning that if I attempt to execute spotless
> directly
> > that
> > >>> finally clears it up:
> > >>>
> > >>> $ ./gradlew spotlessApply
> > >>> or
> > >>> $ ./gradlew spotlessCheck
> > >>>
> > >>> After either spotlessApply or spotlessCheck, the build will stop
> > failing
> > >>> when I execute:
> > >>>
> > >>> $ ./gradlew clean build -x test
> > >>>
> > >>> The stack thrown by spotlessJava and printed by gradle when it's
> stuck
> > >>> in this state is below...
> > >>>
> > >>> > Task :geode-junit:spotlessJava FAILED
> > >>> Step 'removeUnusedImports' found problem in
> > >>>
> >
> 'geode-junit/src/main/java/org/apache/geode/test/junit/rules/gfsh/DebuggableCommand.java':
> > >>> null
> > >>> java.lang.reflect.InvocationTargetException
> > >>>         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native
> Method)
> > >>>         at
> > >>>
> >
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
> > >>>         at
> > >>>
> >
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> > >>>         at java.lang.reflect.Method.invoke(Method.java:498)
> > >>>         at
> > >>>
> >
> com.diffplug.spotless.java.GoogleJavaFormatStep$State.lambda$createRemoveUnusedImportsOnly$1(GoogleJavaFormatStep.java:153)
> > >>>         at
> > >>>
> >
> com.diffplug.spotless.FormatterStepImpl$Standard.format(FormatterStepImpl.java:78)
> > >>>         at
> > >>>
> > com.diffplug.spotless.FormatterStep$Strict.format(FormatterStep.java:76)
> > >>>         at
> com.diffplug.spotless.Formatter.compute(Formatter.java:230)
> > >>>         at
> com.diffplug.spotless.Formatter.isClean(Formatter.java:167)
> > >>>         at
> > >>>
> com.diffplug.gradle.spotless.SpotlessTask.check(SpotlessTask.java:263)
> > >>>         at
> > >>>
> >
> com.diffplug.gradle.spotless.SpotlessTask.performAction(SpotlessTask.java:205)
> > >>>         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native
> Method)
> > >>>         at
> > >>>
> >
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
> > >>>         at
> > >>>
> >
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> > >>>         at java.lang.reflect.Method.invoke(Method.java:498)
> > >>>         at
> > >>> org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:103)
> > >>>         at
> > >>>
> >
> org.gradle.api.internal.project.taskfactory.IncrementalTaskAction.doExecute(IncrementalTaskAction.java:73)
> > >>>         at
> > >>>
> >
> org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:41)
> > >>>         at
> > >>>
> >
> org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:28)
> > >>>         at
> > >>>
> >
> org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$4.run(ExecuteActionsTaskExecuter.java:338)
> > >>>         at
> > >>>
> >
> org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:402)
> > >>>         at
> > >>>
> >
> org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:394)
> > >>>         at
> > >>>
> >
> org.gradle.internal.operations.DefaultBuildOperationExecutor$1.execute(DefaultBuildOperationExecutor.java:165)
> > >>>         at
> > >>>
> >
> org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:250)
> > >>>         at
> > >>>
> >
> org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:158)
> > >>>         at
> > >>>
> >
> org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:92)
> > >>>         at
> > >>>
> >
> org.gradle.internal.operations.DelegatingBuildOperationExecutor.run(DelegatingBuildOperationExecutor.java:31)
> > >>>         at
> > >>>
> >
> org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:327)
> > >>>         at
> > >>>
> >
> org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:312)
> > >>>         at
> > >>>
> >
> org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.access$200(ExecuteActionsTaskExecuter.java:75)
> > >>>         at
> > >>>
> >
> org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$TaskExecution.execute(ExecuteActionsTaskExecuter.java:158)
> > >>>         at
> > >>>
> >
> org.gradle.internal.execution.impl.steps.ExecuteStep.execute(ExecuteStep.java:46)
> > >>>         at
> > >>>
> >
> org.gradle.internal.execution.impl.steps.CancelExecutionStep.execute(CancelExecutionStep.java:34)
> > >>>         at
> > >>>
> >
> org.gradle.internal.execution.impl.steps.TimeoutStep.executeWithoutTimeout(TimeoutStep.java:69)
> > >>>         at
> > >>>
> >
> org.gradle.internal.execution.impl.steps.TimeoutStep.execute(TimeoutStep.java:49)
> > >>>         at
> > >>>
> >
> org.gradle.internal.execution.impl.steps.CatchExceptionStep.execute(CatchExceptionStep.java:34)
> > >>>         at
> > >>>
> >
> org.gradle.internal.execution.impl.steps.CreateOutputsStep.execute(CreateOutputsStep.java:49)
> > >>>         at
> > >>>
> >
> org.gradle.internal.execution.impl.steps.SnapshotOutputStep.execute(SnapshotOutputStep.java:42)
> > >>>         at
> > >>>
> >
> org.gradle.internal.execution.impl.steps.SnapshotOutputStep.execute(SnapshotOutputStep.java:28)
> > >>>         at
> > >>>
> >
> org.gradle.internal.execution.impl.steps.CacheStep.executeWithoutCache(CacheStep.java:133)
> > >>>         at
> > >>>
> >
> org.gradle.internal.execution.impl.steps.CacheStep.lambda$execute$5(CacheStep.java:83)
> > >>>         at java.util.Optional.orElseGet(Optional.java:267)
> > >>>         at
> > >>>
> >
> org.gradle.internal.execution.impl.steps.CacheStep.execute(CacheStep.java:82)
> > >>>         at
> > >>>
> >
> org.gradle.internal.execution.impl.steps.CacheStep.execute(CacheStep.java:37)
> > >>>         at
> > >>>
> >
> org.gradle.internal.execution.impl.steps.PrepareCachingStep.execute(PrepareCachingStep.java:33)
> > >>>         at
> > >>>
> >
> org.gradle.internal.execution.impl.steps.StoreSnapshotsStep.execute(StoreSnapshotsStep.java:38)
> > >>>         at
> > >>>
> >
> org.gradle.internal.execution.impl.steps.StoreSnapshotsStep.execute(StoreSnapshotsStep.java:23)
> > >>>         at
> > >>>
> >
> org.gradle.internal.execution.impl.steps.SkipUpToDateStep.executeBecause(SkipUpToDateStep.java:95)
> > >>>         at
> > >>>
> >
> org.gradle.internal.execution.impl.steps.SkipUpToDateStep.lambda$execute$0(SkipUpToDateStep.java:88)
> > >>>         at java.util.Optional.map(Optional.java:215)
> > >>>         at
> > >>>
> >
> org.gradle.internal.execution.impl.steps.SkipUpToDateStep.execute(SkipUpToDateStep.java:52)
> > >>>         at
> > >>>
> >
> org.gradle.internal.execution.impl.steps.SkipUpToDateStep.execute(SkipUpToDateStep.java:36)
> > >>>         at
> > >>>
> >
> org.gradle.internal.execution.impl.DefaultWorkExecutor.execute(DefaultWorkExecutor.java:34)
> > >>>         at
> > >>>
> >
> org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:109)
> > >>>         at
> > >>>
> >
> org.gradle.api.internal.tasks.execution.ResolveIncrementalChangesTaskExecuter.execute(ResolveIncrementalChangesTaskExecuter.java:84)
> > >>>         at
> > >>>
> >
> org.gradle.api.internal.tasks.execution.ResolveTaskOutputCachingStateExecuter.execute(ResolveTaskOutputCachingStateExecuter.java:91)
> > >>>         at
> > >>>
> >
> org.gradle.api.internal.tasks.execution.FinishSnapshotTaskInputsBuildOperationTaskExecuter.execute(FinishSnapshotTaskInputsBuildOperationTaskExecuter.java:51)
> > >>>         at
> > >>>
> >
> org.gradle.api.internal.tasks.execution.ResolveBuildCacheKeyExecuter.execute(ResolveBuildCacheKeyExecuter.java:102)
> > >>>         at
> > >>>
> >
> org.gradle.api.internal.tasks.execution.ResolveBeforeExecutionStateTaskExecuter.execute(ResolveBeforeExecutionStateTaskExecuter.java:74)
> > >>>         at
> > >>>
> >
> org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:58)
> > >>>         at
> > >>>
> >
> org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:109)
> > >>>         at
> > >>>
> >
> org.gradle.api.internal.tasks.execution.ResolveBeforeExecutionOutputsTaskExecuter.execute(ResolveBeforeExecutionOutputsTaskExecuter.java:67)
> > >>>         at
> > >>>
> >
> org.gradle.api.internal.tasks.execution.StartSnapshotTaskInputsBuildOperationTaskExecuter.execute(StartSnapshotTaskInputsBuildOperationTaskExecuter.java:52)
> > >>>         at
> > >>>
> >
> org.gradle.api.internal.tasks.execution.ResolveAfterPreviousExecutionStateTaskExecuter.execute(ResolveAfterPreviousExecutionStateTaskExecuter.java:46)
> > >>>         at
> > >>>
> >
> org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:93)
> > >>>         at
> > >>>
> >
> org.gradle.api.internal.tasks.execution.FinalizePropertiesTaskExecuter.execute(FinalizePropertiesTaskExecuter.java:45)
> > >>>         at
> > >>>
> >
> org.gradle.api.internal.tasks.execution.ResolveTaskExecutionModeExecuter.execute(ResolveTaskExecutionModeExecuter.java:94)
> > >>>         at
> > >>>
> >
> org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:57)
> > >>>         at
> > >>>
> >
> org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:56)
> > >>>         at
> > >>>
> >
> org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:36)
> > >>>         at
> > >>>
> >
> org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.executeTask(EventFiringTaskExecuter.java:63)
> > >>>         at
> > >>>
> >
> org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:49)
> > >>>         at
> > >>>
> >
> org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:46)
> > >>>         at
> > >>>
> >
> org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:416)
> > >>>         at
> > >>>
> >
> org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:406)
> > >>>         at
> > >>>
> >
> org.gradle.internal.operations.DefaultBuildOperationExecutor$1.execute(DefaultBuildOperationExecutor.java:165)
> > >>>         at
> > >>>
> >
> org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:250)
> > >>>         at
> > >>>
> >
> org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:158)
> > >>>         at
> > >>>
> >
> org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:102)
> > >>>         at
> > >>>
> >
> org.gradle.internal.operations.DelegatingBuildOperationExecutor.call(DelegatingBuildOperationExecutor.java:36)
> > >>>         at
> > >>>
> >
> org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter.execute(EventFiringTaskExecuter.java:46)
> > >>>         at
> > >>>
> >
> org.gradle.execution.plan.LocalTaskNodeExecutor.execute(LocalTaskNodeExecutor.java:43)
> > >>>         at
> > >>>
> >
> org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:355)
> > >>>         at
> > >>>
> >
> org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:343)
> > >>>         at
> > >>>
> >
> org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:336)
> > >>>         at
> > >>>
> >
> org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:322)
> > >>>         at
> > >>>
> >
> org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker$1.execute(DefaultPlanExecutor.java:134)
> > >>>         at
> > >>>
> >
> org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker$1.execute(DefaultPlanExecutor.java:129)
> > >>>         at
> > >>>
> >
> org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.execute(DefaultPlanExecutor.java:202)
> > >>>         at
> > >>>
> >
> org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.executeNextNode(DefaultPlanExecutor.java:193)
> > >>>         at
> > >>>
> >
> org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.run(DefaultPlanExecutor.java:129)
> > >>>         at
> > >>>
> >
> org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
> > >>>         at
> > >>>
> >
> org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
> > >>>         at
> > >>>
> >
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
> > >>>         at
> > >>>
> >
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
> > >>>         at
> > >>>
> >
> org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
> > >>>         at java.lang.Thread.run(Thread.java:748)
> > >>> Caused by: java.lang.NoClassDefFoundError:
> > >>> org/openjdk/tools/javac/comp/InferenceContext
> > >>>         at org.openjdk.tools.javac.comp.Infer.<init>(Infer.java:121)
> > >>>         at
> org.openjdk.tools.javac.comp.Infer.instance(Infer.java:101)
> > >>>         at org.openjdk.tools.javac.comp.Check.<init>(Check.java:120)
> > >>>         at
> org.openjdk.tools.javac.comp.Check.instance(Check.java:104)
> > >>>         at
> > >>>
> org.openjdk.tools.javac.comp.DeferredAttr.<init>(DeferredAttr.java:107)
> > >>>         at
> > >>>
> > org.openjdk.tools.javac.comp.DeferredAttr.instance(DeferredAttr.java:99)
> > >>>         at
> > org.openjdk.tools.javac.comp.Resolve.<init>(Resolve.java:123)
> > >>>         at
> > >>> org.openjdk.tools.javac.comp.Resolve.instance(Resolve.java:159)
> > >>>         at org.openjdk.tools.javac.comp.Attr.<init>(Attr.java:129)
> > >>>         at org.openjdk.tools.javac.comp.Attr.instance(Attr.java:119)
> > >>>         at
> > >>> org.openjdk.tools.javac.comp.Annotate.<init>(Annotate.java:102)
> > >>>         at
> > >>> org.openjdk.tools.javac.comp.Annotate.instance(Annotate.java:77)
> > >>>         at
> > >>> org.openjdk.tools.javac.jvm.ClassReader.<init>(ClassReader.java:232)
> > >>>         at
> > >>>
> org.openjdk.tools.javac.jvm.ClassReader.instance(ClassReader.java:225)
> > >>>         at
> > >>> org.openjdk.tools.javac.code.ClassFinder.<init>(ClassFinder.java:183)
> > >>>         at
> > >>>
> org.openjdk.tools.javac.code.ClassFinder.instance(ClassFinder.java:176)
> > >>>         at
> org.openjdk.tools.javac.code.Symtab.<init>(Symtab.java:453)
> > >>>         at
> org.openjdk.tools.javac.code.Symtab.instance(Symtab.java:88)
> > >>>         at
> > >>> org.openjdk.tools.javac.tree.TreeMaker.<init>(TreeMaker.java:87)
> > >>>         at
> > >>> org.openjdk.tools.javac.tree.TreeMaker.instance(TreeMaker.java:60)
> > >>>         at
> > >>>
> >
> org.openjdk.tools.javac.parser.ParserFactory.<init>(ParserFactory.java:72)
> > >>>         at
> > >>>
> >
> org.openjdk.tools.javac.parser.ParserFactory.instance(ParserFactory.java:54)
> > >>>         at
> > >>>
> >
> com.google.googlejavaformat.java.RemoveUnusedImports.parse(RemoveUnusedImports.java:243)
> > >>>         at
> > >>>
> >
> com.google.googlejavaformat.java.RemoveUnusedImports.removeUnusedImports(RemoveUnusedImports.java:212)
> > >>>         at
> > >>>
> >
> com.google.googlejavaformat.java.RemoveUnusedImports.removeUnusedImports(RemoveUnusedImports.java:205)
> > >>>         ... 97 more
> > >>>
> > >>
> >
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message