pygradle
pygradle copied to clipboard
PythonDetails is not serializable
PythonDetails
implements Serializable
but it takes a Project
that is not serializable.
If you try to make it so that the PipInstallTask
gets cached you get an exception that it can't be
Failed to execute org.gradle.cache.internal.AsyncCacheAccessDecoratedCache$2@613b3d80.
org.gradle.api.UncheckedIOException: Could not add entry ':PlexxiCorePythonAPI:installPythonRequirements' to cache taskArtifacts.bin (/Users/jonathanleitschuh/work/git/plexxicontrol/.gradle/3.4-20161216120313+0000/taskArtifacts/taskArtifacts.bin).
at org.gradle.cache.internal.btree.BTreePersistentIndexedCache.put(BTreePersistentIndexedCache.java:158)
at org.gradle.cache.internal.DefaultMultiProcessSafePersistentIndexedCache$2.run(DefaultMultiProcessSafePersistentIndexedCache.java:53)
at org.gradle.cache.internal.DefaultFileLockManager$DefaultFileLock.doWriteAction(DefaultFileLockManager.java:184)
at org.gradle.cache.internal.DefaultFileLockManager$DefaultFileLock.writeFile(DefaultFileLockManager.java:174)
at org.gradle.cache.internal.DefaultCacheAccess$UnitOfWorkFileAccess.writeFile(DefaultCacheAccess.java:457)
at org.gradle.cache.internal.DefaultMultiProcessSafePersistentIndexedCache.put(DefaultMultiProcessSafePersistentIndexedCache.java:51)
at org.gradle.cache.internal.AsyncCacheAccessDecoratedCache$2.run(AsyncCacheAccessDecoratedCache.java:48)
at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:54)
at org.gradle.cache.internal.CacheAccessWorker$2.run(CacheAccessWorker.java:187)
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:177)
at org.gradle.cache.internal.CacheAccessWorker.run(CacheAccessWorker.java:147)
at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:54)
at org.gradle.internal.concurrent.StoppableExecutorImpl$1.run(StoppableExecutorImpl.java:40)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
Caused by: org.gradle.api.GradleException: Unable to store task input properties. Property 'pythonDetails' with value 'com.linkedin.gradle.python.extension.PythonDetails@79695a29' cannot be serialized.
at org.gradle.api.internal.changedetection.state.InputPropertiesSerializer.write(InputPropertiesSerializer.java:42)
at org.gradle.api.internal.changedetection.state.CacheBackedTaskHistoryRepository$LazyTaskExecution$TaskExecutionSnapshotSerializer.write(CacheBackedTaskHistoryRepository.java:441)
at org.gradle.api.internal.changedetection.state.CacheBackedTaskHistoryRepository$TaskExecutionListSerializer.write(CacheBackedTaskHistoryRepository.java:224)
at org.gradle.api.internal.changedetection.state.CacheBackedTaskHistoryRepository$TaskExecutionListSerializer.write(CacheBackedTaskHistoryRepository.java:200)
at org.gradle.cache.internal.btree.BTreePersistentIndexedCache$DataBlock.setValue(BTreePersistentIndexedCache.java:659)
at org.gradle.cache.internal.btree.BTreePersistentIndexedCache$DataBlock.<init>(BTreePersistentIndexedCache.java:646)
at org.gradle.cache.internal.btree.BTreePersistentIndexedCache.put(BTreePersistentIndexedCache.java:150)
... 18 more
Caused by: org.gradle.internal.serialize.MapSerializer$EntrySerializationException: Unable to write entry with key: 'pythonDetails' and value: 'com.linkedin.gradle.python.extension.PythonDetails@79695a29'.
at org.gradle.internal.serialize.MapSerializer.write(MapSerializer.java:50)
at org.gradle.api.internal.changedetection.state.InputPropertiesSerializer.write(InputPropertiesSerializer.java:40)
... 24 more
Caused by: java.io.NotSerializableException: org.gradle.api.internal.project.DefaultProject_Decorated
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1184)
at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1548)
at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1509)
at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:348)
at org.gradle.internal.serialize.DefaultSerializer.write(DefaultSerializer.java:53)
at org.gradle.internal.serialize.MapSerializer.write(MapSerializer.java:48)
... 25 more
The solution would be to mark the Project
field in PipInstallTask
as transient.
This should be fixed now with 0.4.1 release. Would you be able to try it and see if it works for you?
I'll test this out when I next get a chance.
Awesome thanks!