@Override
    public void run() {
        logger.debug("Start collecting");
        try {
            boolean force = config.isForce();
            for (SingleStatProcessor processor: config.getProcessors()) {
                try {
                    processor.checkDateAndGetStat(force);
                }
                catch (Exception e) {
                    logger.error("Error occurring during collecting the " + processor.getName(), e);
                }
            }
            config.resetForce();
            onUpdate();
            logger.debug("Finish collecting");
        }
        catch (Exception e) {
            logger.error("Unexpected error. Wait 10 seconds before continue", e);
            try {
                Thread.sleep(TimeUnit.SECONDS.toMillis(10));
            }
            catch (InterruptedException ignore) {}
        }
    }