embeddedkafka / embedded-kafka

A library that provides an in-memory Kafka instance to run your tests against.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Deleting a topic fails when running on Windows in Github Actions

guizmaii opened this issue · comments

Hi,

I'm working on an app that is available for Linux, macOS and Windows so I'm running my tests on the three OS.

In my tests, I create a topic in an embedded-kafka. That works perfectly fine for Linux and macOS but on Windows, I have the following error:

2021-11-11 07:30:59 [data-plane-kafka-request-handler-1] ERROR kafka.server.LogDirFailureChannel - Error while renaming dir for topic-002-0 in log dir C:\Users\RUNNER~1\AppData\Local\Temp\kafka-logs6847069385745433788
java.nio.file.AccessDeniedException: C:\Users\RUNNER~1\AppData\Local\Temp\kafka-logs6847069385745433788\topic-002-0 -> C:\Users\RUNNER~1\AppData\Local\Temp\kafka-logs6847069385745433788\topic-002-0.7cdd8b3b5a8b498a8c39aec442563614-delete
	at java.base/sun.nio.fs.WindowsException.translateToIOException(WindowsException.java:89)
	at java.base/sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:103)
	at java.base/sun.nio.fs.WindowsFileCopy.move(WindowsFileCopy.java:395)
	at java.base/sun.nio.fs.WindowsFileSystemProvider.move(WindowsFileSystemProvider.java:292)
	at java.base/java.nio.file.Files.move(Files.java:1422)
	at org.apache.kafka.common.utils.Utils.atomicMoveWithFallback(Utils.java:940)
	at kafka.log.Log.$anonfun$renameDir$2(Log.scala:1098)
	at kafka.log.Log.renameDir(Log.scala:2482)
	at kafka.log.LogManager.asyncDelete(LogManager.scala:991)
	at kafka.log.LogManager.$anonfun$asyncDelete$3(LogManager.scala:1026)
	at scala.Option.foreach(Option.scala:437)
	at kafka.log.LogManager.$anonfun$asyncDelete$2(LogManager.scala:1024)
	at kafka.log.LogManager.$anonfun$asyncDelete$2$adapted(LogManager.scala:1022)
	at scala.collection.mutable.HashSet$Node.foreach(HashSet.scala:435)
	at scala.collection.mutable.HashSet.foreach(HashSet.scala:361)
	at kafka.log.LogManager.asyncDelete(LogManager.scala:1022)
	at kafka.server.ReplicaManager.stopPartitions(ReplicaManager.scala:489)
	at kafka.server.ReplicaManager.stopReplicas(ReplicaManager.scala:427)
	at kafka.server.KafkaApis.handleStopReplicaRequest(KafkaApis.scala:284)
	at kafka.server.KafkaApis.handle(KafkaApis.scala:172)
	at kafka.server.KafkaRequestHandler.run(KafkaRequestHandler.scala:74)
	at java.base/java.lang.Thread.run(Thread.java:829)
	Suppressed: java.nio.file.AccessDeniedException: C:\Users\RUNNER~1\AppData\Local\Temp\kafka-logs6847069385745433788\topic-002-0 -> C:\Users\RUNNER~1\AppData\Local\Temp\kafka-logs6847069385745433788\topic-002-0.7cdd8b3b5a8b498a8c39aec442563614-delete
		at java.base/sun.nio.fs.WindowsException.translateToIOException(WindowsException.java:89)
		at java.base/sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:103)
		at java.base/sun.nio.fs.WindowsFileCopy.move(WindowsFileCopy.java:309)
		at java.base/sun.nio.fs.WindowsFileSystemProvider.move(WindowsFileSystemProvider.java:292)
		at java.base/java.nio.file.Files.move(Files.java:1422)
		at org.apache.kafka.common.utils.Utils.atomicMoveWithFallback(Utils.java:937)
		... 16 common frames omitted

Any idea how to fix this issue? 🤔

Hi @guizmaii , this stacktrace doesn't say much to me: when does it occur?

HI @francescopellegrini,

So to be entirely precise here's the full error message:

