All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.aliyun.openservices.loghub.client.ProcessTask Maven / Gradle / Ivy

There is a newer version: 0.6.7
Show newest version
package com.aliyun.openservices.loghub.client;

import java.util.List;

import com.aliyun.openservices.log.common.LogGroupData;
import com.aliyun.openservices.loghub.client.interfaces.ILogHubProcessor;
import com.aliyun.openservices.loghub.client.throttle.ResourceBarrier;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class ProcessTask implements ITask {
    private static final Logger LOG = LoggerFactory.getLogger(ProcessTask.class);

    private ILogHubProcessor processor;
    private List chunk;
    private DefaultLogHubCheckPointTracker checkPointTracker;
    private long rawSize;
    private ResourceBarrier resourceBarrier;

    private int shard;

    public ProcessTask(ILogHubProcessor processor,
                       List logGroups,
                       DefaultLogHubCheckPointTracker checkPointTracker,
                       long rawSize,
                       ResourceBarrier resourceBarrier,
                       int shard) {
        this.processor = processor;
        this.chunk = logGroups;
        this.checkPointTracker = checkPointTracker;
        this.rawSize = rawSize;
        this.resourceBarrier = resourceBarrier;
        this.shard = shard;
    }

    public TaskResult call() {
        String checkpoint;
        try {
            checkpoint = processor.process(chunk, checkPointTracker);
            checkPointTracker.flushCheckpointIfNeeded();
        } catch (Exception e) {
            LOG.error("Process exception occurred, shard={}", shard, e);
            resourceBarrier.release(rawSize);
            return new TaskResult(e);
        }
        resourceBarrier.release(rawSize);
        return new ProcessTaskResult(checkpoint);
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy