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