|
19 | 19 |
|
20 | 20 | import org.apache.fluss.config.ConfigOptions; |
21 | 21 | import org.apache.fluss.config.Configuration; |
| 22 | +import org.apache.fluss.exception.NetworkException; |
22 | 23 | import org.apache.fluss.flink.tiering.event.FailedTieringEvent; |
23 | 24 | import org.apache.fluss.flink.tiering.event.FinishedTieringEvent; |
24 | 25 | import org.apache.fluss.flink.tiering.event.TieringReachMaxDurationEvent; |
|
37 | 38 | import org.apache.flink.api.connector.source.SourceEvent; |
38 | 39 | import org.apache.flink.api.connector.source.SplitsAssignment; |
39 | 40 | import org.apache.flink.api.connector.source.mocks.MockSplitEnumeratorContext; |
| 41 | +import org.apache.flink.util.FlinkRuntimeException; |
40 | 42 | import org.junit.jupiter.api.BeforeAll; |
41 | 43 | import org.junit.jupiter.api.BeforeEach; |
42 | 44 | import org.junit.jupiter.api.Test; |
|
55 | 57 | import static org.apache.fluss.config.ConfigOptions.TABLE_AUTO_PARTITION_NUM_PRECREATE; |
56 | 58 | import static org.apache.fluss.testutils.common.CommonTestUtils.retry; |
57 | 59 | import static org.assertj.core.api.Assertions.assertThat; |
| 60 | +import static org.assertj.core.api.Assertions.assertThatThrownBy; |
58 | 61 |
|
59 | 62 | /** Unit tests for {@link TieringSourceEnumerator} and {@link TieringSplitGenerator}. */ |
60 | 63 | class TieringSourceEnumeratorTest extends TieringTestBase { |
@@ -730,6 +733,20 @@ private TieringSourceEnumerator createTieringSourceEnumerator( |
730 | 733 | return new TieringSourceEnumerator(flussConf, context, 500); |
731 | 734 | } |
732 | 735 |
|
| 736 | + @Test |
| 737 | + void testNetworkErrorInHeartbeatTriggersFailover() throws Exception { |
| 738 | + try (FlussMockSplitEnumeratorContext<TieringSplit> context = |
| 739 | + new FlussMockSplitEnumeratorContext<>(1)) { |
| 740 | + TieringSourceEnumerator enumerator = createTieringSourceEnumerator(flussConf, context); |
| 741 | + FlinkRuntimeException networkError = |
| 742 | + new FlinkRuntimeException( |
| 743 | + "Failed to wait heartbeat response due to ", |
| 744 | + new NetworkException("coordinator disconnected")); |
| 745 | + assertThatThrownBy(() -> enumerator.generateAndAssignSplits(null, networkError)) |
| 746 | + .isSameAs(networkError); |
| 747 | + } |
| 748 | + } |
| 749 | + |
733 | 750 | @Test |
734 | 751 | void testTableReachMaxTieringDuration() throws Throwable { |
735 | 752 | TablePath tablePath = TablePath.of(DEFAULT_DB, "tiering-max-duration-test-log-table"); |
|
0 commit comments