def notify_failure(self, gname, epoch, failednode):
        if gname in self.groups:
            # there is a failure in the group or at least
            # one node thinks so. take a record of it
            if self.groups[gname].get_epoch() != epoch:
                return (self.groups[gname].get_members(), self.groups[gname].get_epoch())
            self.groups[gname].get_members()[failednode] += 1
            if len(self.groups[gname].get_members())/2.0 >= self.groups[gname].get_members()[failednode]:
                # more than half of the nodes think that a node has failed
                # we'll change the view
                self.groups[gname].remove_member(node)
                self.groups[gname].inc_epoch()
                # notify nodes that are waiting
                self.groups[gname].notifyAll()
                return (self.groups[gname].get_members(), self.groups[gname].get_epoch())
        else:
            raise KeyError(gname)
dataset/ETHPy150Open denizalti/concoord/concoord/object/meshmembership.py/MeshMembership.notify_failure/swapped operands of `>=`