Opened 6 years ago

Closed 3 years ago

#978 closed defect (wontfix)

Interrupted while write queue was full

Reported by: Zlatin Balevsky Owned by:
Priority: maintenance Milestone:
Component: streaming Version: 0.9.6
Keywords: Cc: zab@…
Parent Tickets: Sensitive: no

Description

May just be race with closing the session, or related to snark

07:13:23:46:41:422 WARN  [D@tIUXbr 232] p.client.streaming.PacketQueue: Unable to send the packet ISL8NA==~sNBYg==: #1391  CLOSE DELAY 0 SIG ACK 268 NACK 266 267 rtt 60000 from 46Ry to MjZz
net.i2p.client.I2PSessionException: Interrupted while write queue was full
        at net.i2p.client.I2PSessionImpl.sendMessage(I2PSessionImpl.java:716)
        at net.i2p.client.I2CPMessageProducer.sendMessage(I2CPMessageProducer.java:183)
        at net.i2p.client.I2PSessionMuxedImpl.sendNoEffort(I2PSessionMuxedImpl.java:266)
        at net.i2p.client.I2PSessionMuxedImpl.sendMessage(I2PSessionMuxedImpl.java:252)
        at net.i2p.client.streaming.PacketQueue.enqueue(PacketQueue.java:127)
        at net.i2p.client.streaming.Connection.sendPacket(Connection.java:383)
        at net.i2p.client.streaming.ConnectionDataReceiver.send(ConnectionDataReceiver.java:132)
        at net.i2p.client.streaming.ConnectionDataReceiver.send(ConnectionDataReceiver.java:117)
        at net.i2p.client.streaming.ConnectionDataReceiver.writeData(ConnectionDataReceiver.java:93)
        at net.i2p.client.streaming.MessageOutputStream.flush(MessageOutputStream.java:328)
        at net.i2p.client.streaming.MessageOutputStream.close(MessageOutputStream.java:389)
        at java.io.FilterOutputStream.close(FilterOutputStream.java:143)
        at org.klomp.snark.PeerConnectionOut.disconnect(PeerConnectionOut.java:222)
        at org.klomp.snark.Peer.disconnect(Peer.java:481)
        at org.klomp.snark.PeerConnectionOut.run(PeerConnectionOut.java:202)
        at java.lang.Thread.run(Thread.java:680)
        at net.i2p.util.I2PThread.run(I2PThread.java:85)
Caused by: java.lang.InterruptedException
        at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireInterruptibly(AbstractQueuedSynchronizer.java:1199)
        at java.util.concurrent.locks.ReentrantLock.lockInterruptibly(ReentrantLock.java:312)
        at java.util.concurrent.LinkedBlockingQueue.offer(LinkedBlockingQueue.java:336)
        at net.i2p.router.client.I2CPMessageQueueImpl.offer(I2CPMessageQueueImpl.java:43)
        at net.i2p.client.I2PSessionImpl.sendMessage(I2PSessionImpl.java:713)
        ... 16 more
07:13:23:46:41:423 WARN  [D@tIUXbr 232] p.client.streaming.PacketQueue: Send failed for ISL8NA==~sNBYg==: #1391  CLOSE DELAY 0 SIG ACK 268 NACK 266 267 rtt 60000 from 46Ry to MjZz
07:13:23:57:32:045 WARN  [[I2PSnark]: ] client.streaming.PacketHandler: Received additional packet w/o SendStreamID after the syn on [Connection vtDBrw==/Vgr4Pw== 
from MjZz up 10s wsize: 2 cwin: 2 rtt: 8024 rto: 20224 unacked out: 2 unacked in: 0 sent: 3 rcvd: 2 ackThru 0 maxWin 128 MTU 1730]: AAAAAA==Vgr4Pw==: #0  DELAY 1000 FROM MS 1730 SIG SYN ACK -1

Subtickets

Change History (5)

comment:1 Changed 6 years ago by zzz

Interesting…

comment:2 Changed 6 years ago by zzz

Status: newinfoneeded_new

is this a bug at all? Or is that the way java works, that a nonblocking offer() turns into an interrupt of some other thread that's waiting? I don't really get it.

comment:3 Changed 6 years ago by Zlatin Balevsky

Status: infoneeded_newnew

No, internally the data structures use LockSupport.[un]Park(). Interrupt()-ing is never used in "normal" operation

comment:4 Changed 4 years ago by str4d

Status: newopen

comment:5 Changed 3 years ago by zzz

Resolution: wontfix
Status: openclosed

This is probably due to a tunnel/session shutdown. We may be doing the interrupt() ourselves, i2psnark does have several calls, but it's too hard to track down. The user will never see this as it's a WARN level. Maybe not-a-bug but definitely wont-fix.

Note: See TracTickets for help on using tickets.