OpenVidu / openvidu

OpenVidu Platform main repository
https://openvidu.io
Apache License 2.0
1.87k stars 463 forks source link

Video freeze issue when someone leaves the session #778

Open seantaylorgmi opened 1 year ago

seantaylorgmi commented 1 year ago

Hi Team We are facing video freeze issue when someone leaves session. This issue happens rarely, when there are more than 3 members in session.

Scenario Consider 4 users A, B, C and D join a video session. User D leaves the session by clicking leave session button. From user D point of view - he leaves the session without any issues. But for other 3 users point of view - they can still see user D with his last picture of his video freezed. After 15 sec to 20 sec the last picture in user D video turns black and stays there for ever. But when we check active users in session using /openvidu/api/sessions API, we can not see user D data in session. Now User C leaves the same session and joins same session again. Now the user C can not see user D, but user A and B who are still in session can see user D. Note: when user leaves and joins same session the freezed user is not there. But for users already in session from begining they can see freezed user.

Is there any probability user D data is stuck in local session or local cache that is causing this issue ? Is there any function in openvidu-angular or openvidu-browser to clear this cache issue ?

We are using openvidu 2.23.0. We could find the same issue in openvidu 2.24.0 too. This issue happens for multiple peoples at same session too. Once this issue start to occur for a user, it starts to occur often. But after restarting openvidu docker server, it works fine for sometimes. But after sometime same issue occurs.

We are getting below errors in consoles and docker logs during this issue

[ERROR] 2022-12-16 14:54`:29,207 [SessionHandler-htphelpm00ttp6q0c3rs85hlsi-e74-t0] org.kurento.jsonrpc.internal.JsonRpcHandlerManager - Exception while processing request {"id":203,"method":"leaveRoom","params":{},"jsonrpc":"2.0"}
main.js:1 leaveRoom error: {"code":-1,"message":"java.lang.NullPointerException:null","data":"java.lang.NullPointerException\n\tat io.openvidu.server.cdr.CallDetailRecord.stopSubscriber(CallDetailRecord.java:151)\n\tat io.openvidu.server.kurento.core.KurentoParticipant.releaseSubscriberEndpoint(KurentoParticipant.java:595)\n\tat io.openvidu.server.kurento.core.KurentoParticipant.close(KurentoParticipant.java:376)\n\tat io.openvidu.server.kurento.core.KurentoSession.leave(KurentoSession.java:130)\n\tat io.openvidu.server.kurento.core.KurentoSessionManager.leaveRoom(KurentoSessionManager.java:224)\n\tat io.openvidu.server.rpc.RpcHandler.leaveRoom(RpcHandler.java:338)\n\tat io.openvidu.server.rpc.RpcHandler.handleRequest(RpcHandler.java:130)\n\tat org.kurento.jsonrpc.internal.JsonRpcHandlerManager.handleRequest(JsonRpcHandlerManager.java:142)\n\tat org.kurento.jsonrpc.internal.server.ProtocolManager$3.run(ProtocolManager.java:218)\n\tat java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)\n\tat java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)\n\tat java.base/java.lang.Thread.run(Thread.java:829)\n","requestTime":1671628819547}
WebRTC: ICE failed, add a STUN server and see about:webrtc for more details
IceConnectionState of RTCPeerConnection d95d800b-8106-46c2-b523-19fd7693b454 (str_CAM_JPXg_con_100042) to "failed"
ERROR:java.lang.NullPointerException:null in Request: method:leaveRoom params:{} request:undefined main.js:1:2714970
ERROR DATA:"java.lang.NullPointerException\n\tat io.openvidu.server.cdr.CallDetailRecord.stopSubscriber(CallDetailRecord.java:151)\n\tat io.openvidu.server.kurento.core.KurentoParticipant.releaseSubscriberEndpoint(KurentoParticipant.java:595)\n\tat io.openvidu.server.kurento.core.KurentoParticipant.cancelReceivingMedia(KurentoParticipant.java:336)\n\tat io.openvidu.server.kurento.core.KurentoSession.removeParticipant(KurentoSession.java:186)\n\tat io.openvidu.server.kurento.core.KurentoSession.leave(KurentoSession.java:129)\n\tat io.openvidu.server.kurento.core.KurentoSessionManager.leaveRoom(KurentoSessionManager.java:224)\n\tat io.openvidu.server.rpc.RpcHandler.leaveRoom(RpcHandler.java:338)\n\tat io.openvidu.server.rpc.RpcHandler.handleRequest(RpcHandler.java:130)\n\tat org.kurento.jsonrpc.internal.JsonRpcHandlerManager.handleRequest(JsonRpcHandlerManager.java:142)\n\tat org.kurento.jsonrpc.internal.server.ProtocolManager$3.run(ProtocolManager.java:218)\n\tat java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)\n\tat java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)\n\tat java.base/java.lang.Thread.run(Thread.java:829)\n" main.js:1:2714970
leaveRoom error: {"code":-1,"message":"java.lang.NullPointerException:null","data":"java.lang.NullPointerException\n\tat io.openvidu.server.cdr.CallDetailRecord.stopSubscriber(CallDetailRecord.java:151)\n\tat io.openvidu.server.kurento.core.KurentoParticipant.releaseSubscriberEndpoint(KurentoParticipant.java:595)\n\tat io.openvidu.server.kurento.core.KurentoParticipant.cancelReceivingMedia(KurentoParticipant.java:336)\n\tat io.openvidu.server.kurento.core.KurentoSession.removeParticipant(KurentoSession.java:186)\n\tat io.openvidu.server.kurento.core.KurentoSession.leave(KurentoSession.java:129)\n\tat io.openvidu.server.kurento.core.KurentoSessionManager.leaveRoom(KurentoSessionManager.java:224)\n\tat io.openvidu.server.rpc.RpcHandler.leaveRoom(RpcHandler.java:338)\n\tat io.openvidu.server.rpc.RpcHandler.handleRequest(RpcHandler.java:130)\n\tat org.kurento.jsonrpc.internal.JsonRpcHandlerManager.handleRequest(JsonRpcHandlerManager.java:142)\n\tat org.kurento.jsonrpc.internal.server.ProtocolManager$3.run(ProtocolManager.java:218)\n\tat java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)\n\tat java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)\n\tat java.base/java.lang.Thread.run(Thread.java:829)\n","requestTime":1671188405337}

Please let us know if you have any idea which is causing this issue or error.

Thank in advance

selinamitchell commented 1 year ago

+1

ReginaLisa commented 1 year ago

+1

richardkevinbox commented 1 year ago

+1

samkennardg commented 1 year ago

+1

skgith1 commented 1 year ago

+1

pabloFuente commented 1 year ago

We will research this issue

cruizba commented 1 year ago

@seantaylorgmi Could you answer these questions?:

That ICE error makes me think that the turn configuration is not reaching the browser or somehow it is not reachable. But it probably has nothing to do with the null pointer exception you are having.