jitsi / jitsi-videobridge

Jitsi Videobridge is a WebRTC compatible video router or SFU that lets build highly scalable video conferencing infrastructure (i.e., up to hundreds of conferences per server).
https://jitsi.org/jitsi-videobridge
Apache License 2.0
2.91k stars 992 forks source link

JVB java error on Debian 10 ppc64el #1246

Open kop316 opened 4 years ago

kop316 commented 4 years ago

Description


The normal Jitsi Meet install does not allow audio or video to happen on a Debian 10 ppc64el install

Current behavior


The jvb.log has the following health check failure:

Java.lang.NoClassDefFoundError: Could not initialize class org.jitsi.videobridge.sctp.SctpManager at org.jitsi.videobridge.Endpoint.createSctpConnection(Endpoint.java:868) at org.jitsi.videobridge.health.Health.check(Health.java:77) at org.jitsi.videobridge.health.Health.performCheck(Health.java:211) at org.jitsi.health.AbstractHealthCheckService.run(AbstractHealthCheckService.kt:144) at org.jitsi.utils.concurrent.RecurringRunnableExecutor.run(RecurringRunnableExecutor.java:216) at org.jitsi.utils.concurrent.RecurringRunnableExecutor.runInThread(RecurringRunnableExecutor.java:292) at org.jitsi.utils.concurrent.RecurringRunnableExecutor.access000(RecurringRunnableExecutor.java:36)
atorg.jitsi.utils.concurrent.RecurringRunnableExecutor000(RecurringRunnableExecutor.java:36)
at org.jitsi.utils.concurrent.RecurringRunnableExecutor000(RecurringRunnableExecutor.java:36)
atorg.jitsi.utils.concurrent.RecurringRunnableExecutor1.run(RecurringRunnableExecutor.java:328)

Possible Solution


I am attempting to recompile jitsi-videobridge to see if a recompile on a native system will fix it.

Environment details


Debian 10 on ppc64el on a POWER9 system, with apache2 installed and a Let's encrypt Certificate.

fitzsim commented 11 months ago

I filed a jitsi-sctp issue requesting a ppc64le (aka ppc64el) build for jitsi-sctp. SCTP support does work on ppc64le if you build the shared object file yourself then include it at the correct path within the correct jar.

fitzsim commented 11 months ago

jitsi-srtp-1.1-12-ga64adcc.jar already contains ppc64le binaries:

linux-ppc64el/libjitsisrtp_1.1.so linux-ppc64el/libjitsisrtp_3.so

I needed to rename the linux-ppc64el directory within the jar file to linux-ppc64le, otherwise I would get:

JVB 2023-12-06 10:26:03.798 WARNING: [112] JitsiOpenSslProvider.<clinit>#66: Unable to load jitsisrtp java.lang.UnsatisfiedLinkError: no jitsisrtp_3 in java.library.path: /usr/java/packages/lib:/usr/lib/powerpc64le-linux-gnu/jni:/lib/powerpc64le-linux-gnu:/usr/lib/powerpc64le-linux-gnu:/usr/lib/jni:/lib:/usr/lib

After renaming the directory, I get:

JVB 2023-12-06 10:28:16.501 INFO: [109] JitsiOpenSslProvider.<clinit>#52: jitsisrtp successfully loaded for OpenSSL 3

and everything seems to work fine.

Overall, it seems like ppc64le support for Jitsi is really close to working. Just this folder naming issue -- maybe some systems do need linux-ppc64el, so a second linux-ppc64le directory could be added for compatibility? -- and the jitsi-sctp issue I filed need to be addressed.

It would also be nice if jitsi-videobridge provided linux-ppc64 binaries for big endian systems.

bgrozev commented 11 months ago

We don't use ppc, so we're unlikely to implement the suggested changes, but contributions are welcome

fitzsim commented 11 months ago

We don't use ppc, so we're unlikely to implement the suggested changes, but contributions are welcome

OK, I just posted https://github.com/jitsi/jitsi-srtp/pull/49. I will work on a similar patch for jitsi-sctp.

fitzsim commented 11 months ago

We don't use ppc, so we're unlikely to implement the suggested changes, but contributions are welcome

OK, I just posted jitsi/jitsi-srtp#49. I will work on a similar patch for jitsi-sctp.

Done, here is the pull request for jitsi-sctp: https://github.com/jitsi/jitsi-sctp/pull/20.

fitzsim commented 4 months ago

jitsi-srtp and jitsi-sctp are in good shape on ppc64le now.

I noticed that the new jitsi/dcsctp4j does not have ppc64le support yet, so I filed https://github.com/jitsi/dcsctp4j/issues/6.

bgrozev commented 4 months ago

@fitzsim @kop316 be aware that since #2181 dcsctp is used by default

fitzsim commented 4 months ago

@fitzsim @kop316 be aware that since #2181 dcsctp is used by default

OK, I will probably be working on my ppc64le Jitsi configuration this week. If I can configure usrsctp to work on current nightly then I will report back here and close this issue.

tpearson-ssc commented 3 months ago

Just hit this again due to the dcsctp change. TEMPORARY workaround is to edit /etc/jitsi/videobridge/jvb.conf as follows:

videobridge {
    <other config arrays>
    sctp {
        use-usrsctp = true
    }
}
fitzsim commented 1 month ago

I just did a fresh install of jitsi-videobridge2 2.3-173-g7245c6a7-1 and can confirm the workaround is now automatically installed on ppc64le. I think this issue can be closed now. Thank you for the help!

I will watch for progress on https://github.com/jitsi/dcsctp4j/issues/6 and test that if anything becomes available.