Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Unable to run on macOS Sonoma #135

Open
snorrehu opened this issue Oct 9, 2023 · 19 comments
Open

Unable to run on macOS Sonoma #135

snorrehu opened this issue Oct 9, 2023 · 19 comments

Comments

@snorrehu
Copy link

snorrehu commented Oct 9, 2023

This worked before I upgraded to macOS Sonoma. Now I get this error message:

java.lang.RuntimeException: Can't start redis server. Check logs for details. Redis process log: 

	at redis.embedded.AbstractRedisInstance.awaitRedisServerReady(AbstractRedisInstance.java:70)
	at redis.embedded.AbstractRedisInstance.start(AbstractRedisInstance.java:42)
	at redis.embedded.RedisServer.start(RedisServer.java:9)
@PengLean
Copy link

have the same problem

@PengLean
Copy link

have the same problem

#127 (comment)
I follow the comment to set up local redisExecProvider when create redis server, then solve the problem.

@EGjaedong
Copy link

same problem with you

@frankfiorante
Copy link

having the same problem

@vjsantojaca
Copy link

vjsantojaca commented Oct 19, 2023

I have the same problem. I have modified the code in this repository https://github.com/vjsantojaca/embedded-redis and now the tests pass without error (I have not upload it to a maven repository)

I am trying to update the redis version to a new one.

Anyway, I think that the correct way would be change the dependencies that we have with this library in our repository and use testcontainers.

    redis = new GenericContainer(DockerImageName.parse("redis:7.0.0").toString()).withExposedPorts(6379);
    redis.start();

    String host =  redis.getContainerIpAddress();
    Integer port = redis.getMappedPort(6379);

    System.out.println("Redis -> " + host + ":" + port);

@tpanagos
Copy link

@codemonstur's build with maven repo worked to fix for me.

https://mvnrepository.com/artifact/com.github.codemonstur/embedded-redis/1.0.0

@fernando-garcia-diaz
Copy link

@codemonstur's build with maven repo worked to fix for me.

https://mvnrepository.com/artifact/com.github.codemonstur/embedded-redis/1.0.0

Unfortunately this works in Intel macs but not on M1 macs

@jevanlingen
Copy link

Unfortunately this works in Intel macs but not on M1 Macs

Yeah, that's kinda sad. Luckily the customised Redis version by @vjsantojaca does work on my m2 Mac 💪🏻!

@mamachanko
Copy link

mamachanko commented Nov 14, 2023

Most likely security policies forbid the Redis binary from starting. The security policies seems to have been tightened in Sonoma. You can confirm that yourself with the Console app. Learn a bit more about it over here. In a nutshell, you start recording messages, filter for redis and run whatever code uses embedded-redis. Eventually you might see something like this:

ASP: Security policy would not allow process <pid>

One way to get past this policy is to grant permission to certain programs in the Developer Tools settings. We've been successful in granting java permissions.

yes-java

You will have to point at your java binary. Depending on how you install it, it will be in different places. which java can help. SDKman and brew put binaries in special locations.

Once you grant java with permissions, run your things again but make sure that there are new PIDs. For example, when you use gradle, say --no-daemon to not reuse an existing daemon which might not have elevated permissions yet.

❗ Disclaimer: this is potentially unsafe. zero warranty. you have been warned. yak yak.

@wuyongdec
Copy link

finally it works for me @mamachanko appreciate for your help

@michaelcowan
Copy link

Another option is to move to a maintained fork that has addressed this issue:
https://github.com/codemonstur/embedded-redis

This worked for me MacOS Sonoma 14.1.1 (23B81) M1.

@PovilasKM
Copy link

PovilasKM commented Nov 28, 2023

Another option is to move to a maintained fork that has addressed this issue: https://github.com/codemonstur/embedded-redis

This worked for me MacOS Sonoma 14.1.1 (23B81) M1.

Thanks, that repo worked for me with 14.1.1 (23B81), 2019 mac.
The only difference between these repos was that RedisServer.builder() had to be replaced with RedisServer.newRedisServer()

@SanthoshVasabhaktula
Copy link

Another option is to move to a maintained fork that has addressed this issue: https://github.com/codemonstur/embedded-redis

This worked for me MacOS Sonoma 14.1.1 (23B81) M1.

