• R/O
  • SSH
  • HTTPS

o2on: Commit


Commit MetaInfo

Revision172 (tree)
Time2009-09-22 20:39:48
Authornawota

Log Message

ReCheckIP, ForceShutdown を追加

Change Summary

Incremental Difference

--- trunk/opy2on/lib/o2on_node.py (revision 171)
+++ trunk/opy2on/lib/o2on_node.py (revision 172)
@@ -100,6 +100,7 @@
100100 self.flag_running = False
101101 self.flag_history = False
102102 self.flag_dat = False
103+ self.connection = None
103104 def __getstate__(self):
104105 return (self.id, self.ip,self.port, self.name, self.pubkey,self.ua,self.flag)
105106 def __setstate__(self,x):
@@ -110,6 +111,10 @@
110111 self.removable = False
111112 def __cmp__(self,x):
112113 return cmp(self.id, x.id)
114+ def shutdown(self):
115+ if self.connection:
116+ self.connection.shutdown(socket.SHUT_RDWR)
117+ self.connection.close()
113118 def from_node(self, n):
114119 if self.id == n.id:
115120 self.ip = n.ip
@@ -161,9 +166,11 @@
161166 conn.connect()
162167 socket.setdefaulttimeout(None)
163168 conn.sock.settimeout(o2on_config.SocketTimeout)
169+ self.connection = conn.sock
164170 conn.request(method,path,body, headers)
165171 r = conn.getresponse()
166172 conn.close()
173+ self.connection = None
167174 except socket.timeout:
168175 socket.setdefaulttimeout(None)
169176 self.removable = True
--- trunk/opy2on/lib/o2on_job.py (revision 171)
+++ trunk/opy2on/lib/o2on_job.py (revision 172)
@@ -34,6 +34,10 @@
3434 self.name = name
3535 self.glob = g
3636 self.sec = s
37+ self.node = None
38+ def shutdown(self):
39+ if self.node: self.node.shutdown()
40+ self.node = None
3741 def stop(self):
3842 self.finish = True
3943 def wakeup(self):
@@ -61,8 +65,10 @@
6165 self.glob.logger.log("JOBMANAGER", "job %s started" % self.name)
6266 while not self.finish:
6367 #t = time.time()
68+ self.node = None
6469 self.dojob(self.glob.nodedb, self.glob.logger, self.glob.prof, self.glob.datdb,
6570 self.glob.datquery)
71+ self.node = None
6672 if self.finish: break
6773 diff = int(self.sec) #int(self.sec - (time.time()-t))
6874 if 0<diff:
@@ -88,7 +94,9 @@
8894 if self.finish: break
8995 logger.log("NODECOLLECTOR", "findnode to %s" % (hexlify(x.id)))
9096 try:
97+ self.node = x
9198 newnodes = x.findnode(target)
99+ self.node = None
92100 except o2on_node.NodeRemovable:
93101 nodes.remove(x)
94102 nodes.save()
@@ -119,7 +127,9 @@
119127 if self.finish: break
120128 logger.log("DATCOLLECTOR","dat (%s) to %s" % (board,hexlify(n.id)))
121129 try:
130+ self.node = n
122131 dat = n.dat(None, board, datdb)
132+ self.node = None
123133 except o2on_node.NodeRemovable:
124134 nodes.remove(n)
125135 nodes.save()
@@ -148,7 +158,9 @@
148158 if self.finish: break
149159 logger.log("GETIP","getIP to %s" % hexlify(n.id))
150160 try:
161+ self.node = n
151162 r = n.ping(True)
163+ self.node = None
152164 except o2on_node.NodeRemovable:
153165 nodes.remove(n)
154166 nodes.save()
@@ -164,7 +176,10 @@
164176 ip = o2on_node.e2ip(r[:8])
165177 if not regLocalIP.match(ip):
166178 prof.mynode.ip = ip
167- self.finish = True
179+ if o2on_config.ReCheckIP == None:
180+ self.finish = True
181+ else:
182+ self.sec = o2on_config.ReCheckIP * 60
168183 logger.popup("GETIP","Got Global IP %s" % ip)
169184 nodes.add_node(n)
170185 break
@@ -178,7 +193,9 @@
178193 if self.finish: break
179194 logger.log("ASKNODECOLLECTION", "node collection to %s" % (hexlify(n.id)))
180195 try:
196+ self.node = n
181197 colboards = n.collection(self.glob)
198+ self.node = None
182199 except o2on_node.NodeRemovable:
183200 nodedb.remove(n)
184201 nodedb.save()
@@ -224,7 +241,9 @@
224241 if not node: continue
225242 logger.log("PUBLISHORIGINAL","publish original to %s" % (hexlify(n)))
226243 try:
244+ self.node = node
227245 node.store("dat", publish_nodes[n])
246+ self.node = None
228247 except o2on_node.NodeRemovable:
229248 nodedb.remove(node)
230249 nodedb.save()
@@ -268,7 +287,9 @@
268287 if not node: continue
269288 logger.log("PUBLISHKEY","publish key to %s" % (hexlify(n)))
270289 try:
290+ self.node = node
271291 node.store("dat", publish_nodes[n])
292+ self.node = None
272293 except o2on_node.NodeRemovable:
273294 nodedb.remove(node)
274295 nodedb.save()
@@ -319,7 +340,9 @@
319340 logger.log("SEARCH","findvalue to %s for %s" % (hexlify(node.id),d.url))
320341 sent.append(node.id)
321342 try:
343+ self.node = node
322344 res = node.findvalue(d.hash)
345+ self.node = None
323346 except o2on_node.NodeRemovable:
324347 nodedb.remove(node)
325348 nodedb.save()
@@ -361,7 +384,9 @@
361384 if not node: node = o2on_node.Node(k.nodeid, k.ip, k.port)
362385 logger.log("DATQUERY","dat query %s to %s" % (hexlify(k.hash),hexlify(node.id)))
363386 try:
387+ self.node = node
364388 dat = node.dat(k.hash, None, self.glob)
389+ self.node = None
365390 except o2on_node.NodeRemovable:
366391 nodedb.remove(node)
367392 nodedb.save()
--- trunk/opy2on/opy2on.py (revision 171)
+++ trunk/opy2on/opy2on.py (revision 172)
@@ -189,9 +189,15 @@
189189 c = 0
190190 for j in jobs:
191191 j.join(1)
192+ shutcount = 0
192193 while j.isAlive():
193194 glob.logger.popup("GLOBAL", "Waiting for %s" % j.name)
194- j.join(7)
195+ j.join(8)
196+ shutcount += 1
197+ if o2on_config.ForceShutdown != None and \
198+ o2on_config.ForceShutdown / 8 < shutcount:
199+ glob.logger.popup("GLOBAL", "Force Shutdown")
200+ j.shutdown()
195201 c += 1
196202 glob.logger.log("GLOBAL", "Finished %d/%d" % (c, n))
197203 glob.imdb.save()
Show on old repository browser