Andy Wilkinson created KAFKA-13391:
--------------------------------------

             Summary: Failure on Windows due to AccessDeniedAcception when 
attempting to fsync the parent directory
                 Key: KAFKA-13391
                 URL: https://issues.apache.org/jira/browse/KAFKA-13391
             Project: Kafka
          Issue Type: Bug
          Components: clients
    Affects Versions: 3.0.0
            Reporter: Andy Wilkinson


There appears to be a regression in Kafka 3.0 due to [the 
changes|https://github.com/apache/kafka/commit/66b0c5c64f2969dc62362b9f169ad1d18f64efe9]
 made for KAFKA-3968 that causes a failure on Windows. After upgrading to 
3.0.0, we're seeing failures in Spring Boot's Windows CI such as the following:

{code}
Caused by: java.nio.file.AccessDeniedException: 
C:\Windows\TEMP\spring.kafka.915ab8c1-735c-4c88-8507-8d25fd050621920219824697516859
     
        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 
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.IterableOnceOps.foreach(IterableOnce.scala:563)
        at scala.collection.IterableOnceOps.foreach$(IterableOnce.scala:561)
        at scala.collection.AbstractIterable.foreach(Iterable.scala:919)
        at scala.collection.IterableOps$WithFilter.foreach(Iterable.scala:889)
        at 
kafka.server.KafkaServer.checkpointBrokerMetadata(KafkaServer.scala:770)
        at kafka.server.KafkaServer.startup(KafkaServer.scala:322)
        at kafka.utils.TestUtils$.createServer(TestUtils.scala:175)
        at kafka.utils.TestUtils$.createServer(TestUtils.scala:170)
        at kafka.utils.TestUtils.createServer(TestUtils.scala)
{code}

While I'm [aware that Windows isn't officially 
supported|https://issues.apache.org/jira/browse/KAFKA-12190?focusedCommentId=17264398&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-17264398],
 I think this problem is likely to be a blocker for anyone who uses Windows for 
Kafka-based development work.

I suspect that the attempt to fsync the directory should just be skipped on 
Window. Alternatively, the failure could be ignored on Windows. Lucene [added 
similar functionality in the 
past|https://issues.apache.org/jira/browse/LUCENE-5588] where it looks like 
they opted to ignore IOExceptions on Windows rather than skipping the attempt.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to