jitsi/ice4j

ConcurrentModificationException

flundermicha opened this issue · 2 comments

This happend to us:

java.util.ConcurrentModificationException
	at java.util.LinkedList$ListItr.checkForComodification(LinkedList.java:966)
	at java.util.LinkedList$ListItr.next(LinkedList.java:888)
	at org.ice4j.ice.Component.findRemoteCandidate(Component.java:982)
	at org.ice4j.ice.RemoteCandidate.findRelatedCandidate(RemoteCandidate.java:173)
	at org.ice4j.ice.RemoteCandidate.findRelatedCandidate(RemoteCandidate.java:29)
	at org.ice4j.ice.Candidate.getRelatedCandidate(Candidate.java:993)
	at org.ice4j.ice.Candidate.getRelatedAddress(Candidate.java:722)
	at org.ice4j.ice.Candidate.toString(Candidate.java:771)
	at java.lang.String.valueOf(String.java:2994)
	at java.lang.StringBuilder.append(StringBuilder.java:131)
	at org.ice4j.ice.CandidatePair.toString(CandidatePair.java:484)
	at java.lang.String.valueOf(String.java:2994)
	at java.lang.StringBuilder.append(StringBuilder.java:131)
	at org.ice4j.ice.Agent.triggerCheck(Agent.java:1761)
	at org.ice4j.ice.Agent.startConnectivityEstablishment(Agent.java:781)
	at org.jitsi.videobridge.transport.ice.IceTransport.startConnectivityEstablishment(IceTransport.kt:177)
	at org.jitsi.videobridge.Endpoint.setTransportInfo(Endpoint.java:1053)
	at org.jitsi.videobridge.shim.VideobridgeShim.handleColibriConferenceIQ(VideobridgeShim.java:422)
	at org.jitsi.videobridge.Videobridge.handleColibriConferenceIQ(Videobridge.java:424)
	at org.jitsi.videobridge.xmpp.XmppCommon.handleIQRequest(XmppCommon.java:228)
	at org.jitsi.videobridge.xmpp.XmppCommon.handleIQInternal(XmppCommon.java:179)
	at org.jitsi.videobridge.xmpp.XmppCommon.handleIQ(XmppCommon.java:150)
	at org.jitsi.videobridge.xmpp.ClientConnectionImpl.handleIq(ClientConnectionImpl.java:110)
	at org.jitsi.xmpp.mucclient.IQListener.handleIq(IQListener.java:50)
	at org.jitsi.xmpp.mucclient.MucClient.handleIq(MucClient.java:566)
	at org.jitsi.xmpp.mucclient.MucClient.access$700(MucClient.java:50)
	at org.jitsi.xmpp.mucclient.MucClient$2.handleIQRequest(MucClient.java:530)
	at org.jivesoftware.smack.AbstractXMPPConnection$4.run(AbstractXMPPConnection.java:1188)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at java.lang.Thread.run(Thread.java:748)

inside a docker container running the image jitsi/jvb:stable-4857

I tried to checkout the ice4j version that that version of the bridge uses, but the code doesn't match up with your stacktrace. @saghul does that JVB image correspond to the stable/jitsi-meet_4857 tag? (Also, this version of the bridge is now 3 months old, is this the most up-to-date image?)

ice4j should probably make sure this doesn't happen, but I am wondering what triggered it. Does the bridge use sync or async IQ handling? Prior to jitsi/jitsi-videobridge#1403 the default is to use async, which might be what triggered the exception