Skip to content

Commit 52ea16b

Browse files
Prevent iterator panic and add error log (#576)
1 parent d7fb63c commit 52ea16b

File tree

1 file changed

+13
-0
lines changed

1 file changed

+13
-0
lines changed

src/main/java/com/uber/cadence/internal/replay/ReplayDecider.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@
4848
import com.uber.m3.util.ImmutableMap;
4949
import java.time.Duration;
5050
import java.util.ArrayList;
51+
import java.util.Arrays;
5152
import java.util.Iterator;
5253
import java.util.List;
5354
import java.util.Objects;
@@ -59,13 +60,17 @@
5960
import java.util.function.BiFunction;
6061
import java.util.function.Consumer;
6162
import org.apache.thrift.TException;
63+
import org.slf4j.Logger;
64+
import org.slf4j.LoggerFactory;
6265

6366
/**
6467
* Implements decider that relies on replay of a workflow code. An instance of this class is created
6568
* per decision.
6669
*/
6770
class ReplayDecider implements Decider {
6871

72+
private static final Logger log = LoggerFactory.getLogger(ReplayDecider.class);
73+
6974
private static final int MAXIMUM_PAGE_SIZE = 10000;
7075

7176
private final DecisionsHelper decisionsHelper;
@@ -677,6 +682,14 @@ public HistoryEvent next() {
677682
metricsScope.counter(MetricsType.WORKFLOW_GET_HISTORY_FAILED_COUNTER).inc(1);
678683
throw new Error(e);
679684
}
685+
if (!current.hasNext()) {
686+
log.error(
687+
"GetWorkflowExecutionHistory returns an empty history, maybe a bug in server, workflowID:"
688+
+ request.execution.workflowId+", runID:"+request.execution.runId+", domain:"+request.domain
689+
+" token:" + Arrays.toString(request.getNextPageToken()));
690+
throw new Error(
691+
"GetWorkflowExecutionHistory return empty history, maybe a bug in server");
692+
}
680693
return current.next();
681694
}
682695
};

0 commit comments

Comments
 (0)