[tahoe-lafs-trac-stream] [tahoe-lafs] #1823: is this server telling me over foolscap that its foolscap connection to me just broke?

tahoe-lafs trac at tahoe-lafs.org
Tue Oct 9 20:49:09 UTC 2012


#1823: is this server telling me over foolscap that its foolscap connection to me
just broke?
------------------------------+-----------------------
     Reporter:  zooko         |      Owner:
         Type:  defect        |     Status:  new
     Priority:  normal        |  Milestone:  undecided
    Component:  code-network  |    Version:  1.9.2
   Resolution:                |   Keywords:  foolscap
Launchpad Bug:                |
------------------------------+-----------------------

Comment (by warner):

 I think is this really the near end telling you that the connection was
 lost. It might be nice to clean up the error reporting (maybe suppressing
 it entirely).

 I believe the root cause was just a TCP connection that dropped while a
 storage-server message (get_buckets) was outstanding. The first log
 message (UNUSUAL) was recorded by Foolscap itself, in `foolscap/call.py`
 around line 79, because tahoe turned on `logRemoteFailures`. It's not
 being entirely accurate when it says "failed on the far end": what it
 really means is that the failure occurred after the serialized arguments
 were sent (so it's not a failure in serialization). Network partitions
 are, of course, indistinguishable from the remote end suddenly
 terminating, so they're reported in the same way as real remote-side
 errors (such as "unknown swissnum" or a schema violation that made it
 through to the far side).

 The second log message (WEIRD) was recorded by Tahoe, in
 `src/allmydata/immutable/checker.py` around line 515. It looks like the
 preceding line was meant to catch it (`if f.check(DeadReferenceError)`),
 but the RemoteException-wrapping prevented the check from working. I'm
 guessing this code was written before you convinced me to make Foolscap
 report errors more uniformly, and it didn't get updated.

 I'm not sure how exactly it should get updated, though. We probably
 settled on a scheme.. maybe `if f.check(RemoteException) and
 f.failure.check(DeadReferenceError)`?

-- 
Ticket URL: <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1823#comment:1>
tahoe-lafs <https://tahoe-lafs.org>
secure decentralized storage


More information about the tahoe-lafs-trac-stream mailing list