Fixed n bugs, particularly relating to store

This commit is contained in:
aum
2004-08-15 07:02:36 +00:00
committed by zzz
parent 5c10ddf54c
commit e60b30ed44

View File

@ -165,7 +165,7 @@ timeout = {
'ping' : 60,
'findNode' : 60,
'findData' : 60,
'store' : 120,
'store' : 60,
}
logToSocket = None
@ -1863,15 +1863,18 @@ class KRpcFindNode(KRpc):
# start our ticker
self.nextTickTime = time.time() + timeout['findNode']
numQueriesSent = 0
# and send them findNode queries
if len(somePeerRecs) > 0:
for peerRec in somePeerRecs:
self.log(3, "querying %s" % peerRec)
if self.numQueriesPending < maxConcurrentQueries:
self.sendOneQuery(peerRec)
numQueriesSent += 1
else:
break
self.log(3, "queries sent, awaiting reply")
self.log(3, "%s queries sent, awaiting reply" % numQueriesSent)
else:
self.log(3, "no peer recs???")
for peerRec in self.peerTab:
@ -2317,13 +2320,12 @@ class KRpcStore(KRpc):
self.log(2, "STORE RPC findNode - got peers %s" % repr(peers))
self.numPeersToStore = min(len(peers), numStorePeers)
i = 0
self.numPeersSucceeded = 0
self.numPeersFailed = 0
self.numPeersFinished = 0
i = 0
# and fire off store messages for each peer
for peer in peers:
@ -2341,8 +2343,13 @@ class KRpcStore(KRpc):
if i >= numStorePeers:
break
self.nextTickTime = time.time() + timeout['store']
self.log(2, "Sent store cmd to %s peers, awaiting responses" % i)
self.numPeersToStore = i
#@-node:on_doneFindNode
#@+node:on_reply
def on_reply(self, peer, msgId, **details):
@ -2360,9 +2367,15 @@ class KRpcStore(KRpc):
#@-node:on_reply
#@+node:on_tick
def on_tick(self):
self.log(3, "got a timeout tick, what should we do??")
self.nextTickTime = time.time() + 3
self.log(3, "Timeout awaiting store reply from %d out of %d peers" % (
self.numPeersToStore - self.numPeersSucceeded, self.numPeersToStore))
if self.numPeersSucceeded == 0:
self.log(3, "Store timeout - no peers replied, storing locally")
self.localNode.storage.putKey(self.keyHashed, self.value, keyIsHashed=True)
self.returnValue(True)
#@-node:on_tick
#@-others
@ -3262,7 +3275,7 @@ class KNode(KBase):
# check for timed-out RPCs
for rpc in self.rpcPending[:]:
if now >= rpc.nextTickTime:
if rpc.nextTickTime != None and now >= rpc.nextTickTime:
try:
rpc.on_tick()
except: