Opened 16 years ago
Closed 15 years ago
#81 closed defect (fixed)
fix the WEIRD log message in Tub.connectorFinished
Reported by: | Brian Warner | Owned by: | |
---|---|---|---|
Priority: | major | Milestone: | 0.4.2 |
Component: | unknown | Version: | 0.2.5 |
Keywords: | Cc: |
Description (last modified by )
source:foolscap/pb.py@5d5860ccef21#L568 is a WEIRD-level log event that I see happening all the time. Because it's at the WEIRD level, it triggers Incidents, so I'd like to nail down why it is happening and fix it.
Attachments (1)
Change History (6)
comment:1 Changed 16 years ago by
Description: | modified (diff) |
---|---|
Milestone: | undecided → 0.3.0 |
comment:2 Changed 16 years ago by
comment:3 Changed 16 years ago by
Milestone: | 0.3.1 → 0.3.2 |
---|
Or, more likely, connectorFinished() is being called twice for the same connector. checkForIdle() is called from several different points, so that's the most likely culprit.
I've added some more logging to this, just to record which tubconnector is being dropped. The next time this happens in my tahoe tests, I should be able to track down the double-call.
Changed 16 years ago by
Attachment: | incident-2009-02-02-152232-wbugxwy.flog.bz2 added |
---|
comment:4 Changed 15 years ago by
Milestone: | 0.3.3 → 0.4.0 |
---|
comment:5 Changed 15 years ago by
Resolution: | → fixed |
---|---|
Status: | new → closed |
Resolved by [b9bc4a40679e86f2f15c407ec85ff4be5e6c6601]. I decided to ignore it, and remove the warning. I added code that was likely to cause a double-free anyways, and rather than spend a lot of time trying to avoid that, I just changed the code to be tolerant.
it looks like this is happening when two parallel connections are made to separate connection hints of the same remote target (one to 127.0.0.1, the other to an external IP address), and the 127.0.0.1 connection wins, and the other not-yet-established connection is abandoned.
This suggests that
TubConnector.connect
has not been called yet, which seems unlikely because the only place aTubConnector
is created is inTub.getBrokerForTubRef
, which calls connect() just after the constructor.