public TaskResult call() {
long startTimeMillis = System.currentTimeMillis();
IMetricsScope scope = MetricsHelper.getMetricsScope();
scope.addDimension("ShardId", shardInfo.getShardId());
scope.addData(RECORDS_PROCESSED_METRIC, 0, StandardUnit.Count);
scope.addData(DATA_BYTES_PROCESSED_METRIC, 0, StandardUnit.Bytes);
Exception exception = null;
try {
if (dataFetcher.isShardEndReached()) {