Build for 5.4.0

Ok, we’re making progress. After fixing gralde versions, I now think this actually is the temp directory issue. Here are some additional observations:

When I run tests manually from IDE then they do not fail at gradle tooling, they fail because I don’t have docker setup

When I run tests with ./gradlew test or ./gradlew check, then I see the same gradle tooling / daemon related exception

However, when I run a single test like this: ./gradlew updateSHAs test --tests org.elasticsearch.plugin.readonlyrest.es.IndicesReverseWildcardTests then I get a different exception. It’s possible that gradle, when run with gradlew test or check obscures the original cause of the problem. I think the solution is to create ./temp directory in travis.yml before running the tests, or setting the tmp directory to something more standard vie ENV variables (Though I don’t know how to do that at this time due to lack of travis experience).

==> Test Info: seed=FEB8A9E0B60E168C; jvm=1; suite=1
Suite: org.elasticsearch.plugin.readonlyrest.es.IndicesReverseWildcardTests
  2> SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
  2> SLF4J: Defaulting to no-operation (NOP) logger implementation
  2> SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
ERROR   0.00s | IndicesReverseWildcardTests (suite) <<< FAILURES!
   > Throwable #1: java.lang.ExceptionInInitializerError
   >    at sun.misc.Unsafe.ensureClassInitialized(Native Method)
   >    at java.lang.reflect.Field.acquireFieldAccessor(Field.java:1088)
   >    at java.lang.reflect.Field.getFieldAccessor(Field.java:1069)
   >    at java.lang.reflect.Field.get(Field.java:393)
   > Caused by: org.gradle.tooling.GradleConnectionException: Could not create an instance of Tooling API implementation using the specified Gradle distribution 'https://services.gradle.org/distributions/gradle-3.5-bin.zip'.
   >    at org.gradle.tooling.internal.consumer.loader.DefaultToolingImplementationLoader.create(DefaultToolingImplementationLoader.java:110)
   >    at org.gradle.tooling.internal.consumer.loader.CachingToolingImplementationLoader.create(CachingToolingImplementationLoader.java:44)
   >    at org.gradle.tooling.internal.consumer.loader.SynchronizedToolingImplementationLoader.create(SynchronizedToolingImplementationLoader.java:43)
   >    at org.gradle.tooling.internal.consumer.connection.LazyConsumerActionExecutor.onStartAction(LazyConsumerActionExecutor.java:101)
   >    at org.gradle.tooling.internal.consumer.connection.LazyConsumerActionExecutor.run(LazyConsumerActionExecutor.java:83)
   >    at org.gradle.tooling.internal.consumer.connection.CancellableConsumerActionExecutor.run(CancellableConsumerActionExecutor.java:45)
   >    at org.gradle.tooling.internal.consumer.connection.ProgressLoggingConsumerActionExecutor.run(ProgressLoggingConsumerActionExecutor.java:58)
   >    at org.gradle.tooling.internal.consumer.connection.RethrowingErrorsConsumerActionExecutor.run(RethrowingErrorsConsumerActionExecutor.java:38)
   >    at org.gradle.tooling.internal.consumer.async.DefaultAsyncConsumerActionExecutor$1$1.run(DefaultAsyncConsumerActionExecutor.java:55)
   >    at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
   >    at org.gradle.internal.concurrent.StoppableExecutorImpl$1.run(StoppableExecutorImpl.java:46)
   >    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)
   >    at org.gradle.tooling.internal.consumer.BlockingResultHandler.getResult(BlockingResultHandler.java:46)
   >    at org.gradle.tooling.internal.consumer.DefaultBuildLauncher.run(DefaultBuildLauncher.java:77)
   >    at org.elasticsearch.plugin.readonlyrest.utils.gradle.GradleProjectUtils.runTask(GradleProjectUtils.java:56)
   >    at org.elasticsearch.plugin.readonlyrest.utils.gradle.GradleProjectUtils.assemble(GradleProjectUtils.java:31)
   >    at org.elasticsearch.plugin.readonlyrest.utils.containers.ESWithReadonlyRestContainer.create(ESWithReadonlyRestContainer.java:67)
   >    at org.elasticsearch.plugin.readonlyrest.es.IndicesReverseWildcardTests.<clinit>(IndicesReverseWildcardTests.java:43)
   >    ... 15 more
   > Caused by: org.gradle.internal.service.ServiceCreationException: Could not create service of type FileSystem using FileSystemServices.createFileSystem().
   >    at org.gradle.internal.service.DefaultServiceRegistry$FactoryMethodService.invokeMethod(DefaultServiceRegistry.java:807)
   >    at org.gradle.internal.service.DefaultServiceRegistry$FactoryService.create(DefaultServiceRegistry.java:761)
   >    at org.gradle.internal.service.DefaultServiceRegistry$ManagedObjectProvider.getInstance(DefaultServiceRegistry.java:598)
   >    at org.gradle.internal.service.DefaultServiceRegistry$SingletonService.get(DefaultServiceRegistry.java:643)
   >    at org.gradle.internal.service.DefaultServiceRegistry.doGet(DefaultServiceRegistry.java:429)
   >    at org.gradle.internal.service.DefaultServiceRegistry.get(DefaultServiceRegistry.java:414)
   >    at org.gradle.internal.service.DefaultServiceRegistry$ParentServices.getService(DefaultServiceRegistry.java:1078)
   >    at org.gradle.internal.service.DefaultServiceRegistry$CompositeProvider.getService(DefaultServiceRegistry.java:1023)
   >    at org.gradle.internal.service.DefaultServiceRegistry$CompositeProvider.getService(DefaultServiceRegistry.java:1023)
   >    at org.gradle.internal.service.DefaultServiceRegistry$CachingProvider.getService(DefaultServiceRegistry.java:971)
   >    at org.gradle.internal.service.DefaultServiceRegistry$DefaultLookupContext$4.apply(DefaultServiceRegistry.java:1298)
   >    at org.gradle.internal.service.DefaultServiceRegistry$DefaultLookupContext$4.apply(DefaultServiceRegistry.java:1295)
   >    at org.gradle.internal.service.DefaultServiceRegistry$DefaultLookupContext.getServiceProvider(DefaultServiceRegistry.java:1252)
   >    at org.gradle.internal.service.DefaultServiceRegistry$DefaultLookupContext.find(DefaultServiceRegistry.java:1240)
   >    at org.gradle.internal.service.DefaultServiceRegistry$FactoryService.bind(DefaultServiceRegistry.java:735)
   >    at org.gradle.internal.service.DefaultServiceRegistry$SingletonService.prepare(DefaultServiceRegistry.java:648)
   >    at org.gradle.internal.service.DefaultServiceRegistry$SingletonService.getService(DefaultServiceRegistry.java:661)
   >    at org.gradle.internal.service.DefaultServiceRegistry$OwnServices.getService(DefaultServiceRegistry.java:530)
   >    at org.gradle.internal.service.DefaultServiceRegistry$CompositeProvider.getService(DefaultServiceRegistry.java:1023)
   >    at org.gradle.internal.service.DefaultServiceRegistry$CachingProvider.getService(DefaultServiceRegistry.java:971)
   >    at org.gradle.internal.service.DefaultServiceRegistry$DefaultLookupContext$4.apply(DefaultServiceRegistry.java:1298)
   >    at org.gradle.internal.service.DefaultServiceRegistry$DefaultLookupContext$4.apply(DefaultServiceRegistry.java:1295)
   >    at org.gradle.internal.service.DefaultServiceRegistry$DefaultLookupContext.getServiceProvider(DefaultServiceRegistry.java:1252)
   >    at org.gradle.internal.service.DefaultServiceRegistry$DefaultLookupContext.find(DefaultServiceRegistry.java:1240)
   >    at org.gradle.internal.service.DefaultServiceRegistry$FactoryService.bind(DefaultServiceRegistry.java:735)
   >    at org.gradle.internal.service.DefaultServiceRegistry$SingletonService.prepare(DefaultServiceRegistry.java:648)
   >    at org.gradle.internal.service.DefaultServiceRegistry$SingletonService.getService(DefaultServiceRegistry.java:661)
   >    at org.gradle.internal.service.DefaultServiceRegistry$OwnServices.getService(DefaultServiceRegistry.java:530)
   >    at org.gradle.internal.service.DefaultServiceRegistry$CompositeProvider.getService(DefaultServiceRegistry.java:1023)
   >    at org.gradle.internal.service.DefaultServiceRegistry$CachingProvider.getService(DefaultServiceRegistry.java:971)
   >    at org.gradle.internal.service.DefaultServiceRegistry$DefaultLookupContext$4.apply(DefaultServiceRegistry.java:1298)
   >    at org.gradle.internal.service.DefaultServiceRegistry$DefaultLookupContext$4.apply(DefaultServiceRegistry.java:1295)
   >    at org.gradle.internal.service.DefaultServiceRegistry$DefaultLookupContext.getServiceProvider(DefaultServiceRegistry.java:1252)
   >    at org.gradle.internal.service.DefaultServiceRegistry$DefaultLookupContext.find(DefaultServiceRegistry.java:1240)
   >    at org.gradle.internal.service.DefaultServiceRegistry$FactoryService.bind(DefaultServiceRegistry.java:735)
   >    at org.gradle.internal.service.DefaultServiceRegistry$SingletonService.prepare(DefaultServiceRegistry.java:648)
   >    at org.gradle.internal.service.DefaultServiceRegistry$SingletonService.getService(DefaultServiceRegistry.java:661)
   >    at org.gradle.internal.service.DefaultServiceRegistry$OwnServices.getService(DefaultServiceRegistry.java:530)
   >    at org.gradle.internal.service.DefaultServiceRegistry$CompositeProvider.getService(DefaultServiceRegistry.java:1023)
   >    at org.gradle.internal.service.DefaultServiceRegistry$CachingProvider.getService(DefaultServiceRegistry.java:971)
   >    at org.gradle.internal.service.DefaultServiceRegistry$DefaultLookupContext$4.apply(DefaultServiceRegistry.java:1298)
   >    at org.gradle.internal.service.DefaultServiceRegistry$DefaultLookupContext$4.apply(DefaultServiceRegistry.java:1295)
   >    at org.gradle.internal.service.DefaultServiceRegistry$DefaultLookupContext.getServiceProvider(DefaultServiceRegistry.java:1252)
   >    at org.gradle.internal.service.DefaultServiceRegistry$DefaultLookupContext.find(DefaultServiceRegistry.java:1240)
   >    at org.gradle.internal.service.DefaultServiceRegistry.getServiceProvider(DefaultServiceRegistry.java:434)
   >    at org.gradle.internal.service.DefaultServiceRegistry.doGet(DefaultServiceRegistry.java:426)
   >    at org.gradle.internal.service.DefaultServiceRegistry.get(DefaultServiceRegistry.java:410)
   >    at org.gradle.tooling.internal.provider.DefaultConnection.initializeServices(DefaultConnection.java:109)
   >    at org.gradle.tooling.internal.provider.DefaultConnection.configure(DefaultConnection.java:94)
   >    at org.gradle.tooling.internal.consumer.connection.AbstractPost12ConsumerConnection.configure(AbstractPost12ConsumerConnection.java:37)
   >    at org.gradle.tooling.internal.consumer.loader.DefaultToolingImplementationLoader.create(DefaultToolingImplementationLoader.java:102)
   >    at org.gradle.tooling.internal.consumer.loader.CachingToolingImplementationLoader.create(CachingToolingImplementationLoader.java:44)
   >    at org.gradle.tooling.internal.consumer.loader.SynchronizedToolingImplementationLoader.create(SynchronizedToolingImplementationLoader.java:43)
   >    at org.gradle.tooling.internal.consumer.connection.LazyConsumerActionExecutor.onStartAction(LazyConsumerActionExecutor.java:101)
   >    at org.gradle.tooling.internal.consumer.connection.LazyConsumerActionExecutor.run(LazyConsumerActionExecutor.java:83)
   >    at org.gradle.tooling.internal.consumer.connection.CancellableConsumerActionExecutor.run(CancellableConsumerActionExecutor.java:45)
   >    at org.gradle.tooling.internal.consumer.connection.ProgressLoggingConsumerActionExecutor.run(ProgressLoggingConsumerActionExecutor.java:58)
   >    at org.gradle.tooling.internal.consumer.connection.RethrowingErrorsConsumerActionExecutor.run(RethrowingErrorsConsumerActionExecutor.java:38)
   >    at org.gradle.tooling.internal.consumer.async.DefaultAsyncConsumerActionExecutor$1$1.run(DefaultAsyncConsumerActionExecutor.java:55)
   >    at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
   >    at org.gradle.internal.concurrent.StoppableExecutorImpl$1.run(StoppableExecutorImpl.java:46)
   >    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: java.lang.RuntimeException: java.io.IOException: java.io.tmpdir is set to a directory that doesn't exist: ./temp
   >    at org.gradle.internal.nativeintegration.filesystem.services.GenericFileSystem.<init>(GenericFileSystem.java:106)
   >    at org.gradle.internal.nativeintegration.filesystem.services.FileSystemServices.createFileSystem(FileSystemServices.java:53)
   >    at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:73)
   >    at org.gradle.internal.service.DefaultServiceRegistry.invoke(DefaultServiceRegistry.java:462)
   >    at org.gradle.internal.service.DefaultServiceRegistry.access$1200(DefaultServiceRegistry.java:84)
   >    at org.gradle.internal.service.DefaultServiceRegistry$FactoryMethodService.invokeMethod(DefaultServiceRegistry.java:805)
   >    ... 63 more
   > Caused by: java.io.IOException: java.io.tmpdir is set to a directory that doesn't exist: ./temp
   >    at org.gradle.internal.nativeintegration.filesystem.services.GenericFileSystem.checkJavaIoTmpDirExists(GenericFileSystem.java:142)
   >    at org.gradle.internal.nativeintegration.filesystem.services.GenericFileSystem.<init>(GenericFileSystem.java:102)
   >    ... 72 more

