def addFailure(self, ticket):
		try:
			self.__lock.acquire()
			ip = ticket.getIP()
			unixTime = ticket.getTime()
			if self.__failList.has_key(ip):
				fData = self.__failList[ip]
				fData.inc()
				fData.setLastTime(unixTime)
			else:
				fData = FailData()
				fData.inc()
				fData.setLastTime(unixTime)
				self.__failList[ip] = fData
			self.__failTotal += 1
		finally:
			self.__lock.release()
Beispiel #2
0
	def addFailure(self, ticket):
		try:
			self.__lock.acquire()
			ip = ticket.getIP()
			unixTime = ticket.getTime()
			matches = ticket.getMatches()
			if self.__failList.has_key(ip):
				fData = self.__failList[ip]
				if fData.getLastReset() < unixTime - self.__maxTime:
					fData.setLastReset(unixTime)
					fData.setRetry(0)
				fData.inc(matches)
				fData.setLastTime(unixTime)
			else:
				fData = FailData()
				fData.inc(matches)
				fData.setLastReset(unixTime)
				fData.setLastTime(unixTime)
				self.__failList[ip] = fData
			logSys.debug("Currently have failures from %d IPs: %s"
						 % (len(self.__failList), self.__failList.keys()))
			self.__failTotal += 1
		finally:
			self.__lock.release()
Beispiel #3
0
    def addFailure(self, ticket):
        try:
            self.__lock.acquire()
            ip = ticket.getIP()
            unixTime = ticket.getTime()
            matches = ticket.getMatches()
            if self.__failList.has_key(ip):
                fData = self.__failList[ip]
                if fData.getLastReset() < unixTime - self.__maxTime:
                    fData.setLastReset(unixTime)
                    fData.setRetry(0)
                fData.inc(matches)
                fData.setLastTime(unixTime)
            else:
                fData = FailData()
                fData.inc(matches)
                fData.setLastReset(unixTime)
                fData.setLastTime(unixTime)
                self.__failList[ip] = fData

            self.__failTotal += 1

            if logSys.getEffectiveLevel() <= logging.DEBUG:
                # yoh: Since composing this list might be somewhat time consuming
                # in case of having many active failures, it should be ran only
                # if debug level is "low" enough
                failures_summary = ', '.join([
                    '%s:%d' % (k, v.getRetry())
                    for k, v in self.__failList.iteritems()
                ])
                logSys.debug(
                    "Total # of detected failures: %d. Current failures from %d IPs (IP:count): %s"
                    %
                    (self.__failTotal, len(self.__failList), failures_summary))
        finally:
            self.__lock.release()