Skip to content

Commit e7a316c

Browse files
committed
fix(whisper): Fixes synchronization issue.
Sending audio while closing: 2025-05-12 19:52:17.247 SEVERE: [49476] WhisperWebsocket.onClose#280: [ctx=1747078888901486844622] Websocket closed: 1012 reason:null 2025-05-12 19:52:17.248 INFO: [205] org.eclipse.jetty.util.component.Graceful.shutdown: Shutdown WebSocketClient@15bc7f4b[coreClient=WebSocketCoreClient@2796144a{STARTED},openSessions.size=1] 2025-05-12 19:52:18.009 SEVERE: [49537] net.java.sip.communicator.util.UtilActivator.uncaughtException: An uncaught exception occurred in thread=Thread[pool-51-thread-1,5,main], and message was: Cannot invoke "java.util.Map.containsKey(Object)" because "this.participants" is null java.lang.NullPointerException: Cannot invoke "java.util.Map.containsKey(Object)" because "this.participants" is null at org.jitsi.jigasi.transcription.WhisperWebsocket.addParticipantIfNotExists(WhisperWebsocket.java:522) at org.jitsi.jigasi.transcription.WhisperWebsocket.addListener(WhisperWebsocket.java:533) at org.jitsi.jigasi.transcription.WhisperTranscriptionService$WhisperWebsocketStreamingSession.addTranscriptionListener(WhisperTranscriptionService.java:193) at org.jitsi.jigasi.transcription.Participant.lambda$sendRequest$1(Participant.java:717) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) at java.base/java.lang.Thread.run(Thread.java:840) 2025-05-12 19:52:19.470 SEVERE: [49680] net.java.sip.communicator.util.UtilActivator.uncaughtException: An uncaught exception occurred in thread=Thread[p
1 parent db1f2ac commit e7a316c

File tree

1 file changed

+7
-7
lines changed

1 file changed

+7
-7
lines changed

src/main/java/org/jitsi/jigasi/transcription/WhisperWebsocket.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -260,7 +260,7 @@ private synchronized void reconnect()
260260
}
261261

262262
@OnWebSocketClose
263-
public void onClose(int statusCode, String reason)
263+
public synchronized void onClose(int statusCode, String reason)
264264
{
265265
logger.error("Websocket closed: " + statusCode + " reason:" + reason
266266
+ " isRunning: " + isRunning() + " isOpen:" + (wsSession != null && wsSession.isOpen()));
@@ -438,14 +438,14 @@ public void disconnectParticipant(String participantId, Consumer<Boolean> callba
438438

439439
private void disconnectParticipantInternal(String participantId, Consumer<Boolean> callback)
440440
{
441-
if (ended() && !isRunning())
442-
{
443-
callback.accept(true);
444-
return;
445-
}
446-
447441
synchronized (this)
448442
{
443+
if (ended() && !isRunning())
444+
{
445+
callback.accept(true);
446+
return;
447+
}
448+
449449
if (participants.containsKey(participantId))
450450
{
451451
participants.remove(participantId);

0 commit comments

Comments
 (0)