Ok, try adding this to gradle.build systemProperty "java.io.tmpdir", "/tmp".

E.g. test section should look like this:

test {
    dependsOn customJarHellCheck
    systemProperty "project.dir", rootProject.projectDir
    systemProperty "java.io.tmpdir", "/tmp"
}

When I modified the script this way, I no longer get gradle daemon exception locally.

Hopefully /tmp exists in Travis CI environment.

@knes1 dude it built! Finally! Thanks a ton, bro. :clap: :champagne::surfing_man:

No prob - I’m glad it worked! :sunglasses:

1 Like

Ok, guys. I’ve tried to merge current master with new “ES modules” but sadly it doesn’t work.
I don’t like fight with gradle and it seems that after your success with migrating to gradle 3.5 you can help me with my problem. See PR: Feature/es modules by coutoPL · Pull Request #220 · sscarduzio/elasticsearch-readonlyrest-plugin · GitHub.

Do you know what is missing?

@coutoPL I’ll take look and try to figure it out. Could you guys send in a short description on what is happening in that gradle build file (e.g. what each part does and why)? That would help a lot. I remember building a proof-of-concept ES plugin for 1.4.x series long time ago and I don’t remember build script being so involved…

I took a look. However, unfortunately, I don’t understand the new layout of the project or how it’s supposed to work or be built. The issue that pops out doesn’t seem to be related with what we have been fixing for 5.4.0 and gradle 3.5. :frowning:

I’ve checked master branch and I can build it with fixed gradle configuration. But when I change ES version 5.2.2 master fails. Do you know why? Can we use gradle 3.5 to build ES version < 5.4.0 ?

AFAIK they were stuck for a lot of time with a prehistoric version of Gradle because they needed the “ProgressLogger” class which was deprecated after 2.13.

And now something changed, but I don’t understand what.

EDIT: more relevant commit

If 5.4 and the other 5.x are truly incompatible, I wouldn’t mind some bash glue. Anything is better than Gradle.

Ok. But why is this a problem? It should be easy enough to keep gradle 2.13 in branches that build plugin version <= 5.3 and gradle 3.5 for versions >= 5.4. Am I missing something?

yes, in new plugin architecture there is a core without ES dependencies and ES modules for each ES with breaking changes api.

But ok, I’ve almost handled it. I got rid of ES plugin and everything seems to work like a charm :slight_smile:

1 Like

I have other problem. I don’t know how to force gradle to invoke tasks for each build. My custom tasks still are up-to-date. Do you have any ideas how to do that?