return 0
self.sort = sort
+ def actionFailed(self, err, node):
+ log.msg("action %s failed (%s) %s/%s" % (self.__class__.__name__, self.config['PORT'], node.host, node.port))
+ log.err(err)
+ self.caller.table.nodeFailed(node)
+ self.outstanding = self.outstanding - 1
+ self.schedule()
+
def goWithNodes(self, t):
pass
if (not self.queried.has_key(node.id)) and node.id != self.caller.node.id:
#xxxx t.timeout = time.time() + FIND_NODE_TIMEOUT
df = node.findNode(self.target, self.caller.node.id)
- df.addCallbacks(self.handleGotNodes, self.makeMsgFailed(node))
+ df.addCallbacks(self.handleGotNodes, self.actionFailed, errbackArgs = (node, ))
self.outstanding = self.outstanding + 1
self.queried[node.id] = 1
if self.outstanding >= self.config['CONCURRENT_REQS']:
self.finished=1
reactor.callLater(0, self.callback, l[:self.config['K']])
- def makeMsgFailed(self, node):
- def defaultGotNodes(err, self=self, node=node):
- log.msg("find failed (%s) %s/%s" % (self.config['PORT'], node.host, node.port))
- log.err(err)
- self.caller.table.nodeFailed(node)
- self.outstanding = self.outstanding - 1
- self.schedule()
- return defaultGotNodes
-
def goWithNodes(self, nodes):
"""
this starts the process, our argument is a transaction with t.extras being our list of nodes
log.msg("findValue %s doesn't have a %s method!" % (node, self.findValue))
else:
df = f(self.target, self.caller.node.id)
- df.addCallback(self.handleGotNodes)
- df.addErrback(self.makeMsgFailed(node))
+ df.addCallbacks(self.handleGotNodes, self.actionFailed, errbackArgs = (node, ))
self.outstanding = self.outstanding + 1
self.queried[node.id] = 1
if self.outstanding >= self.config['CONCURRENT_REQS']:
self.schedule()
return t
- def storeFailed(self, t, node):
- log.msg("store failed %s/%s" % (node.host, node.port))
- self.caller.nodeFailed(node)
- self.outstanding -= 1
- if self.finished:
- return t
- self.schedule()
- return t
-
def schedule(self):
if self.finished:
return
log.msg("%s doesn't have a %s method!" % (node, self.store))
else:
df = f(self.target, self.value, node.token, self.caller.node.id)
- df.addCallback(self.storedValue, node=node)
- df.addErrback(self.storeFailed, node=node)
+ df.addCallbacks(self.storedValue, self.actionFailed, callbackArgs = (node, ), errbackArgs = (node, ))
def goWithNodes(self, nodes):
self.nodes = nodes