zentol commented on a change in pull request #9038:
[FLINK-13169][tests][coordination] IT test for fine-grained recovery (task
executor failures)
URL: https://github.com/apache/flink/pull/9038#discussion_r305346545
##########
File path:
flink-tests/src/test/java/org/apache/flink/test/recovery/BatchFineGrainedRecoveryITCase.java
##########
@@ -332,112 +338,104 @@ void fail(int trackingIndex) throws Exception {
}
}
- private abstract static class AbstractRandomFailureStrategy implements
FailureStrategy {
+ private abstract static class
AbstractOnceAfterCallNumberFailureStrategy implements FailureStrategy {
private static final long serialVersionUID = 1L;
- private final CoinToss coin;
+ private final UUID id;
+ private final int failAfterCallNumber;
+ private transient int callCounter;
- private AbstractRandomFailureStrategy(CoinToss coin) {
- this.coin = coin;
+ private AbstractOnceAfterCallNumberFailureStrategy(int
failAfterCallNumber) {
+ this.failAfterCallNumber = failAfterCallNumber;
+ id = UUID.randomUUID();
}
@Override
public boolean failOrNot(int trackingIndex) throws Exception {
- boolean generateFailure = coin.toss();
+ callCounter++;
+ boolean generateFailure = callCounter ==
failAfterCallNumber;
if (generateFailure) {
fail(trackingIndex);
}
return generateFailure;
}
abstract void fail(int trackingIndex) throws Exception;
- }
- private static class CoinToss implements Serializable {
- private static final long serialVersionUID = 1L;
- private static final Random rnd = new Random();
-
- private final int probFraction;
- private final int probBase;
+ @Override
+ public String toString() {
+ return this.getClass().getSimpleName() + " (fail after
" + failAfterCallNumber + " calls)";
+ }
- private CoinToss(int probFraction, int probBase) {
- this.probFraction = probFraction;
- this.probBase = probBase;
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+ return Objects.equals(id,
((AbstractOnceAfterCallNumberFailureStrategy) o).id);
}
- private boolean toss() {
- int prob = rnd.nextInt(probBase) + 1;
- return prob <= probFraction;
+ @Override
+ public int hashCode() {
+ return id.hashCode();
}
}
+ @SuppressWarnings("SynchronizationOnStaticField")
Review comment:
th suppression can be removed now.
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
[email protected]
With regards,
Apache Git Services