Thanks, the same has worked for me with 14.1.1 (23B81) M2 as well

@Hejow
Copy link

Hejow commented Dec 25, 2023

@codemonstur's build with maven repo worked to fix for me.

https://mvnrepository.com/artifact/com.github.codemonstur/embedded-redis/1.0.0

Thanks! This works on me (mac M2 pro 14.2.1)

@deva820
Copy link

deva820 commented Feb 16, 2024

I am on Mac M2 Pro Sonoma. But unfortunately it does not work for me. I get the following error while running the builds. I am using latest version 1.4.1. I have also tried 1.0.0 as well.

Caused by: java.io.IOException: Ready pattern not found in log. Startup log:
at redis.embedded.RedisInstance.awaitServerReady(RedisInstance.java:59)
at redis.embedded.RedisInstance.start(RedisInstance.java:45)
... 92 more

@Bean("EmbeddedRedisConfig") public EmbeddedRedisConfig embeddedRedisConfig() throws IOException { int redisPort = 6381; redisServer = RedisServer.newRedisServer().port(redisPort).build(); redisServer.start(); log.info("Started redis server on port {}", redisPort); return new EmbeddedRedisConfig(redisServer, redisPort); }

@michellemillerh
Copy link

michellemillerh commented Mar 13, 2024

@mamachanko's option worked for me on M1 Airbook, 14.3.1. I had to enable this for both Java and IntelliJ also -- the screenshot hints at IntelliJ but has it turned off. Also, which java misled me, it did not show brew's installation path, but echo $JAVA_HOME and then /bin/java did.

I wasn't able to use the codemunster fork because it broke in our Jenkins pipeline running on Linux with java.io.IOException: Ready pattern not found in log. Startup log.

@phanker
Copy link

phanker commented May 24, 2024

@mamachanko's option worked for me on M1 Airbook, 14.3.1. I had to enable this for both Java and IntelliJ also -- the screenshot hints at IntelliJ but has it turned off. Also, which java misled me, it did not show brew's installation path, but echo $JAVA_HOME and then /bin/java did.

I wasn't able to use the codemunster fork because it broke in our Jenkins pipeline running on Linux with java.io.IOException: Ready pattern not found in log. Startup log.

it works for me.

@codemonstur
Copy link

@michellemillerh

I wasn't able to use the codemunster fork because it broke in our Jenkins pipeline running on Linux with java.io.IOException: Ready pattern not found in log. Startup log.

This is the error that you get when the Redis binary doesn't start up at all. Theoretically it could be anything but lots of people appear to have trouble because they run the binary on a host that doesn't have libssl.so installed. If you run the latest version of the library it should give you a more detailed error message that says as much. Installing libssl on the host is the solution most people go for.

@benshenlan
Copy link

Most likely security policies forbid the Redis binary from starting. The security policies seems to have been tightened in Sonoma. You can confirm that yourself with the Console app. Learn a bit more about it over here. In a nutshell, you start recording messages, filter for redis and run whatever code uses embedded-redis. Eventually you might see something like this:

ASP: Security policy would not allow process <pid>

One way to get past this policy is to grant permission to certain programs in the Developer Tools settings. We've been successful in granting java permissions.

yes-java

You will have to point at your java binary. Depending on how you install it, it will be in different places. which java can help. SDKman and brew put binaries in special locations.

Once you grant java with permissions, run your things again but make sure that there are new PIDs. For example, when you use gradle, say --no-daemon to not reuse an existing daemon which might not have elevated permissions yet.

❗ Disclaimer: this is potentially unsafe. zero warranty. you have been warned. yak yak.

Thanks a lot !
I grant java and IDEA permission and it works !

dhirajshettymoj added a commit to ministryofjustice/send-legal-mail-to-prisons-api that referenced this issue Oct 22, 2024
dhirajshettymoj added a commit to ministryofjustice/send-legal-mail-to-prisons-api that referenced this issue Oct 22, 2024
Update embedded redis library (used on tests) as the one we have now is unsupported and the tests do not work on Macs. Replacing with a more recent version that was forked off the library we were using.

References below -
kstyrc/embedded-redis#135

https://stackoverflow.com/questions/53287218/java-lang-runtimeexception-cant-start-redis-server-check-logs-for-details
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests