예제 #1
0
    def _count_repository_actions(self):
        """ Counts actions and aggregates search scores for a random repository for the
        previous day. """
        to_count = model.repositoryactioncount.find_uncounted_repository()
        if to_count is None:
            logger.debug("No further repositories to count")
            return False

        yesterday = date.today() - timedelta(days=1)

        logger.debug("Found repository #%s to count", to_count.id)
        daily_count = logs_model.count_repository_actions(to_count, yesterday)
        if daily_count is None:
            logger.debug("Could not load count for repository #%s",
                         to_count.id)
            return False

        was_counted = model.repositoryactioncount.store_repository_action_count(
            to_count, yesterday, daily_count)
        if not was_counted:
            logger.debug("Repository #%s was counted by another worker",
                         to_count.id)
            return False

        logger.debug("Updating search score for repository #%s", to_count.id)
        was_updated = model.repositoryactioncount.update_repository_score(
            to_count)
        if not was_updated:
            logger.debug(
                "Repository #%s had its search score updated by another worker",
                to_count.id)
            return False

        logger.debug("Repository #%s search score updated", to_count.id)
        return True
예제 #2
0
    def _count_repository_actions(self):
        """
        Counts actions and aggregates search scores for a random repository for the previous day.
        """
        # Select a repository that needs its actions for the last day updated.
        to_count = model.repositoryactioncount.find_uncounted_repository()
        if to_count is None:
            logger.debug("No further repositories to count")
            return False

        logger.debug("Found repository #%s to count", to_count.id)

        # Count the number of actions that occurred yesterday for the repository.
        yesterday = date.today() - timedelta(days=1)
        daily_count = logs_model.count_repository_actions(to_count, yesterday)
        if daily_count is None:
            logger.debug("Could not load count for repository #%s",
                         to_count.id)
            return False

        # Store the count for the repository.
        was_counted = model.repositoryactioncount.store_repository_action_count(
            to_count, yesterday, daily_count)
        if not was_counted:
            logger.debug("Repository #%s was counted by another worker",
                         to_count.id)
            return False

        # Update the search score for the repository now that its actions have been counted.
        logger.debug("Updating search score for repository #%s", to_count.id)
        was_updated = model.repositoryactioncount.update_repository_score(
            to_count)
        if not was_updated:
            logger.debug(
                "Repository #%s had its search score updated by another worker",
                to_count.id)
            return False

        logger.debug("Repository #%s search score updated", to_count.id)

        # Delete any entries older than the retention period for the repository.
        while True:
            found = model.repositoryactioncount.delete_expired_entries(
                to_count, 30)
            if found <= 0:
                break

        logger.debug("Repository #%s old entries removed", to_count.id)
        return True