provectus / kafka-ui

Open-Source Web UI for Apache Kafka Management
Apache License 2.0
9.57k stars 1.17k forks source link

Unable to mount volume for persistent installation #4455

Open Udit107710 opened 4 months ago

Udit107710 commented 4 months ago

Issue submitter TODO list

Describe the bug (actual behavior)

Whenever a volume is mounted to the docker container, it errors out with the following stack

Standard Commons Logging discovery in action with spring-jcl: please remove commons-logging.jar from classpath in order to avoid potential conflicts
 _   _ ___    __             _                _          _  __      __ _
| | | |_ _|  / _|___ _ _    /_\  _ __ __ _ __| |_  ___  | |/ /__ _ / _| |_____
| |_| || |  |  _/ _ | '_|  / _ \| '_ / _` / _| ' \/ -_) | ' </ _` |  _| / / _`|
 \___/|___| |_| \___|_|   /_/ \_| .__\__,_\__|_||_\___| |_|\_\__,_|_| |_\_\__,|
                                 |_|                                             

2024-05-28 21:12:57,409 ERROR [main] o.s.b.SpringApplication: Application run failed
org.yaml.snakeyaml.error.YAMLException: java.io.IOException: Is a directory
        at org.yaml.snakeyaml.reader.StreamReader.update(StreamReader.java:214)
        at org.yaml.snakeyaml.reader.StreamReader.ensureEnoughData(StreamReader.java:172)
        at org.yaml.snakeyaml.reader.StreamReader.ensureEnoughData(StreamReader.java:167)
        at org.yaml.snakeyaml.reader.StreamReader.peek(StreamReader.java:122)
        at org.yaml.snakeyaml.scanner.ScannerImpl.scanToNextToken(ScannerImpl.java:1204)
        at org.yaml.snakeyaml.scanner.ScannerImpl.fetchMoreTokens(ScannerImpl.java:320)
        at org.yaml.snakeyaml.scanner.ScannerImpl.checkToken(ScannerImpl.java:238)
        at org.yaml.snakeyaml.parser.ParserImpl$ParseImplicitDocumentStart.produce(ParserImpl.java:212)
        at org.yaml.snakeyaml.parser.ParserImpl.peekEvent(ParserImpl.java:162)
        at org.yaml.snakeyaml.parser.ParserImpl.checkEvent(ParserImpl.java:152)
        at org.yaml.snakeyaml.composer.Composer.checkNode(Composer.java:109)
        at org.yaml.snakeyaml.constructor.BaseConstructor.checkData(BaseConstructor.java:149)
        at org.yaml.snakeyaml.Yaml$1.hasNext(Yaml.java:510)
        at org.springframework.beans.factory.config.YamlProcessor.process(YamlProcessor.java:199)
        at org.springframework.beans.factory.config.YamlProcessor.process(YamlProcessor.java:166)
        at org.springframework.boot.env.OriginTrackedYamlLoader.load(OriginTrackedYamlLoader.java:84)
        at org.springframework.boot.env.YamlPropertySourceLoader.load(YamlPropertySourceLoader.java:50)
        at com.provectus.kafka.ui.util.DynamicConfigOperations.loadDynamicPropertySource(DynamicConfigOperations.java:89)
        at com.provectus.kafka.ui.util.DynamicConfigOperations.lambda$dynamicConfigPropertiesInitializer$1(DynamicConfigOperations.java:58)
        at org.springframework.boot.SpringApplication.applyInitializers(SpringApplication.java:607)
        at org.springframework.boot.SpringApplication.prepareContext(SpringApplication.java:387)
        at org.springframework.boot.SpringApplication.run(SpringApplication.java:311)
        at com.provectus.kafka.ui.KafkaUiApplication.startApplication(KafkaUiApplication.java:24)
        at com.provectus.kafka.ui.KafkaUiApplication.main(KafkaUiApplication.java:17)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:568)
        at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:49)
        at org.springframework.boot.loader.Launcher.launch(Launcher.java:95)
        at org.springframework.boot.loader.Launcher.launch(Launcher.java:58)
        at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:65)
        Suppressed: java.io.IOException: Is a directory
                at java.base/sun.nio.ch.FileDispatcherImpl.read0(Native Method)
                at java.base/sun.nio.ch.FileDispatcherImpl.read(FileDispatcherImpl.java:48)
                at java.base/sun.nio.ch.IOUtil.readIntoNativeBuffer(IOUtil.java:330)
                at java.base/sun.nio.ch.IOUtil.read(IOUtil.java:296)
                at java.base/sun.nio.ch.IOUtil.read(IOUtil.java:273)
                at java.base/sun.nio.ch.FileChannelImpl.read(FileChannelImpl.java:232)
                at java.base/sun.nio.ch.ChannelInputStream.read(ChannelInputStream.java:65)
                at java.base/sun.nio.ch.ChannelInputStream.read(ChannelInputStream.java:107)
                at java.base/sun.nio.ch.ChannelInputStream.read(ChannelInputStream.java:101)
                at java.base/java.io.FilterInputStream.read(FilterInputStream.java:132)
                at java.base/java.io.PushbackInputStream.read(PushbackInputStream.java:182)
                at org.yaml.snakeyaml.reader.UnicodeReader.init(UnicodeReader.java:85)
                at org.yaml.snakeyaml.reader.UnicodeReader.close(UnicodeReader.java:112)
                at org.springframework.beans.factory.config.YamlProcessor.process(YamlProcessor.java:198)
                ... 18 common frames omitted

Caused by: java.io.IOException: Is a directory
        at java.base/sun.nio.ch.FileDispatcherImpl.read0(Native Method)
        at java.base/sun.nio.ch.FileDispatcherImpl.read(FileDispatcherImpl.java:48)
        at java.base/sun.nio.ch.IOUtil.readIntoNativeBuffer(IOUtil.java:330)
        at java.base/sun.nio.ch.IOUtil.read(IOUtil.java:296)
        at java.base/sun.nio.ch.IOUtil.read(IOUtil.java:273)
        at java.base/sun.nio.ch.FileChannelImpl.read(FileChannelImpl.java:232)
        at java.base/sun.nio.ch.ChannelInputStream.read(ChannelInputStream.java:65)
        at java.base/sun.nio.ch.ChannelInputStream.read(ChannelInputStream.java:107)
        at java.base/sun.nio.ch.ChannelInputStream.read(ChannelInputStream.java:101)
        at java.base/java.io.FilterInputStream.read(FilterInputStream.java:132)
        at java.base/java.io.PushbackInputStream.read(PushbackInputStream.java:182)
        at org.yaml.snakeyaml.reader.UnicodeReader.init(UnicodeReader.java:85)
        at org.yaml.snakeyaml.reader.UnicodeReader.read(UnicodeReader.java:117)
        at org.yaml.snakeyaml.reader.StreamReader.update(StreamReader.java:179)
        ... 31 common frames omitted

Expected behavior

The volume should get mounted and persistent installation should proceed

Your installation details

  1. Used :latest as well as explicitly specifying v0.7.2
  2. Used volumes ~/kui/config.yml:/etc/kafkaui/dynamic_config.yaml in dockercompose
  3. Used --mount source=kafka-ui-config,target=/etc/kafkaui/dynamic_config.yaml while using docker run

Steps to reproduce

DockerCompose YAML

services:
  kafka-ui:
    container_name: kafka-ui
    image: provectuslabs/kafka-ui:latest
    ports:
      - 8080:8080
    environment:
      DYNAMIC_CONFIG_ENABLED: 'true'
    volumes:
      - ~/kui/config.yml:/etc/kafkaui/dynamic_config.yaml

NOTE: I have a config file at ~/kui/config.yml

Docker run

sudo docker volume create kafka-ui-config sudo docker run -it -p 8080:8080 -e DYNAMIC_CONFIG_ENABLED=true --mount source=kafka-ui-config,target=/etc/kafkaui/dynamic_config.yaml provectuslabs/kafka-ui

Screenshots

No response

Logs

No response

Additional context

No response

github-actions[bot] commented 4 months ago

Hello there Udit107710! 👋

Thank you and congratulations 🎉 for opening your very first issue in this project! 💖

In case you want to claim this issue, please comment down below! We will try to get back to you as soon as we can. 👀

Haarolean commented 4 months ago

This repo is not maintained (#4255). Happy to see your bug reports here: https://github.com/kafbat/kafka-ui