Hi Martijn de Bruijn, I think I've reponsed your other mail. But you're right:
> On several places FileChannel.open(path, StandardOpenOption.READ) is called which will always fail on Windows when path is a directory. Yes, we tried to flush(fsync) data on directory to make sure it's successfully stored in disk, but didn't make sure if it works in Windows. The fix will be in v3.1.0 (which should be released soon), and v3.0.1. Thank you. Luke On Thu, Dec 9, 2021 at 3:27 PM de Bruijn, M. (Martijn) <[email protected]> wrote: > We are upgrading our Spring Boot applications to Spring Boot 2.6.1. > Spring Boot 2.6.1 upgrade our Kafka dependency from 2.7.1 to 3.0.0. > After upgrading I'm getting a AccessDeniedException on all my tests using > @EmbeddedKafka. > > Caused by: java.nio.file.AccessDeniedException: > C:\Temp\spring.kafka.ae934565-33bc-4073-ab06-59ce265490369531329615041832669 > 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.WindowsException.rethrowAsIOException(WindowsException.java:108) > at > java.base/sun.nio.fs.WindowsFileSystemProvider.newFileChannel(WindowsFileSystemProvider.java:121) > at java.base/java.nio.channels.FileChannel.open(FileChannel.java:298) > at java.base/java.nio.channels.FileChannel.open(FileChannel.java:357) > 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) > > I've been searching in the Kafka source code for the cause of the error > and it seems the Utils.flushDir is causing troubles on Windows. > On several places FileChannel.open(path, StandardOpenOption.READ) is > called which will always fail on Windows when path is a directory. See: > https://mail.openjdk.java.net/pipermail/nio-dev/2013-February/002123.html > > Another example of failing code on Windows is the > kafka.log.LogManager.createAndValidateLogDirs method which calls the > Utils.flushDir(dir.toPath.toAbsolutePath.normalize.getParent) with a > directory as parm. This will always fail on Windows. > > How can this be solved? (I can't find a related Kafka Jira issue) > > > More related reports: > > https://stackoverflow.com/questions/70182684/failed-to-start-kafka-server-in-window/70183556 > > > Regards, > Martijn de Bruijn > Software engineer >
