674 def syncAllRolling(self):
675
676
677
678
679
680
681
682 begin = time.time()
683 firstEv = {}
684 timers = {}
685 for k in self.keys:
686 self.d[k].reset()
687 firstEv[k] = False
688 timers[k] = 0.0
689
690 active = self.keys
691 while True:
692
693 for k in active:
694 sMini = self.d[k]
695
696 if sMini.check() or sMini.checkLast():
697 if sMini.checkLast() and sMini.check():
698
699 active.remove(k)
700 alive = time.time() - begin
701 self.log.info("Audit : Node %i alive for %5.2f" % (k, alive))
702 else:
703 sMini.reset()
704 else:
705
706
707 wait = time.time() - sMini.getTime()
708 cond = wait > self.limit
709 if not firstEv[k]:
710 cond = wait > self.limitFirst
711 firstEv[k] = True
712 if cond:
713
714 self.log.critical("Single event wait : %5.2f" % (wait))
715 self.processHang()
716 return FAILURE
717
718
719 if self.checkLastEvents():
720 self.log.info("TC met for event loop")
721 break
722 else:
723
724 time.sleep(self.step)
725
726 self.log.info("All processes Completed all Events ok")
727 return SUCCESS
728