Opened 13 years ago
Closed 12 years ago
#188 closed defect (invalid)
UNUSUAL an inbound callRemote that we [m2sb] executed (on behalf of someone else, TubID m2sb) failed
Reported by: | Zooko | Owned by: | |
---|---|---|---|
Priority: | major | Milestone: | undecided |
Component: | unknown | Version: | 0.6.1 |
Keywords: | Cc: | Zooko |
Description
I see a lot of this in kpreid's flogs:
10:24:45.815 [52750]: UNUSUAL an inbound callRemote that we [m2sb] executed (on behalf of someone else, TubID m2sb) failed 10:24:45.815 [52751]: reqID=499, rref=<foolscap.broker.Broker object at 0x101f4bc50>, methname=RIBroker.getReferenceByName 10:24:45.815 [52752]: args=[] 10:24:45.815 [52753]: kwargs={'name': 'hffivyel5rovo7wnleaj42zcibw2xqow'} 10:24:45.815 [52754]: the LOCAL failure was: FAILURE: [CopiedFailure instance: Traceback from remote host -- Traceback (most recent call last): File "/Installs/allmydata-tahoe-1.9.1/support/lib/python2.7/site-packages/foolscap-0.6.3-py2.7.egg/foolscap/eventual.py", line 26, in _turn cb(*args, **kwargs) File "/Installs/allmydata-tahoe-1.9.1/support/lib/python2.7/site-packages/foolscap-0.6.3-py2.7.egg/foolscap/broker.py", line 554, in doNextCall d.addCallback(lambda res: self._doCall(delivery)) File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/twisted/internet/defer.py", line 297, in addCallback callbackKeywords=kw) File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/twisted/internet/defer.py", line 286, in addCallbacks -- TRACEBACK ELIDED -- s/Python.framework/Versions/2.7/Extras/lib/python/twisted/internet/defer.py", line 542, in _runCallbacks current.result = callback(current.result, *args, **kw) File "/Installs/allmydata-tahoe-1.9.1/support/lib/python2.7/site-packages/foolscap-0.6.3-py2.7.egg/foolscap/broker.py", line 554, in <lambda> d.addCallback(lambda res: self._doCall(delivery)) File "/Installs/allmydata-tahoe-1.9.1/support/lib/python2.7/site-packages/foolscap-0.6.3-py2.7.egg/foolscap/broker.py", line 589, in _doCall return obj.doRemoteCall(delivery.methodname, args, kwargs) File "/Installs/allmydata-tahoe-1.9.1/support/lib/python2.7/site-packages/foolscap-0.6.3-py2.7.egg/foolscap/referenceable.py", line 60, in doRemoteCall res = meth(*args, **kwargs) File "/Installs/allmydata-tahoe-1.9.1/support/lib/python2.7/site-packages/foolscap-0.6.3-py2.7.egg/foolscap/broker.py", line 470, in remote_getReferenceByName return self.tub.getReferenceForName(name) File "/Installs/allmydata-tahoe-1.9.1/support/lib/python2.7/site-packages/foolscap-0.6.3-py2.7.egg/foolscap/pb.py", line 768, in getReferenceForName % hint) exceptions.KeyError: "unable to find reference for name starting with 'hf'" ]
Change History (3)
comment:1 Changed 13 years ago by
Cc: | Zooko added |
---|
comment:2 Changed 13 years ago by
comment:3 Changed 12 years ago by
Resolution: | → invalid |
---|---|
Status: | new → closed |
Ah, yes, that sort of insanity is hard to detect correctly. If you've got Alice and Bob1/Bob2, then from Alice's point of view, she's seeing Bob reboot and reconnect constantly. The two Bobs have different "incarnation strings" (IRs), and she might be able to keep a history of the IRs and notice that she's seeing old ones get repeated, to guess that there are multiple Bobs out there. But in general Alice can't distinguish multiple-Bobs from a single rebooting-Bob.
Bob1 can detect that he's talking to Bob2 more easily, but only if Bob2 makes an inbound connection to Bob1 with the intention of talking to Bob's TubID, which Foolscap doesn't do (getReference(my_furl)
gives you a special no-network Loopback connection).
So yeah, I think the possible fixes/improvements are a bit out-of-scope, so I'll take your advice and close this as INVALID.
It turned out that multiple nodes had the same private key. Perhaps that cause this UNUSUAL? It would be cool if a more specific error message could be emitted when that sort of operator error is encountered, either in one of those nodes ("Hey I just met myself over the internet!") or in a third node ("Goodbye! I just met a newer you coming from a different address!").
You could probably just close this ticket as "invalid", though...