Open SchoolGuy opened 4 years ago
I think I've seen strange errors like this before (NoClassDef for a class which is obviously there) and I would try:
@bbaldino Thanks for the quick response. I will try tomorrow morning and see if it helps!
Okay I tried now to do a mvn clean
and then compiled again. After that I checked if the logging directory exists. Both actions did not change anything as far as I could tell.
What is weird is that we first get the java.lang.ExceptionInInitializerError
and THEN when trying to start the recording a second time the NoClassDef
error. When restarting via systemctl
we also reset the behavior.
So I now tried to upgrade the Selenium POM to 3.141.59
which didn't made a difference. I will now do a downgrade of our Chrome to V78 which you are using fixed in your Docker Container (we took the latest stable). After that I am out of ideas.
I more and more get the feeling that this is not Jibri related but rather a Selenium/Chrome problem. We don't have static
initilizers as far as I can tell (maybe something autogenerated) in Jibri and thus the root-cause of this for me unknown...
Hm. What hash are you using? Tip of master?
EDIT: Oops, just saw you tried tip of master. I would definitely use Java 8 though.
@bbaldino That is the new current setup. I downgraded from 11 to 1.8 yesterday evening.
EDIT: I upgraded to Git HEAD this morning after some tries with Tag 8.0.
Can you list out the exact steps you're using to checkout and build? I can try and repro.
Leap 15.2
zypper ar https://download.opensuse.org/repositories/home:/SchoolGuy:/jitsi/openSUSE_Leap_15.2/home:SchoolGuy:jitsi.repo
zypper in nginx prosody lua51-zlib jitsi-meet jitsi-videobridge jitsi-jicofo
In some minutes I will push a more extensive commit to this PR: https://github.com/jitsi/handbook/pull/82
This is our package: https://build.opensuse.org/package/show/home:SchoolGuy:jitsi/Jitsi-Jibri
Regarding Source installation: Take the maven_repo.tar,gz
from the package and do the following:
zypper ar http://dl.google.com/linux/chrome/rpm/stable/x86_64 Google-Chrome
wget https://dl.google.com/linux/linux_signing_key.pub
rpm --import linux_signing_key.pub
zypper ref -f
zypper in alsa ffmpeg google-chrome-stable chromedriver xf86-video-dummy xf86-input-void xdotool icewm alsa-utils
git clone git@github.com:jitsi/jibri.git
maven_repo.tar.gz
mvn package -DskipTests -Dassembly.skipAssembly=false
mkdir /usr/share/jitsi/jibri
cp resources/debian-package/opt/jitsi/jibri/* /usr/share/jitsi/jibri
cp target/jibri-8.0-SNAPSHOT-jar-with-dependencies.jar /usr/share/jitis/jibri/jibri.jar
Then we copy the configs from an internal repo to the destinations along with the service files which are identical to your upstream ones.
jitsi-jiofo.conf
JICOFO_HOST=localhost
# sets the XMPP domain (default: none)
JICOFO_HOSTNAME=meet2.opensuse.org
# sets the secret used to authenticate as an XMPP component
JICOFO_SECRET=YOURSECRET3
# sets the port to use for the XMPP component connection
JICOFO_PORT=5347
# sets the XMPP domain name to use for XMPP user logins
JICOFO_AUTH_DOMAIN=auth.meet2.opensuse.org
# sets the username to use for XMPP user logins
JICOFO_AUTH_USER=focus
# sets the password to use for XMPP user logins
JICOFO_AUTH_PASSWORD=YOURSECRET3
# extra options to pass to the jicofo daemon
JICOFO_OPTS=""
# adds java system props that are passed to jicofo (default are for home and logging config file)
JAVA_SYS_PROPS="-Xmx3072m\
-Dnet.java.sip.communicator.SC_HOME_DIR_LOCATION=/etc/jitsi\
-Dnet.java.sip.communicator.SC_HOME_DIR_NAME=jicofo\
-Dnet.java.sip.communicator.SC_LOG_DIR_LOCATION=/var/log/jitsi-jicofo\
-Djava.util.logging.config.file=/etc/jitsi/jicofo/logging.properties"
jicofo sip-communicator.properties
org.jitsi.jicofo.BRIDGE_MUC=JvbBrewery@internal.auth.meet2.opensuse.org
org.jitsi.jicofo.SHORT_ID=55555
# workaround for certificate errors
org.jitsi.jicofo.ALWAYS_TRUST_MODE_ENABLED=true
org.jitsi.jicofo.jibri.BREWERY=JibriBrewery@internal.auth.meet2.opensuse.org
org.jitsi.jicofo.jibri.PENDING_TIMEOUT=90
jibri.conf
jibri {
// A unique identifier for this Jibri
// TODO: eventually this will be required with no default
id = "8ece92a3-1736-4f03-8e75-d82897af849e"
// Whether or not Jibri should return to idle state after handling
// (successfully or unsuccessfully) a request. A value of 'true'
// here means that a Jibri will NOT return back to the IDLE state
// and will need to be restarted in order to be used again.
single-use-mode = false
api {
http {
external-api-port = 2222
internal-api-port = 3333
}
xmpp {
// See example_xmpp_envs.conf for an example of what is expected here
environments = [
{
// A user-friendly name for this environment
name = "Luigi"
// A list of XMPP server hosts to which we'll connect
xmpp-server-hosts = [ "localhost" ]
// The base XMPP domain
xmpp-domain = "meet2.opensuse.org"
// The MUC we'll join to announce our presence for
// recording and streaming services
control-muc {
domain = "internal.auth.meet2.opensuse.org"
room-name = "JibriBrewery"
nickname = "1b47ce47-98a3-4769-949d-2326f3260390"
}
// The login information for the control MUC
control-login {
domain = "recorder.meet2.opensuse.org"
username = "recorder"
password = "YOURSECRET3"
}
// An (optional) MUC configuration where we'll
// join to announce SIP gateway services
//sip-control-muc {
// domain = "domain"
// room-name = "room-name"
// nickname = "nickname"
//}
// The login information the selenium web client will use
call-login {
domain = "recorder.meet2.opensuse.org"
username = "recorder"
password = "YOURSECRET3"
}
// The value we'll strip from the room JID domain to derive
// the call URL
strip-from-room-domain = "conference."
// How long Jibri sessions will be allowed to last before
// they are stopped. A value of 0 allows them to go on
// indefinitely
usage-timeout = 1 hour
// Whether or not we'll automatically trust any cert on
// this XMPP domain
trust-all-xmpp-certs = true
}
]
}
}
recording {
recordings-directory = "/srv/recordings"
# TODO: make this an optional param and remove the default
finalize-script = "/usr/share/jitsi-jibri/finalize_recording.sh"
}
chrome {
// The flags which will be passed to chromium when launching
flags = [
"--use-fake-ui-for-media-stream",
"--start-maximized",
"--kiosk",
"--enabled",
"--disable-infobars",
"--autoplay-policy=no-user-gesture-required"
]
}
stats {
enable-stats-d = true
}
// A list of subscribers interested in receicing webhook events
webhook-subscribers = []
}
Passwords obscured obviously
Rest is copy paste from you guys.
This Issue tracker is only for reporting bugs and tracking code related issues.
Before posting, please make sure you check community.jitsi.org to see if the same or similar bugs have already been discussed. General questions, installation help, and feature requests can also be posted to community.jitsi.org.
Description
When I click on "Start recording" in the Jitsi-Meet UI I get a "Preparing recording meeting..." forever.
Current behavior
Expected Behavior
Recording works.
Possible Solution
I saw in the forums a lot of issues around Selenium. The error reporting around this is vague and could be improved. Both stacktraces we got above are not telling us anything.
I also did put in the first line of
init
inJibriSelenium
aLogger.info()
but this is not put out anywhere. Thus I guess we fail before reaching it.My wild guess is that this is caused by the follwing line:
private val stateMachine = SeleniumStateMachine()
Also to verify that this is working I put in for Selenium the following Java System Property:
-Dwebdriver.chrome.driver="/usr/local/bin/chromedriver"
it made no difference, the stacktrace stays the same.When monitoring with htop I can see that chrome is never starting up as well as I never see the Selenium Server being started.
Steps to reproduce
We followed the install guide in the README. I was able to reproduce this both with Java 1.8 and the Jibri Tag 8.0 (old config) and Java 11 on Git HEAD (new config).
Environment details
OS: openSUSE Leap 15.2
Java: