bmuschko / gradle-cargo-plugin

Gradle plugin that provides deployment capabilities to local and remote containers via Cargo
Apache License 2.0
258 stars 63 forks source link

Could not read entry 'cargoRunLocal' from cache taskArtifacts.bin (gradle 3.x) #154

Closed chrisribble closed 7 years ago

chrisribble commented 7 years ago

There seems to be some sort of incompatibility between this plugin and gradle 3.x

If I use gradle 2.14.1, I can invoke "./gradlew cargoRunLocal" without issue, but once I upgrade to gradle 3.0 or gradle 3.1, the same command results in:

Could not read entry 'cargoRunLocal' from cache taskArtifacts.bin ([directory]/.gradle/3.1/taskArtifacts/taskArtifacts.bin).
> com.bmuschko.gradle.cargo.convention.Deployable

On some of my projects, removing the .gradle directory and then running cargoRunLocal makes it work once (after which I have to remove .gradle again). In others, it doesn't work at all.

In all cases, downgrading to gradle 2.x fixes the problem. Should be easy to reproduce: run "./gradlew cargoRunLocal", then after the container starts, hit ctrl+c, then run again.

I'm not sure if it matters, but I'm using Cargo with Tomcat 8.x

bmuschko commented 7 years ago

Thanks for reporting. Could you please provide the full stack trace by running it with -s?

chrisribble commented 7 years ago

Sure, sorry about that; here is the stacktrace:

FAILURE: Build failed with an exception.

* What went wrong:
org.gradle.api.UncheckedIOException: Could not read entry ':myProject-webapp:cargoStartLocal' from cache taskArtifacts.bin (myProject/.gradle/3.2.1/taskArtifacts/taskArtifacts.bin).                                                                                                                  
> Could not read entry ':myProject-webapp:cargoStartLocal' from cache taskArtifacts.bin (myProject/.gradle/3.2.1/taskArtifacts/taskArtifacts.bin).                                                                                                                                                     

* Try:
Run with --info or --debug option to get more log output.

