Advertisement
Guest User

Untitled

a guest
Nov 26th, 2014
189
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.73 KB | None | 0 0
  1. 2014-11-26 12:35:07,832 [noc.lib.debug] UNHANDLED EXCEPTION (2014-11-26 12:35:07.823240)
  2. Working directory: /opt/noc
  3. <type 'exceptions.ValueError'>
  4. year is out of range
  5. START OF TRACEBACK
  6. ------------------------------------------------------------------------
  7. File: /opt/noc/lib/scheduler/intervaljob.py (Line: 78)
  8. Function: get_next_aligned
  9. 71 """
  10. 72 t = int(time.time())
  11. 73 ts = (t // interval) * interval
  12. 74 if next or ts < t:
  13. 75 ts += interval
  14. 76 if offset:
  15. 77 ts += offset * interval
  16. 78 ==> return datetime.datetime.fromtimestamp(ts)
  17. 79
  18. 80 def get_interval(self):
  19. 81 return self.schedule["interval"]
  20. 82
  21. 83 def get_failed_interval(self):
  22. 84 return self.schedule.get("failed_interval",
  23. Variables:
  24. interval = 31536000
  25. ts = 452461309344000
  26. next = True
  27. t = 1416994507
  28. offset = 14347409
  29. cls = <class 'noc.inv.discovery.jobs.id_discovery.IDDiscoveryJob'>
  30. ------------------------------------------------------------------------
  31. File: /opt/noc/lib/scheduler/intervaljob.py (Line: 93)
  32. Function: get_schedule
  33. 86
  34. 87 def get_schedule(self, status):
  35. 88 if status == self.S_SUCCESS:
  36. 89 i = self.get_interval()
  37. 90 if not i:
  38. 91 return None # Zero interval means disabled job
  39. 92 offset = self.schedule["offset"] % i
  40. 93 ==> return self.get_next_aligned(i, next=True, offset=offset)
  41. 94 elif status == self.S_DEFERRED:
  42. 95 return None # Left until next initial submit
  43. 96 elif status == self.S_LATE and self.delay_interval:
  44. 97 return (datetime.datetime.now() +
  45. 98 datetime.timedelta(
  46. 99 seconds=random.random() * self.delay_interval))
  47. Variables:
  48. i = 31536000
  49. status = 'S'
  50. self =
  51. <noc.inv.discovery.jobs.id_discovery.IDDiscoveryJob object at 0x80ec80c10>
  52. offset = 14347409
  53. ------------------------------------------------------------------------
  54. File: /opt/noc/lib/scheduler/scheduler.py (Line: 345)
  55. Function: _complete_job
  56. 338 group = job.get_group()
  57. 339 if group is not None:
  58. 340 with self.running_lock:
  59. 341 self.running_count[group] -= 1
  60. 342 if not self.running_count[group]:
  61. 343 del self.running_count[group]
  62. 344 on_complete = job.on_complete
  63. 345 ==> t = job.get_schedule(status)
  64. 346 if t is None:
  65. 347 # Unschedule job
  66. 348 self.remove_job(job.name, job.key)
  67. 349 else:
  68. 350 # Reschedule job
  69. 351 t1 = time.time()
  70. Variables:
  71. status = 'S'
  72. group = 'discovery-144'
  73. self = <noc.inv.discovery.scheduler.DiscoveryScheduler object at 0x80e839810>
  74. job =
  75. <noc.inv.discovery.jobs.id_discovery.IDDiscoveryJob object at 0x80ec80c10>
  76. on_complete = []
  77. path = '/tmp/id_discovery/144'
  78. tb = None
  79. ------------------------------------------------------------------------
  80. File: /opt/noc/lib/scheduler/scheduler.py (Line: 330)
  81. Function: _job_wrapper
  82. 323 s = job.S_SUCCESS
  83. 324 else:
  84. 325 job.logger.info("Job failed (%fsec)",
  85. 326 time.time() - t0
  86. 327 )
  87. 328 job.on_failure()
  88. 329 s = job.S_FAILED
  89. 330 ==> self._complete_job(job, s, tb)
  90. 331
  91. 332 def _complete_job(self, job, status, tb):
  92. 333 self.metrics.jobs_time.timer(self.name, job.name, job.key).log(
  93. 334 job.started, time.time(), status)
  94. 335 if self.to_log_jobs:
  95. 336 path = os.path.join(self.log_jobs, job.name, str(job.key))
  96. Variables:
  97. self = <noc.inv.discovery.scheduler.DiscoveryScheduler object at 0x80e839810>
  98. job =
  99. <noc.inv.discovery.jobs.id_discovery.IDDiscoveryJob object at 0x80ec80c10>
  100. t0 = 1416994507.811981
  101. s = 'S'
  102. r = True
  103. kwargs =
  104. {'object': <ManagedObject: cat-balakhna>,
  105. 'result': {'chassis_mac': [{'first_chassis_mac': 'EC:C8:82:E9:BF:80',
  106. 'last_chassis_mac': 'EC:C8:82:E9:BF:80'}],
  107. 'hostname': 'cat-balakhna.kis.ru'}}
  108. tb = None
  109. ------------------------------------------------------------------------
  110. File: /opt/noc/lib/scheduler/scheduler.py (Line: 304)
  111. Function: _run_job_handler
  112. 297 if job.threaded:
  113. 298 t = threading.Thread(target=self._job_wrapper,
  114. 299 args=(job,), kwargs=kwargs
  115. 300 )
  116. 301 t.daemon = True
  117. 302 t.start()
  118. 303 else:
  119. 304 ==> return self._job_wrapper(job, **kwargs)
  120. 305
  121. 306 def _job_wrapper(self, job, **kwargs):
  122. 307 tb = None
  123. 308 t0 = time.time()
  124. 309 job.logger.info("Running job handler")
  125. 310 try:
  126. Variables:
  127. job =
  128. <noc.inv.discovery.jobs.id_discovery.IDDiscoveryJob object at 0x80ec80c10>
  129. self = <noc.inv.discovery.scheduler.DiscoveryScheduler object at 0x80e839810>
  130. kwargs =
  131. {'object': <ManagedObject: cat-balakhna>,
  132. 'result': {'chassis_mac': [{'first_chassis_mac': 'EC:C8:82:E9:BF:80',
  133. 'last_chassis_mac': 'EC:C8:82:E9:BF:80'}],
  134. 'hostname': 'cat-balakhna.kis.ru'}}
  135. ------------------------------------------------------------------------
  136. File: /opt/noc/lib/scheduler/scheduler.py (Line: 390)
  137. Function: complete_mrt_job
  138. 383 self.reschedule_job(job_name, key, ts, skip_running=True)
  139. 384
  140. 385 def complete_mrt_job(self, t):
  141. 386 job = self.active_mrt.pop(t)
  142. 387 for m in t.maptask_set.all():
  143. 388 if m.status == "C":
  144. 389 self._run_job_handler(job, object=m.managed_object,
  145. 390 ==> result=m.script_result)
  146. 391 else:
  147. 392 self.logger.info("Job %s(%s) is failed",
  148. 393 job.name, job.get_display_key())
  149. 394 self._complete_job(job, job.S_FAILED, m.script_result)
  150. 395 t.delete()
  151. 396
  152. Variables:
  153. job =
  154. <noc.inv.discovery.jobs.id_discovery.IDDiscoveryJob object at 0x80ec80c10>
  155. m = <MapTask: 888776: cat-balakhna Cisco.IOS.get_discovery_id>
  156. t = <ReduceTask: 843069>
  157. self = <noc.inv.discovery.scheduler.DiscoveryScheduler object at 0x80e839810>
  158. ------------------------------------------------------------------------
  159. File: /opt/noc/lib/scheduler/scheduler.py (Line: 424)
  160. Function: run_pending
  161. 417 # Reschedule initial submit
  162. 418 self.initial_submit_next_check[jcls] = (
  163. 419 t0 + jcls.initial_submit_interval)
  164. 420 # Check for complete MRT
  165. 421 if self.active_mrt:
  166. 422 complete = [t for t in self.active_mrt if t.complete]
  167. 423 for t in complete:
  168. 424 ==> self.complete_mrt_job(t)
  169. 425 self.active_mrt = dict(
  170. 426 (t, self.active_mrt[t])
  171. 427 for t in self.active_mrt if t not in complete)
  172. 428 # Check for pending persistent tasks
  173. 429 q = {
  174. 430 self.ATTR_TS: {"$lte": datetime.datetime.now()},
  175. Variables:
  176. self = <noc.inv.discovery.scheduler.DiscoveryScheduler object at 0x80e839810>
  177. t = <ReduceTask: 843069>
  178. complete = [<ReduceTask: 843069>]
  179. n = 0
  180. ------------------------------------------------------------------------
  181. File: /opt/noc/lib/scheduler/scheduler.py (Line: 482)
  182. Function: run
  183. 475 self.ATTR_STATUS: self.S_RUN
  184. 476 }, {
  185. 477 "$set": {self.ATTR_STATUS: self.S_WAIT}
  186. 478 }, multi=True, safe=True)
  187. 479 self.ensure_indexes()
  188. 480 self.logger.info("Running scheduler")
  189. 481 while True:
  190. 482 ==> if not self.run_pending():
  191. 483 time.sleep(1)
  192. 484 else:
  193. 485 self.cleanup()
  194. 486
  195. 487 def get_faults(self, job_name, key=None):
  196. 488 """
  197. Variables:
  198. self = <noc.inv.discovery.scheduler.DiscoveryScheduler object at 0x80e839810>
  199. ------------------------------------------------------------------------
  200. File: /opt/noc/inv/discovery/daemon.py (Line: 37)
  201. Function: run
  202. 30
  203. 31 def run(self):
  204. 32 try:
  205. 33 PerformanceReportJob.submit(self.scheduler,
  206. 34 key="performance_report", interval=60)
  207. 35 except self.scheduler.JobExists:
  208. 36 pass
  209. 37 ==> self.scheduler.run()
  210. 38
  211. 39 def load_config(self):
  212. 40 super(DiscoveryDaemon, self).load_config()
  213. 41 self.load_beef_map()
  214. 42 log_jobs = self.config.get("main", "log_jobs") or None
  215. 43 self.scheduler.set_job_log(log_jobs)
  216. Variables:
  217. self = <noc.inv.discovery.daemon.DiscoveryDaemon object at 0x80073a6d0>
  218. ------------------------------------------------------------------------
  219. File: /opt/noc/lib/daemon/base.py (Line: 413)
  220. Function: guarded_run
  221. 406
  222. 407 def guarded_run(self):
  223. 408 """
  224. 409 Run daemon and catch common exceptions
  225. 410 :return:
  226. 411 """
  227. 412 try:
  228. 413 ==> self.run()
  229. 414 except KeyboardInterrupt:
  230. 415 pass
  231. 416 except MemoryError:
  232. 417 self.logger.error("Out of memory. Exiting.")
  233. 418 except SystemExit:
  234. 419 self.logger.info("Exiting")
  235. Variables:
  236. self = <noc.inv.discovery.daemon.DiscoveryDaemon object at 0x80073a6d0>
  237. ------------------------------------------------------------------------
  238. END OF TRACEBACK
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement