Opened 18 years ago
Closed 17 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 18 years ago by
| Description: | modified (diff) |
|---|---|
| Milestone: | undecided → 0.3.0 |
comment:2 Changed 18 years ago by
comment:3 Changed 18 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 17 years ago by
| Attachment: | incident-2009-02-02-152232-wbugxwy.flog.bz2 added |
|---|
comment:4 Changed 17 years ago by
| Milestone: | 0.3.3 → 0.4.0 |
|---|
comment:5 Changed 17 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.connecthas not been called yet, which seems unlikely because the only place aTubConnectoris created is inTub.getBrokerForTubRef, which calls connect() just after the constructor.