Akka.persistence.r2dbc 1.1.0

Hi,

just switched my service to AkkaPersistenceR2dbcVersion = “1.1.0” and AkkaProjectionR2dbcVersion = “1.4.2”

Running local there is no error and i can work like before with no errors. But whe i deploy it to kubernetes(openshift) i have this new type of error!

memedu-app/sponty-dispatcher-6d9669764b-m878g[sponty-dispatcher]: [2023-07-05 10:48:55,060] [WARN] [io.netty.util.concurrent.DefaultPromise] [reactor-tcp-epoll-1] - An exception was thrown by reactor.netty.transport.TransportConnector$$Lambda$2244/0x0000000801a6ec38.operationComplete()
memedu-app/sponty-dispatcher-6d9669764b-m878g[sponty-dispatcher]: java.lang.NoClassDefFoundError: Could not initialize class io.netty.channel.unix.Errors
memedu-app/sponty-dispatcher-6d9669764b-m878g[sponty-dispatcher]: at io.netty.channel.unix.Socket.connect(Socket.java:351)
memedu-app/sponty-dispatcher-6d9669764b-m878g[sponty-dispatcher]: at io.netty.channel.epoll.AbstractEpollChannel.doConnect0(AbstractEpollChannel.java:773)
memedu-app/sponty-dispatcher-6d9669764b-m878g[sponty-dispatcher]: at io.netty.channel.epoll.EpollSocketChannel.doConnect0(EpollSocketChannel.java:144)
memedu-app/sponty-dispatcher-6d9669764b-m878g[sponty-dispatcher]: at io.netty.channel.epoll.AbstractEpollChannel.doConnect(AbstractEpollChannel.java:758)
memedu-app/sponty-dispatcher-6d9669764b-m878g[sponty-dispatcher]: at io.netty.channel.epoll.AbstractEpollChannel$AbstractEpollUnsafe.connect(AbstractEpollChannel.java:600)
memedu-app/sponty-dispatcher-6d9669764b-m878g[sponty-dispatcher]: at io.netty.channel.DefaultChannelPipeline$HeadContext.connect(DefaultChannelPipeline.java:1342)
memedu-app/sponty-dispatcher-6d9669764b-m878g[sponty-dispatcher]: at io.netty.channel.AbstractChannelHandlerContext.invokeConnect(AbstractChannelHandlerContext.java:653)
memedu-app/sponty-dispatcher-6d9669764b-m878g[sponty-dispatcher]: at io.netty.channel.AbstractChannelHandlerContext.connect(AbstractChannelHandlerContext.java:632)
memedu-app/sponty-dispatcher-6d9669764b-m878g[sponty-dispatcher]: at io.netty.channel.AbstractChannelHandlerContext.connect(AbstractChannelHandlerContext.java:616)
memedu-app/sponty-dispatcher-6d9669764b-m878g[sponty-dispatcher]: at io.netty.channel.AbstractChannelHandlerContext.connect(AbstractChannelHandlerContext.java:545)
memedu-app/sponty-dispatcher-6d9669764b-m878g[sponty-dispatcher]: at io.netty.channel.DefaultChannelPipeline.connect(DefaultChannelPipeline.java:942)
memedu-app/sponty-dispatcher-6d9669764b-m878g[sponty-dispatcher]: at io.netty.channel.AbstractChannel.connect(AbstractChannel.java:229)
memedu-app/sponty-dispatcher-6d9669764b-m878g[sponty-dispatcher]: at reactor.netty.transport.TransportConnector.lambda$doConnect$8(TransportConnector.java:240)
memedu-app/sponty-dispatcher-6d9669764b-m878g[sponty-dispatcher]: at io.netty.util.concurrent.AbstractEventExecutor.runTask(AbstractEventExecutor.java:174)
memedu-app/sponty-dispatcher-6d9669764b-m878g[sponty-dispatcher]: at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:167)
memedu-app/sponty-dispatcher-6d9669764b-m878g[sponty-dispatcher]: at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:470)
memedu-app/sponty-dispatcher-6d9669764b-m878g[sponty-dispatcher]: at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:403)
memedu-app/sponty-dispatcher-6d9669764b-m878g[sponty-dispatcher]: at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)
memedu-app/sponty-dispatcher-6d9669764b-m878g[sponty-dispatcher]: at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
memedu-app/sponty-dispatcher-6d9669764b-m878g[sponty-dispatcher]: at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
memedu-app/sponty-dispatcher-6d9669764b-m878g[sponty-dispatcher]: at java.base/java.lang.Thread.run(Thread.java:833)
memedu-app/sponty-dispatcher-6d9669764b-m878g[sponty-dispatcher]: Caused by: java.lang.ExceptionInInitializerError: Exception java.lang.UnsatisfiedLinkError: ‘int io.netty.channel.unix.ErrorsStaticallyReferencedJniMethods.errorEHOSTUNREACH()’ [in thread “reactor-tcp-epoll-1”]

I am using the yugabyte demo helm wich was working with all my services using other versions persitence and projection

akka.persistence.r2dbc {
dialect = yugabyte

connection-factory {
driver = “postgres”
host = yb-tservers.yb-demo.svc.cluster.local
port = 5433
password = XXXX
user = XXXX
database = “XXXX”
}
}

when i use the other service by yugabyte: yb-tserver-service.yb-demo.svc.cluster.local

i got the error yb-tserver-service.yb-demo.svc.cluster.local/:5433

because the service only serves on port 5433, 9042 …

val AkkaVersion = “2.8.2”
val AkkaHttpVersion = “10.5.2”
val AkkaManagementVersion = “1.4.1”
val AkkaProjectionVersion = “1.4.2”
val AkkaPersistenceR2dbcVersion = “1.1.0”
val AkkaProjectionR2dbcVersion = “1.4.2”
val AkkaDiagnosticsVersion = “2.0.0”

dockerUpdateLatest := true
dockerBaseImage := “amd64/eclipse-temurin:17-jdk-centos7”
dockerUsername := sys.props.get(“docker.username”)
dockerRepository := sys.props.get(“docker.registry”)

Any Ideas?

Cause seems to be having different versions of the various Netty libraries on the classpath (Caused by: java.lang.UnsatisfiedLinkError: 'int io.netty.channel.unix.ErrorsStaticallyReferencedJniMethods.errorEHOSTUNREACH() · Issue #13447 · netty/netty · GitHub) so try to make sure you only have Netty jars of the same patch version in your project.

Yes Johan! Thanx that was the problem.