metalbear-co / mirrord

Connect your local process and your cloud environment, and run local code in cloud conditions.
https://mirrord.dev
MIT License
3.59k stars 100 forks source link

Hazelcast pings fail #2421

Open eyalb181 opened 2 months ago

eyalb181 commented 2 months ago

Bug Description

When starting up, an app using Hazelcast tries to send ICMP pings and fails.

Steps to Reproduce

Run an app that uses Hazelcast. Initial pings will fail (you won't see them in the logs), and then it'll fallback to pinging over port 7.

Backtrace

No response

Relevant Logs

No response

Your operating system and version

N/A

Local process

N/A

Local process version

No response

Additional Info

No response

aviramha commented 2 months ago

Hazelcast uses isReachable which goes to this code: https://github.com/openjdk/jdk/blob/87bb66cea1b6b70fc4929e7a6e3788883f87e02d/src/java.base/unix/native/libnet/Inet4AddressImpl.c#L343

aviramha commented 2 months ago

I think a temporary, patchy solution would be to emulate that connection to port 7 is always successful. If you look at the above example, tcp_ping4 just calls connect((host, 7)) and if it succeeds it closes and it is reachable from it's perspective. We should add

{
"feature": {"experimental": {"tcp_ping4_mock": true}}
}

that will trigger that magic behavior for now.