socketio / socket.io-client-java

Full-featured Socket.IO Client Library for Java, which is compatible with Socket.IO v1.0 and later.
https://socketio.github.io/socket.io-client-java/installation.html
Other
5.32k stars 972 forks source link

Fatal Exception: java.util.ConcurrentModificationException #710

Open malik082009 opened 2 years ago

malik082009 commented 2 years ago

I am getting the below mentioned error frequently while I am using in the application and I am using the version I face this issue in the middle of the app. don't know why.

Fatal Exception: java.util.ConcurrentModificationException at java.util.LinkedHashMap$LinkedHashIterator.nextNode(LinkedHashMap.java:757) at java.util.LinkedHashMap$LinkedKeyIterator.next(LinkedHashMap.java:780) at io.socket.hasbinary.HasBinary._hasBinary(HasBinary.java:47) at io.socket.hasbinary.HasBinary._hasBinary(HasBinary.java:39) at io.socket.hasbinary.HasBinary.hasBinary(HasBinary.java:18) at io.socket.parser.IOParser$Encoder.encode(IOParser.java:27) at io.socket.client.Manager.packet(Manager.java:412) at io.socket.client.Socket.packet(Socket.java:230) at io.socket.client.Socket.access$1000(Socket.java:18) at io.socket.client.Socket$6.run(Socket.java:219) at io.socket.thread.EventThread.exec(EventThread.java:55) at io.socket.client.Socket.emit(Socket.java:198) at io.socket.client.Socket$5.run(Socket.java:183) at io.socket.thread.EventThread$2.run(EventThread.java:80) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641) at java.lang.Thread.run(Thread.java:923)

I am using: implementation('io.socket:socket.io-client:2.0.1') { exclude group: 'org.json', module: 'json' }

Platform:

Same issue reported here

liangyuanpeng commented 2 years ago

Have some code to reproduce it will be great. or some step to reproduce it.

seven4pl commented 1 year ago

Same here...

For example: sending 300 messages (offline) with AckWithTimeout (5000 ms), and then after eg. 2 seconds emit new message.

Exception java.util.ConcurrentModificationException: at java.util.LinkedList$ListItr.checkForComodification (LinkedList.java:970) at java.util.LinkedList$ListItr.next (LinkedList.java:892) at io.socket.client.Socket$6$1.run (Socket.java:232) at java.util.TimerThread.mainLoop (Timer.java:563) at java.util.TimerThread.run (Timer.java:513)

seven4pl commented 1 year ago

@liangyuanpeng temporary solved by adding synchronized - Socket.java:

synchronized(sendBuffer){
          // remove the packet from the buffer (if applicable)
          Iterator<Packet<JSONArray>> iterator = sendBuffer.iterator();
          while (iterator.hasNext()) {
              if (iterator.next().id == ackId) {
                  iterator.remove();
              }
          }
        }