2021-11-17 06:32:22 [data-plane-kafka-request-handler-3] ERROR kafka.server.LogDirFailureChannel - Error while renaming dir for topic-002-0 in log dir C:\Users\RUNNER~1\AppData\Local\Temp\kafka-logs18161727205134719020
java.nio.file.AccessDeniedException: C:\Users\RUNNER~1\AppData\Local\Temp\kafka-logs18161727205134719020\topic-002-0 -> C:\Users\RUNNER~1\AppData\Local\Temp\kafka-logs18161727205134719020\topic-002-0.8df6f69a8f474c5f9345200176fdcf03-delete
	at java.base/sun.nio.fs.WindowsException.translateToIOException(WindowsException.java:89)
	at java.base/sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:103)
	at java.base/sun.nio.fs.WindowsFileCopy.move(WindowsFileCopy.java:395)
	at java.base/sun.nio.fs.WindowsFileSystemProvider.move(WindowsFileSystemProvider.java:292)
	at java.base/java.nio.file.Files.move(Files.java:1422)
	at org.apache.kafka.common.utils.Utils.atomicMoveWithFallback(Utils.java:940)
	at kafka.log.Log.$anonfun$renameDir$2(Log.scala:1098)
	at kafka.log.Log.renameDir(Log.scala:2482)
	at kafka.log.LogManager.asyncDelete(LogManager.scala:991)
	at kafka.log.LogManager.$anonfun$asyncDelete$3(LogManager.scala:1026)
	at scala.Option.foreach(Option.scala:437)
	at kafka.log.LogManager.$anonfun$asyncDelete$2(LogManager.scala:1024)
	at kafka.log.LogManager.$anonfun$asyncDelete$2$adapted(LogManager.scala:1022)
	at scala.collection.mutable.HashSet$Node.foreach(HashSet.scala:435)
	at scala.collection.mutable.HashSet.foreach(HashSet.scala:361)
	at kafka.log.LogManager.asyncDelete(LogManager.scala:1022)
	at kafka.server.ReplicaManager.stopPartitions(ReplicaManager.scala:489)
	at kafka.server.ReplicaManager.stopReplicas(ReplicaManager.scala:427)
	at kafka.server.KafkaApis.handleStopReplicaRequest(KafkaApis.scala:284)
	at kafka.server.KafkaApis.handle(KafkaApis.scala:172)
	at kafka.server.KafkaRequestHandler.run(KafkaRequestHandler.scala:74)
	at java.base/java.lang.Thread.run(Thread.java:829)
	Suppressed: java.nio.file.AccessDeniedException: C:\Users\RUNNER~1\AppData\Local\Temp\kafka-logs18161727205134719020\topic-002-0 -> C:\Users\RUNNER~1\AppData\Local\Temp\kafka-logs18161727205134719020\topic-002-0.8df6f69a8f474c5f9345200176fdcf03-delete
		at java.base/sun.nio.fs.WindowsException.translateToIOException(WindowsException.java:89)
		at java.base/sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:103)
		at java.base/sun.nio.fs.WindowsFileCopy.move(WindowsFileCopy.java:309)
		at java.base/sun.nio.fs.WindowsFileSystemProvider.move(WindowsFileSystemProvider.java:292)
		at java.base/java.nio.file.Files.move(Files.java:1422)
		at org.apache.kafka.common.utils.Utils.atomicMoveWithFallback(Utils.java:937)
		... 16 common frames omitted
2021-11-17 06:32:22 [data-plane-kafka-request-handler-3] ERROR state.change.logger - [Broker id=0] Ignoring StopReplica request (delete=true) from controller 0 with correlation id 7 epoch 1 for partition topic-002-0 as the local replica for the partition is in an offline log directory
2021-11-17 06:32:22 [LogDirFailureHandler] ERROR kafka.log.LogManager - Shutdown broker because all log dirs in C:\Users\RUNNER~1\AppData\Local\Temp\kafka-logs18161727205134719020 have failed

and it only occurs when I delete a topic.
Here, the name of the topic that I try to delete is "topic-002".
If I comment the line in my test that deletes the topic (the test still creates the topics and verifies that the topic has effectively been created) then the test passes

I ran the unmodified test (deleting the topic) on a local Windows 10 and the test passes.

i didnt get previously this error, but now i am getting similar error but when writing meta.properties file:

ERROR kafka.server.BrokerMetadataCheckpoint - Failed to write meta.properties due to
java.nio.file.AccessDeniedException: C:\Users\AVTUMX~1\AppData\Local\Temp\kafka-logs1790594500627329176
at sun.nio.fs.WindowsException.translateToIOException(WindowsException.java:83)
at sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:97)
at sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:102)
at sun.nio.fs.WindowsFileSystemProvider.newFileChannel(WindowsFileSystemProvider.java:115)
at java.nio.channels.FileChannel.open(FileChannel.java:287)
at java.nio.channels.FileChannel.open(FileChannel.java:335)
at org.apache.kafka.common.utils.Utils.flushDir(Utils.java:953)
at org.apache.kafka.common.utils.Utils.atomicMoveWithFallback(Utils.java:941)
at org.apache.kafka.common.utils.Utils.atomicMoveWithFallback(Utils.java:916)
at kafka.server.BrokerMetadataCheckpoint.liftedTree1$1(BrokerMetadataCheckpoint.scala:214)
at kafka.server.BrokerMetadataCheckpoint.write(BrokerMetadataCheckpoint.scala:204)
at kafka.server.KafkaServer.$anonfun$checkpointBrokerMetadata$2(KafkaServer.scala:772)
at kafka.server.KafkaServer.$anonfun$checkpointBrokerMetadata$2$adapted(KafkaServer.scala:770)
at scala.collection.TraversableLike$WithFilter.$anonfun$foreach$1(TraversableLike.scala:924)
at scala.collection.IndexedSeqOptimized.foreach(IndexedSeqOptimized.scala:36)
at scala.collection.IndexedSeqOptimized.foreach$(IndexedSeqOptimized.scala:33)
at scala.collection.mutable.WrappedArray.foreach(WrappedArray.scala:38)
at scala.collection.TraversableLike$WithFilter.foreach(TraversableLike.scala:923)
at kafka.server.KafkaServer.checkpointBrokerMetadata(KafkaServer.scala:770)
at kafka.server.KafkaServer.startup(KafkaServer.scala:322)
at io.github.embeddedkafka.ops.KafkaOps.startKafka(kafkaOps.scala:53)
at io.github.embeddedkafka.ops.KafkaOps.startKafka$(kafkaOps.scala:26)
at io.github.embeddedkafka.schemaregistry.EmbeddedKafka$.startKafka(EmbeddedKafka.scala:65)
at io.github.embeddedkafka.schemaregistry.EmbeddedKafka$.start(EmbeddedKafka.scala:83)

I close this issue. The error is due to Kafka which does not officially support Windows and so some of its operations are just not working on Windows, like deleting a topic for example.