DatDB の再構築を起動後に行なうように。
@@ -162,15 +162,23 @@ | ||
162 | 162 | self.hashmap = {} |
163 | 163 | self.boardmap = {} |
164 | 164 | self.publishmap = {} |
165 | + self.need_rebuild = False | |
165 | 166 | self.load() |
166 | 167 | if len(self.hashmap) == 0: |
167 | - g.logger.log("DATDB", "Generating DatDB") | |
168 | - self.generate() | |
169 | - self.save() | |
170 | - g.logger.log("DATDB","Generated DatDB") | |
168 | + self.need_rebuild = True | |
171 | 169 | def __len__(self): |
172 | 170 | with self.lock: |
173 | 171 | return len(self.hashmap) |
172 | + def checkrebuild(self): | |
173 | + with self.lock: | |
174 | + tmp = self.need_rebuild | |
175 | + if tmp: | |
176 | + self.glob.logger.log("DATDB", "Generating DatDB") | |
177 | + self.generate() | |
178 | + self.save() | |
179 | + self.glob.logger.log("DATDB","Generated DatDB") | |
180 | + with self.lock: | |
181 | + self.need_rebuild = False | |
174 | 182 | def getRandomInBoard(self,board): |
175 | 183 | if board in self.boardmap: |
176 | 184 | h = random.choice(self.boardmap[board]) |
@@ -404,6 +404,13 @@ | ||
404 | 404 | nodedb.save() |
405 | 405 | self.glob.keyquery.save() |
406 | 406 | |
407 | +class RebuildDatDBThread(JobThread): | |
408 | + def __init__(self, g): | |
409 | + JobThread.__init__(self,"rebuild dat DB",60,g) | |
410 | + def dojob(self, nodes, logger, prof, datdb, datq): | |
411 | + datdb.checkrebuild() | |
412 | + self.finish = True | |
413 | + | |
407 | 414 | # Server thread |
408 | 415 | |
409 | 416 | class ProxyServerThread(JobThread): |
@@ -151,6 +151,7 @@ | ||
151 | 151 | o2on_job.SearchThread(glob), |
152 | 152 | o2on_job.DatQueryThread(glob), |
153 | 153 | o2on_job.P2PServerThread(glob), |
154 | + o2on_job.RebuildDatDBThread(glob), | |
154 | 155 | ) |
155 | 156 | |
156 | 157 | for j in jobs: j.start() |