Jigasi quits randomly

Hi,

Jigasi quits most of the times randomly, so I decided to dive into the source code and see what is going on. After a few hours of searching I found that the reason it quits is because it randomly decides that no one wants the transcription. The function “isRequestingTranscription” in file Participant.java returns false. After printing some variables I see this:

  1. While it is working:
    ext variable has this value for example:
    org.jitsi.xmpp.extensions.jitsimeet.TranscriptionRequestExtension@21be7526
    and function ext.getText() returns true
  2. While it is not working
    ext variable has this value:
    org.jitsi.xmpp.extensions.jitsimeet.TranscriptionRequestExtension@1b00735d
    and function ext.getText() for some reason returns null, which causes the transcriber to quit.
    I was searching for this TranscriptionRequestExtension class but I can’t find it anywhere. Why the function getText is randomly returning null for no reason.

Thank you to anyone who tries to help!

Is it just my installation, or is this a general problem?

It is normal not all participants to request transcriptions:

But if all had turned it off the transcriber is stopped:

The logic is the following - one participant turns it on, all see that conference is being transcribed, and they turn on and off the captions in the ui, using the captions button. But if all turn it off, there is no need for the transcriber to continue so it is stopped.

So you say that even when one participant has its caption button turned on, the transcriber stops?

Yes, true. Usually I test with only one participant, the moderator. I, as moderator invite the transcriber, and even though I don’t turn it off, it quits randomly sometimes.

One thing worth mentioning, I invite it with ‘+’ button and URL “jitsi_meet_transcribe” and also I don’t have it as a hidden participant. One weird thing though, that most of the time, when I hover over the transcriber, it quits.

Have you tried using the captions button? Does it behave differently? The jitsi_meet_transcribe thing was the initial implementation and then was changed to have a button for it and this is the way to go as it has extra logic about captions and stuff …

The caption button does not invite the transcriber?! Are you talking about this button?

Should I implement the hidden domain thing for this to work?

How you had configured transcriber to connect to the xmpp server? Is it muc or component? It should be joining a brewery muc.

I configured it as step 4 in the tutorial:

  1. Configure external component in your XMPP server. If your server is Prosody: edit /etc/prosody/prosody.cfg.lua and append following lines to your config (assuming that subdomain is ‘callcontrol’ and domain ‘meet.jit.si’):
Component "callcontrol.meet.jit.si"
    component_secret = "topsecret"

So, instead, I should do it like this section describes?
Call control MUCs (brewery)

Yes.

@damencho I did what you told me, but it still quits. However, now there is a different error message:

Nov 08, 2019 3:05:09 PM org.jitsi.utils.logging.LoggerImpl log
WARNING: KeyID/keyPath missing, will try using appSecret
Nov 08, 2019 3:05:09 PM net.java.sip.communicator.util.Logger error
SEVERE: Jitsi-stats library failed to initialize with reason: Missing parameres and error message: appSecret missing for account: Jabber:jigasi@auth.MYDOMAIN

Also, when I start jigasi, a lot of these logs are in jigasi:

Nov 08, 2019 3:04:25 PM net.java.sip.communicator.util.Logger warn
WARNING: Missing resource for key: service.gui.NOT_IN_CONTACT_LIST_GROUP_NAME

and also this error in Prosody

Nov 08 15:05:06 bosh30b41115-3e24-495d-8d40-b203174e43ff warn  rid too large (means a request was lost). Last rid: 3964445746118715 New rid: 3964445746118717

This is my configuration:

net.java.sip.communicator.impl.protocol.jabber.acc-xmpp-1=acc-xmpp-1
net.java.sip.communicator.impl.protocol.jabber.acc-xmpp-1.ACCOUNT_UID=Jabber:jigasi@auth.my_domain
net.java.sip.communicator.impl.protocol.jabber.acc-xmpp-1.USER_ID=jigasi@auth.my_domain
net.java.sip.communicator.impl.protocol.jabber.acc-xmpp-1.IS_SERVER_OVERRIDDEN=true
net.java.sip.communicator.impl.protocol.jabber.acc-xmpp-1.SERVER_ADDRESS=172.17.0.3
net.java.sip.communicator.impl.protocol.jabber.acc-xmpp-1.SERVER_PORT=5222
net.java.sip.communicator.impl.protocol.jabber.acc-xmpp-1.BOSH_URL=https://my_domain/http-bind
net.java.sip.communicator.impl.protocol.jabber.acc-xmpp-1.ALLOW_NON_SECURE=true
#base64
net.java.sip.communicator.impl.protocol.jabber.acc-xmpp-1.PASSWORD=my_password_in_base_64
net.java.sip.communicator.impl.protocol.jabber.acc-xmpp-1.RESOURCE_PRIORITY=30
net.java.sip.communicator.impl.protocol.jabber.acc-xmpp-1.KEEP_ALIVE_METHOD=XEP-0199
net.java.sip.communicator.impl.protocol.jabber.acc-xmpp-1.KEEP_ALIVE_INTERVAL=30
net.java.sip.communicator.impl.protocol.jabber.acc-xmpp-1.CALLING_DISABLED=true
net.java.sip.communicator.impl.protocol.jabber.acc-xmpp-1.JINGLE_NODES_ENABLED=false
net.java.sip.communicator.impl.protocol.jabber.acc-xmpp-1.IS_CARBON_DISABLED=true
net.java.sip.communicator.impl.protocol.jabber.acc-xmpp-1.IS_USE_ICE=true
net.java.sip.communicator.impl.protocol.jabber.acc-xmpp-1.IS_ACCOUNT_DISABLED=false
net.java.sip.communicator.impl.protocol.jabber.acc-xmpp-1.IS_PREFERRED_PROTOCOL=false
net.java.sip.communicator.impl.protocol.jabber.acc-xmpp-1.AUTO_DISCOVER_JINGLE_NODES=false
net.java.sip.communicator.impl.protocol.jabber.acc-xmpp-1.PROTOCOL=Jabber
net.java.sip.communicator.impl.protocol.jabber.acc-xmpp-1.IS_USE_UPNP=false
net.java.sip.communicator.impl.protocol.jabber.acc-xmpp-1.IM_DISABLED=false
net.java.sip.communicator.impl.protocol.jabber.acc-xmpp-1.SERVER_STORED_INFO_DISABLED=true
net.java.sip.communicator.impl.protocol.jabber.acc-xmpp-1.IS_FILE_TRANSFER_DISABLED=true

net.java.sip.communicator.impl.protocol.jabber.acc-xmpp-1.BOSH_URL_PATTERN=https://{host}{subdomain}/http-bind?room={roomName}
net.java.sip.communicator.impl.protocol.jabber.acc-xmpp-1.DOMAIN_BASE=my_domain
net.java.sip.communicator.impl.protocol.jabber.acc-xmpp-1.BREWERY=JigasiBrewery@internal.auth.my_domain

In prosody.cfg.lua I used the same MUC that I had for Jibri. Also, I registered a user in prosody like this:
prosodyctl register jigasi auth.my_domain my_password

You are using JigasiBrewery, not jibri.

The logs you shared you can ignore. Can you maybe share your jigasi logs when this happens?

@damencho yes, but I used the same component, this one:

Component "internal.auth.joe.joetest.de" "muc"
      modules_enabled = {
            "ping";
      }
      storage = "null"
      muc_room_cache_size = 1000

like this in sip-communicator.properties:

net.java.sip.communicator.impl.protocol.jabber.acc1.BREWERY=JigasiBrewery@internal.auth.joe.joetest.de

and, yes here are the logs for jigasi:
jigasi_logs.txt (63.9 KB)

And here are jicofo logs:
jicofo_logs.txt (35.2 KB)

Jicofo 2019-11-08 16:37:21.830 INFO: [86] org.jitsi.jicofo.jigasi.TranscriberManager.log() detected transcription status being turned off.

It detects that the first participant had turned off captions.

One more test, when this happen open the javascript console in the browser you are in and execute APP.conference.saveLogs() and send that again with jigasi and jicofo logs.
This seems like a bug if you haven’t pressed the captions button to turn captions off.

Ah, a stupid mistake by my side. Until now, I did not have the transcriber as a hidden participant, so to kick it out, I just would go to the participant component, in the bottom right and press “Kick out”, and I thought this was the only way to kick it out. But, now that I made it join as hidden component, I understand that you made it so that when pressing the CC button again, it kicks out the transcriber. This must have happened always, because I made a chat-like panel on the right side of the screen, and to kick the transcriber out, I always had to press CC again, so that the chat-like panel becomes hidden, and then interact with bottom right components. That’s why “hovering over it was quitting”, because it just took time to process the “stop transcriber” function. I apologize for taking your time and thank you very much for helping!