* Exception is:
com.google.common.util.concurrent.UncheckedExecutionException: org.gradle.api.UncheckedIOException: Could not read entry ':myProject-webapp:cargoStartLocal' from cache taskArtifacts.bin (myProject/.gradle/3.2.1/taskArtifacts/taskArtifacts.bin).                                                   
        at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2201)                                                                             
        at com.google.common.cache.LocalCache.get(LocalCache.java:3934)                                                                                     
        at com.google.common.cache.LocalCache$LocalManualCache.get(LocalCache.java:4736)                                                                    
        at org.gradle.api.internal.changedetection.state.InMemoryDecoratedCache.get(InMemoryDecoratedCache.java:51)                                         
        at org.gradle.cache.internal.CrossProcessSynchronizingCache$1.create(CrossProcessSynchronizingCache.java:37)                                        
        at org.gradle.cache.internal.LockOnDemandCrossProcessCacheAccess.withFileLock(LockOnDemandCrossProcessCacheAccess.java:81)                          
        at org.gradle.cache.internal.CrossProcessSynchronizingCache.get(CrossProcessSynchronizingCache.java:34)                                             
        at org.gradle.api.internal.changedetection.state.CacheBackedTaskHistoryRepository.loadPreviousExecutions(CacheBackedTaskHistoryRepository.java:125) 
        at org.gradle.api.internal.changedetection.state.CacheBackedTaskHistoryRepository.getHistory(CacheBackedTaskHistoryRepository.java:62)              
        at org.gradle.api.internal.changedetection.changes.DefaultTaskArtifactStateRepository.getStateFor(DefaultTaskArtifactStateRepository.java:63)       
        at org.gradle.api.internal.changedetection.changes.ShortCircuitTaskArtifactStateRepository.getStateFor(ShortCircuitTaskArtifactStateRepository.java:47)                                                                                                                                                         
        at org.gradle.api.internal.tasks.execution.ResolveTaskArtifactStateTaskExecuter.execute(ResolveTaskArtifactStateTaskExecuter.java:42)               
        at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:51)                             
        at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:54)                                           
        at org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:43)                             
        at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:34)                                   
        at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:233)                         
        at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:215)                         
        at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.processTask(AbstractTaskPlanExecutor.java:74)                         
        at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.run(AbstractTaskPlanExecutor.java:55)                                 
        at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor.process(DefaultTaskPlanExecutor.java:32)                                                  
        at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter.execute(DefaultTaskGraphExecuter.java:113)                                               
        at org.gradle.execution.SelectedTaskExecutionAction.execute(SelectedTaskExecutionAction.java:37)                                                    
        at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:37)                                                                  
        at org.gradle.execution.DefaultBuildExecuter.access$000(DefaultBuildExecuter.java:23)                                                               
        at org.gradle.execution.DefaultBuildExecuter$1.proceed(DefaultBuildExecuter.java:43)                                                                
        at org.gradle.execution.DryRunBuildExecutionAction.execute(DryRunBuildExecutionAction.java:32)                                                      
        at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:37)                                                                  
        at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:30)                                                                  
        at org.gradle.initialization.DefaultGradleLauncher$4.run(DefaultGradleLauncher.java:197)                                                            
        at org.gradle.internal.Factories$1.create(Factories.java:25)                                                                                        
        at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:91)                                            
        at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:53)                                            
        at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:194)                                                    
        at org.gradle.initialization.DefaultGradleLauncher.access$200(DefaultGradleLauncher.java:36)                                                        
        at org.gradle.initialization.DefaultGradleLauncher$1.create(DefaultGradleLauncher.java:118)                                                         
        at org.gradle.initialization.DefaultGradleLauncher$1.create(DefaultGradleLauncher.java:112)                                                         
        at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:91)                                            
        at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:63)                                            
        at org.gradle.initialization.DefaultGradleLauncher.doBuild(DefaultGradleLauncher.java:112)                                                          
        at org.gradle.initialization.DefaultGradleLauncher.run(DefaultGradleLauncher.java:98)                                                               
        at org.gradle.launcher.exec.GradleBuildController.run(GradleBuildController.java:66)                                                                
        at org.gradle.tooling.internal.provider.ExecuteBuildActionRunner.run(ExecuteBuildActionRunner.java:28)                                              
        at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35)                                                        
        at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:41)                                              
        at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:26)                                              
        at org.gradle.tooling.internal.provider.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:75)                                
        at org.gradle.tooling.internal.provider.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:49)                                
        at org.gradle.tooling.internal.provider.ServicesSetupBuildActionExecuter.execute(ServicesSetupBuildActionExecuter.java:44)                          
        at org.gradle.tooling.internal.provider.ServicesSetupBuildActionExecuter.execute(ServicesSetupBuildActionExecuter.java:29)                          
        at org.gradle.launcher.daemon.server.exec.ExecuteBuild.doBuild(ExecuteBuild.java:67)                                                                
        at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)                                                        
        at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)                                            
        at org.gradle.launcher.daemon.server.exec.WatchForDisconnection.execute(WatchForDisconnection.java:47)                                              
        at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)                                            
        at org.gradle.launcher.daemon.server.exec.ResetDeprecationLogger.execute(ResetDeprecationLogger.java:26)                                            
        at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)                                            
        at org.gradle.launcher.daemon.server.exec.RequestStopIfSingleUsedDaemon.execute(RequestStopIfSingleUsedDaemon.java:34)                              
        at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)                                            
        at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.java:74)                                                     
        at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.java:72)                                                     
        at org.gradle.util.Swapper.swap(Swapper.java:38)                                                                                                    
        at org.gradle.launcher.daemon.server.exec.ForwardClientInput.execute(ForwardClientInput.java:72)                                                    
        at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)                                            
        at org.gradle.launcher.daemon.server.exec.LogAndCheckHealth.execute(LogAndCheckHealth.java:55)                                                      
        at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)                                            
        at org.gradle.launcher.daemon.server.exec.LogToClient.doBuild(LogToClient.java:60)                                                                  
        at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)                                                        
        at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)                                            
        at org.gradle.launcher.daemon.server.exec.EstablishBuildEnvironment.doBuild(EstablishBuildEnvironment.java:72)                                      
        at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)                                                        
        at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)                                            
        at org.gradle.launcher.daemon.server.exec.StartBuildOrRespondWithBusy$1.run(StartBuildOrRespondWithBusy.java:50)                                    
        at org.gradle.launcher.daemon.server.DaemonStateCoordinator$1.run(DaemonStateCoordinator.java:293)                                                  
        at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:54)                                           
        at org.gradle.internal.concurrent.StoppableExecutorImpl$1.run(StoppableExecutorImpl.java:40)                                                        
Caused by: org.gradle.api.UncheckedIOException: Could not read entry ':myProject-webapp:cargoStartLocal' from cache taskArtifacts.bin (myProject/.gradle/3.2.1/taskArtifacts/taskArtifacts.bin).                                                                                                       
        at org.gradle.cache.internal.btree.BTreePersistentIndexedCache.get(BTreePersistentIndexedCache.java:133)                                            
        at org.gradle.cache.internal.DefaultMultiProcessSafePersistentIndexedCache$1.create(DefaultMultiProcessSafePersistentIndexedCache.java:38)          
        at org.gradle.cache.internal.DefaultFileLockManager$DefaultFileLock.readFile(DefaultFileLockManager.java:159)                                       
        at org.gradle.cache.internal.DefaultCacheAccess$UnitOfWorkFileAccess.readFile(DefaultCacheAccess.java:448)
        at org.gradle.cache.internal.DefaultMultiProcessSafePersistentIndexedCache.get(DefaultMultiProcessSafePersistentIndexedCache.java:36)
        at org.gradle.cache.internal.AsyncCacheAccessDecoratedCache$1.create(AsyncCacheAccessDecoratedCache.java:37)
        at org.gradle.cache.internal.CacheAccessWorker$1.call(CacheAccessWorker.java:78)
        at org.gradle.cache.internal.CacheAccessWorker$AsyncCacheAccessFutureTask.run(CacheAccessWorker.java:254)
        at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:54)
        at org.gradle.cache.internal.CacheAccessWorker$2.run(CacheAccessWorker.java:177)
        at org.gradle.internal.Factories$1.create(Factories.java:25)
        at org.gradle.cache.internal.DefaultCacheAccess.useCache(DefaultCacheAccess.java:179)
        at org.gradle.cache.internal.DefaultCacheAccess.useCache(DefaultCacheAccess.java:162)
        at org.gradle.cache.internal.CacheAccessWorker.flushOperations(CacheAccessWorker.java:172)
        at org.gradle.cache.internal.CacheAccessWorker.run(CacheAccessWorker.java:142)
        ... 2 more
Caused by: java.lang.ClassNotFoundException: com.bmuschko.gradle.cargo.convention.Deployable
        at org.gradle.internal.io.ClassLoaderObjectInputStream.resolveClass(ClassLoaderObjectInputStream.java:40)
        at org.gradle.internal.serialize.DefaultSerializer.read(DefaultSerializer.java:45)
        at org.gradle.internal.serialize.MapSerializer.read(MapSerializer.java:37)
        at org.gradle.api.internal.changedetection.state.InputPropertiesSerializer.read(InputPropertiesSerializer.java:35)
        at org.gradle.api.internal.changedetection.state.CacheBackedTaskHistoryRepository$LazyTaskExecution$TaskExecutionSnapshotSerializer.read(CacheBackedTaskHistoryRepository.java:356)
        at org.gradle.api.internal.changedetection.state.CacheBackedTaskHistoryRepository$TaskExecutionListSerializer.read(CacheBackedTaskHistoryRepository.java:186)
        at org.gradle.api.internal.changedetection.state.CacheBackedTaskHistoryRepository$TaskExecutionListSerializer.read(CacheBackedTaskHistoryRepository.java:173)
        at org.gradle.cache.internal.btree.BTreePersistentIndexedCache$DataBlock.getValue(BTreePersistentIndexedCache.java:665)
        at org.gradle.cache.internal.btree.BTreePersistentIndexedCache.get(BTreePersistentIndexedCache.java:125)
        ... 16 more
bmuschko commented 7 years ago

Thanks for providing the stack trace. This is an issue in Gradle core and not specific to this plugin. I'd suggest you track the issue #784 in Gradle core. I am going to close this one.

chrisribble commented 7 years ago

Thanks!