Не удалось запустить EmbeddedKafka / Zookeeper из-за ZkInterruptedException: java.lang.InterruptedException - PullRequest
1 голос
/ 08 октября 2019

Я пытаюсь интегрировать EmbeddedKafka (https://github.com/spring-projects/spring-kafka/blob/master/src/reference/asciidoc/testing.adoc) с моими модульными тестами.

Не всегда, но очень часто я получаю ошибки при запуске EmbeddedKafka.

2019-10-08T11:23:43.894Z INFO  [main] org.apache.zookeeper.server.ZooKeeperServer: Server environment:java.io.tmpdir=C:\tmp\
2019-10-08T11:23:43.894Z INFO  [main] org.apache.zookeeper.server.ZooKeeperServer: Server environment:java.compiler=<NA>
2019-10-08T11:23:43.894Z INFO  [main] org.apache.zookeeper.server.ZooKeeperServer: Server environment:os.name=Windows 10
2019-10-08T11:23:43.894Z INFO  [main] org.apache.zookeeper.server.ZooKeeperServer: Server environment:os.arch=amd64
2019-10-08T11:23:43.894Z INFO  [main] org.apache.zookeeper.server.ZooKeeperServer: Server environment:os.version=10.0
2019-10-08T11:23:43.894Z INFO  [main] org.apache.zookeeper.server.ZooKeeperServer: Server environment:user.name=user
2019-10-08T11:23:43.894Z INFO  [main] org.apache.zookeeper.server.ZooKeeperServer: Server environment:user.home=C:\Users\user
2019-10-08T11:23:43.894Z INFO  [main] org.apache.zookeeper.server.ZooKeeperServer: Server environment:user.dir=C:\work\
2019-10-08T11:23:43.913Z INFO  [main] org.apache.zookeeper.server.ZooKeeperServer: Created server with tickTime 500 minSessionTimeout 1000 maxSessionTimeout 10000 datadir C:\tmp\kafka-2406612557331641452\version-2 snapdir C:\tmp\kafka-919479945966258903\version-2
2019-10-08T11:23:43.923Z INFO  [main] org.apache.zookeeper.server.NIOServerCnxnFactory: binding to port /127.0.0.1:0
Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0.146 sec <<< FAILURE! - in kafka.KafkaTopicUtilsTest
kafka.KafkaTopicUtilsTest  Time elapsed: 0.146 sec  <<< ERROR!
org.I0Itec.zkclient.exception.ZkInterruptedException: java.lang.InterruptedException
Caused by: java.lang.InterruptedException

pom.xml:

       <dependency>
            <groupId>org.apache.kafka</groupId>
            <artifactId>kafka_2.11</artifactId>
            <version>2.2.1</kafka>
       </dependency>
       <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>5.0.7.RELEASE</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>5.0.7.RELEASE</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.kafka</groupId>
            <artifactId>spring-kafka-test</artifactId>
            <version>2.2.9.RELEASE</version>
            <scope>test</scope>
        </dependency>

Инициализация сервера KafkaTopicUtilsTest.java через @Rule:

@RunWith(MockitoJUnitRunner.class)
public class KafkaTopicUtilsTest {
    static final String INITIAL_TOPIC = "initial_topic";

    @ClassRule
    public static EmbeddedKafkaRule embeddedKafka = new EmbeddedKafkaRule(1, true, 5, INITIAL_TOPIC);
   ...
}

Как уже упоминалось, почти всегда он работает хорошо, когда я запускаю тест в InteliJ.

Выполнение из INteliJ ( Запуск 'KafkaTopicUtilsTest' ) работает нормально.

Выполнение теста с помощью maven mvn clean install не выполняется.

Явное выполнение теста mvn -Dtest = KafkaTopicUtilsTest test работает нормально.

Кто-нибудь сталкивался с такими проблемами? Любая подсказка, что может быть не так? *

Проблема решена

Проблема была связана с другими тестовыми случаями. Другой тест (не использующий EmbeddedKafka) вызывал и InterrupedException и проверял, правильно ли на него реагирует код. Прерванное состояние поддерживалось с помощью вызова Thread.currentThread (). прерывание () . Похоже, что виртуальная машина сохранила прерывистое состояние и EmbeddedKafka реагирует на это.

...