embedded-redis
embedded-redis copied to clipboard
Cannot run program \"/tmp/1550585186512-0/redis-server-2.8.19\" (in directory \"/tmp/1550585186512-0\"): error=2, No such file or directory
I'm using micronaut
and when I'm running the app inside a container I'm receiving this error at first:
Path Taken: StatefulRedisConnection.redisConnection([RedisClient redisClient]) --> RedisClient.redisClient([AbstractRedisConfiguration config])
at io.micronaut.context.DefaultBeanContext.doCreateBean(DefaultBeanContext.java:1343)
at io.micronaut.context.DefaultBeanContext.createAndRegisterSingleton(DefaultBeanContext.java:1902)
at io.micronaut.context.DefaultBeanContext.getBeanForDefinition(DefaultBeanContext.java:1623)
at io.micronaut.context.DefaultBeanContext.getBeanInternal(DefaultBeanContext.java:1603)
at io.micronaut.context.DefaultBeanContext.getBean(DefaultBeanContext.java:896)
at io.micronaut.context.AbstractBeanDefinition.getBeanForConstructorArgument(AbstractBeanDefinition.java:973)
... 58 common frames omitted
Caused by: redis.embedded.exceptions.EmbeddedRedisException: Failed to start Redis instance
at redis.embedded.AbstractRedisInstance.start(AbstractRedisInstance.java:42)
at redis.embedded.RedisServer.start(RedisServer.java:9)
at io.micronaut.configuration.lettuce.test.EmbeddedRedisServer.onCreated(EmbeddedRedisServer.java:79)
at io.micronaut.configuration.lettuce.test.EmbeddedRedisServer.onCreated(EmbeddedRedisServer.java:44)
at io.micronaut.context.DefaultBeanContext.doCreateBean(DefaultBeanContext.java:1374)
at io.micronaut.context.DefaultBeanContext.createAndRegisterSingleton(DefaultBeanContext.java:1902)
at io.micronaut.context.DefaultBeanContext.getBeanForDefinition(DefaultBeanContext.java:1623)
at io.micronaut.context.DefaultBeanContext.getBeanInternal(DefaultBeanContext.java:1603)
at io.micronaut.context.DefaultBeanContext.getBean(DefaultBeanContext.java:896)
at io.micronaut.context.AbstractBeanDefinition.getBeanForConstructorArgument(AbstractBeanDefinition.java:973)
at io.micronaut.configuration.lettuce.$DefaultRedisClientFactory$RedisClientDefinition.build(Unknown Source)
at io.micronaut.context.DefaultBeanContext.doCreateBean(DefaultBeanContext.java:1329)
... 63 common frames omitted
Caused by: java.io.IOException: Cannot run program \"/tmp/1550585186512-0/redis-server-2.8.19\" (in directory \"/tmp/1550585186512-0\"): error=2, No such file or directory
at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1128)
at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1071)
at redis.embedded.AbstractRedisInstance.start(AbstractRedisInstance.java:37)
... 74 common frames omitted
Caused by: java.io.IOException: error=2, No such file or directory
at java.base/java.lang.ProcessImpl.forkAndExec(Native Method)
at java.base/java.lang.ProcessImpl.<init>(ProcessImpl.java:340)
at java.base/java.lang.ProcessImpl.start(ProcessImpl.java:271)
at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1107)
... 76 common frames omitted
After this error, the path, the binary file and the config file are created, but when the application tries to create the server again it throws:
Message: Redis configuration is already set using redis conf file!
Path Taken: StatefulRedisConnection.redisConnection([RedisClient redisClient]) --> RedisClient.redisClient([AbstractRedisConfiguration config])
at io.micronaut.context.DefaultBeanContext.doCreateBean(DefaultBeanContext.java:1343)
at io.micronaut.context.DefaultBeanContext.createAndRegisterSingleton(DefaultBeanContext.java:1902)
at io.micronaut.context.DefaultBeanContext.getBeanForDefinition(DefaultBeanContext.java:1623)
at io.micronaut.context.DefaultBeanContext.getBeanInternal(DefaultBeanContext.java:1603)
at io.micronaut.context.DefaultBeanContext.getBean(DefaultBeanContext.java:896)
at io.micronaut.context.AbstractBeanDefinition.getBeanForConstructorArgument(AbstractBeanDefinition.java:973)
... 59 common frames omitted
Caused by: redis.embedded.exceptions.RedisBuildingException: Redis configuration is already set using redis conf file!
at redis.embedded.RedisServerBuilder.setting(RedisServerBuilder.java:56)
at io.micronaut.configuration.lettuce.test.EmbeddedRedisServer.onCreated(EmbeddedRedisServer.java:77)
at io.micronaut.configuration.lettuce.test.EmbeddedRedisServer.onCreated(EmbeddedRedisServer.java:44)
at io.micronaut.context.DefaultBeanContext.doCreateBean(DefaultBeanContext.java:1374)
at io.micronaut.context.DefaultBeanContext.createAndRegisterSingleton(DefaultBeanContext.java:1902)
at io.micronaut.context.DefaultBeanContext.getBeanForDefinition(DefaultBeanContext.java:1623)
at io.micronaut.context.DefaultBeanContext.getBeanInternal(DefaultBeanContext.java:1603)
at io.micronaut.context.DefaultBeanContext.getBean(DefaultBeanContext.java:896)
at io.micronaut.context.AbstractBeanDefinition.getBeanForConstructorArgument(AbstractBeanDefinition.java:973)
at io.micronaut.configuration.lettuce.$DefaultRedisClientFactory$RedisClientDefinition.build(Unknown Source)
at io.micronaut.context.DefaultBeanContext.doCreateBean(DefaultBeanContext.java:1329)
... 64 common frames omitted
So I guess there is some sort of delay by the time we unpack the files to the specific folder, and the code is not prepared for that scenario. Any ideas?
UPDATE
Happens when the image is an openjdk:*-jdk-alpine
if its openjdk:*-jdk-oracle
it works just fine
I also faced the same problem. It works to me by using the version which was built from alpine.
Im having the same issue