provectus / kafka-ui

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

Feature: Make it possible to use UI exclusively for SR and KC #1076

Open akamensky opened 2 years ago

akamensky commented 2 years ago

Describe the bug

Both SchemaRegistry and KafkaConnect do not require any connection to Kafka/Zookeeper to be able to check data in them or manage them. However this UI falls flat on the face when attempting to run this setup.

I believe this UI should be useable for configurations where we only need to view schemas or manage KafkaConnect. With this bug it is not.

Set up Docker master branch latest

Steps to Reproduce Steps to reproduce the behavior:

  1. Configure a cluster with only SR configuration defined (no ZK,Kafka)

Expected behavior Can browse schemas

Actual behavior 500 errors everywhere, even no "Schema Registry" in cluster options.

Example configuration

version: '2'

services:
  kafka-ui:
    image: provectuslabs/kafka-ui:master
    ports:
      - 8080:8080
    environment:
      SERVER_SERVLET_CONTEXT_PATH: "/kafkaui"
      SPRING_CODEC_MAX_IN_MEMORY_SIZE: "20MB"
      LOGGING_LEVEL_ROOT: "WARN"
      LOGGING_LEVEL_COM_PROVECTUS: "WARN"

      KAFKA_CLUSTERS_0_NAME: cluster_name
      KAFKA_CLUSTERS_0_READONLY: "true"
      KAFKA_CLUSTERS_0_SCHEMAREGISTRY: http://schemaregistry01:8081,http://schemaregistry02:8081,http://schemaregistry03:8081

Log errors

1.

09:45:49.502 [parallel-2] ERROR com.provectus.kafka.ui.service.MetricsService - Failed to collect cluster cluster_name info
java.lang.NullPointerException: null
    at java.util.concurrent.ConcurrentHashMap.putVal(Unknown Source) ~[?:?]
    at java.util.concurrent.ConcurrentHashMap.put(Unknown Source) ~[?:?]
    at java.util.Properties.put(Unknown Source) ~[?:?]
    at com.provectus.kafka.ui.service.AdminClientServiceImpl.lambda$createAdminClient$2(AdminClientServiceImpl.java:38) ~[classes!/:?]
    at reactor.core.publisher.MonoSupplier.call(MonoSupplier.java:85) ~[reactor-core-3.3.2.RELEASE.jar!/:3.3.2.RELEASE]
    at reactor.core.publisher.FluxFlatMap.trySubscribeScalarMap(FluxFlatMap.java:126) [reactor-core-3.3.2.RELEASE.jar!/:3.3.2.RELEASE]
    at reactor.core.publisher.MonoFlatMap.subscribeOrReturn(MonoFlatMap.java:53) [reactor-core-3.3.2.RELEASE.jar!/:3.3.2.RELEASE]
    at reactor.core.publisher.Mono.subscribe(Mono.java:4090) [reactor-core-3.3.2.RELEASE.jar!/:3.3.2.RELEASE]
    at reactor.core.publisher.FluxSwitchIfEmpty$SwitchIfEmptySubscriber.onComplete(FluxSwitchIfEmpty.java:75) [reactor-core-3.3.2.RELEASE.jar!/:3.3.2.RELEASE]
    at reactor.core.publisher.Operators.complete(Operators.java:132) [reactor-core-3.3.2.RELEASE.jar!/:3.3.2.RELEASE]
    at reactor.core.publisher.MonoEmpty.subscribe(MonoEmpty.java:45) [reactor-core-3.3.2.RELEASE.jar!/:3.3.2.RELEASE]
    at reactor.core.publisher.Mono.subscribe(Mono.java:4105) [reactor-core-3.3.2.RELEASE.jar!/:3.3.2.RELEASE]
    at reactor.core.publisher.FluxFlatMap$FlatMapMain.onNext(FluxFlatMap.java:418) [reactor-core-3.3.2.RELEASE.jar!/:3.3.2.RELEASE]
    at reactor.core.publisher.FluxMap$MapSubscriber.onNext(FluxMap.java:114) [reactor-core-3.3.2.RELEASE.jar!/:3.3.2.RELEASE]
    at reactor.core.publisher.FluxPublishOn$PublishOnSubscriber.runAsync(FluxPublishOn.java:398) [reactor-core-3.3.2.RELEASE.jar!/:3.3.2.RELEASE]
    at reactor.core.publisher.FluxPublishOn$PublishOnSubscriber.run(FluxPublishOn.java:484) [reactor-core-3.3.2.RELEASE.jar!/:3.3.2.RELEASE]
    at reactor.core.scheduler.WorkerTask.call(WorkerTask.java:84) [reactor-core-3.3.2.RELEASE.jar!/:3.3.2.RELEASE]
    at reactor.core.scheduler.WorkerTask.call(WorkerTask.java:37) [reactor-core-3.3.2.RELEASE.jar!/:3.3.2.RELEASE]
    at java.util.concurrent.FutureTask.run(Unknown Source) [?:?]
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(Unknown Source) [?:?]
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) [?:?]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) [?:?]
    at java.lang.Thread.run(Unknown Source) [?:?]
  1. Navigating to any menu item results in:
09:45:51.317 [boundedElastic-2] WARN  com.provectus.kafka.ui.exception.ErrorCode - Multiple class com.provectus.kafka.ui.exception.ErrorCode values refer to code 4001
09:45:51.325 [boundedElastic-2] ERROR org.springframework.boot.autoconfigure.web.reactive.error.AbstractErrorWebExceptionHandler - [303296dd]  500 Server Error for HTTP GET "/kafkaui/api/clusters/cluster_name/consumer-groups"
java.lang.NullPointerException: null
    at java.util.concurrent.ConcurrentHashMap.putVal(Unknown Source) ~[?:?]
    Suppressed: reactor.core.publisher.FluxOnAssembly$OnAssemblyException: 
Error has been observed at the following site(s):
    |_ checkpoint ⇢ Handler com.provectus.kafka.ui.controller.ConsumerGroupsController#getConsumerGroups(String, ServerWebExchange) [DispatcherHandler]
    |_ checkpoint ⇢ com.provectus.kafka.ui.config.CustomWebFilter [DefaultWebFilterChain]
    |_ checkpoint ⇢ com.provectus.kafka.ui.config.ReadOnlyModeFilter [DefaultWebFilterChain]
    |_ checkpoint ⇢ org.springframework.security.web.server.authorization.AuthorizationWebFilter [DefaultWebFilterChain]
    |_ checkpoint ⇢ org.springframework.security.web.server.authorization.ExceptionTranslationWebFilter [DefaultWebFilterChain]
    |_ checkpoint ⇢ org.springframework.security.web.server.authentication.logout.LogoutWebFilter [DefaultWebFilterChain]
    |_ checkpoint ⇢ org.springframework.security.web.server.savedrequest.ServerRequestCacheWebFilter [DefaultWebFilterChain]
    |_ checkpoint ⇢ org.springframework.security.web.server.context.SecurityContextServerWebExchangeWebFilter [DefaultWebFilterChain]
    |_ checkpoint ⇢ org.springframework.security.web.server.context.ReactorContextWebFilter [DefaultWebFilterChain]
    |_ checkpoint ⇢ org.springframework.security.web.server.header.HttpHeaderWriterWebFilter [DefaultWebFilterChain]
    |_ checkpoint ⇢ org.springframework.security.config.web.server.ServerHttpSecurity$ServerWebExchangeReactorContextWebFilter [DefaultWebFilterChain]
    |_ checkpoint ⇢ org.springframework.security.web.server.WebFilterChainProxy [DefaultWebFilterChain]
    |_ checkpoint ⇢ HTTP GET "/kafkaui/api/clusters/cluster_name/consumer-groups" [ExceptionHandlingWebHandler]
Stack trace:
        at java.util.concurrent.ConcurrentHashMap.putVal(Unknown Source) ~[?:?]
        at java.util.concurrent.ConcurrentHashMap.put(Unknown Source) ~[?:?]
        at java.util.Properties.put(Unknown Source) ~[?:?]
        at com.provectus.kafka.ui.service.AdminClientServiceImpl.lambda$createAdminClient$2(AdminClientServiceImpl.java:38) ~[classes!/:?]
        at reactor.core.publisher.MonoSupplier.call(MonoSupplier.java:85) ~[reactor-core-3.3.2.RELEASE.jar!/:3.3.2.RELEASE]
        at reactor.core.publisher.FluxFlatMap.trySubscribeScalarMap(FluxFlatMap.java:126) [reactor-core-3.3.2.RELEASE.jar!/:3.3.2.RELEASE]
        at reactor.core.publisher.MonoFlatMap.subscribeOrReturn(MonoFlatMap.java:53) [reactor-core-3.3.2.RELEASE.jar!/:3.3.2.RELEASE]
        at reactor.core.publisher.Mono.subscribe(Mono.java:4090) [reactor-core-3.3.2.RELEASE.jar!/:3.3.2.RELEASE]
        at reactor.core.publisher.FluxSwitchIfEmpty$SwitchIfEmptySubscriber.onComplete(FluxSwitchIfEmpty.java:75) [reactor-core-3.3.2.RELEASE.jar!/:3.3.2.RELEASE]
        at reactor.core.publisher.Operators.complete(Operators.java:132) [reactor-core-3.3.2.RELEASE.jar!/:3.3.2.RELEASE]
        at reactor.core.publisher.MonoEmpty.subscribe(MonoEmpty.java:45) [reactor-core-3.3.2.RELEASE.jar!/:3.3.2.RELEASE]
        at reactor.core.publisher.InternalMonoOperator.subscribe(InternalMonoOperator.java:55) [reactor-core-3.3.2.RELEASE.jar!/:3.3.2.RELEASE]
        at reactor.core.publisher.MonoFlatMap$FlatMapMain.onNext(MonoFlatMap.java:150) [reactor-core-3.3.2.RELEASE.jar!/:3.3.2.RELEASE]
        at reactor.core.publisher.Operators$MonoSubscriber.complete(Operators.java:1637) [reactor-core-3.3.2.RELEASE.jar!/:3.3.2.RELEASE]
        at reactor.core.publisher.MonoFlatMap$FlatMapInner.onNext(MonoFlatMap.java:241) [reactor-core-3.3.2.RELEASE.jar!/:3.3.2.RELEASE]
        at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onNext(FluxOnErrorResume.java:73) [reactor-core-3.3.2.RELEASE.jar!/:3.3.2.RELEASE]
        at reactor.core.publisher.FluxPeekFuseable$PeekFuseableSubscriber.onNext(FluxPeekFuseable.java:203) [reactor-core-3.3.2.RELEASE.jar!/:3.3.2.RELEASE]
        at reactor.core.publisher.FluxPeekFuseable$PeekFuseableSubscriber.onNext(FluxPeekFuseable.java:203) [reactor-core-3.3.2.RELEASE.jar!/:3.3.2.RELEASE]
        at reactor.core.publisher.Operators$MonoSubscriber.complete(Operators.java:1637) [reactor-core-3.3.2.RELEASE.jar!/:3.3.2.RELEASE]
        at reactor.core.publisher.MonoIgnoreThen$ThenAcceptInner.onNext(MonoIgnoreThen.java:296) [reactor-core-3.3.2.RELEASE.jar!/:3.3.2.RELEASE]
        at reactor.core.publisher.Operators$MonoSubscriber.complete(Operators.java:1637) [reactor-core-3.3.2.RELEASE.jar!/:3.3.2.RELEASE]
        at reactor.core.publisher.MonoFlatMap$FlatMapMain.onNext(MonoFlatMap.java:144) [reactor-core-3.3.2.RELEASE.jar!/:3.3.2.RELEASE]
        at reactor.core.publisher.Operators$MonoSubscriber.complete(Operators.java:1637) [reactor-core-3.3.2.RELEASE.jar!/:3.3.2.RELEASE]
        at reactor.core.publisher.MonoZip$ZipCoordinator.signal(MonoZip.java:247) [reactor-core-3.3.2.RELEASE.jar!/:3.3.2.RELEASE]
        at reactor.core.publisher.MonoZip$ZipInner.onNext(MonoZip.java:329) [reactor-core-3.3.2.RELEASE.jar!/:3.3.2.RELEASE]
        at reactor.core.publisher.MonoPeekTerminal$MonoTerminalPeekSubscriber.onNext(MonoPeekTerminal.java:173) [reactor-core-3.3.2.RELEASE.jar!/:3.3.2.RELEASE]
        at reactor.core.publisher.Operators$ScalarSubscription.request(Operators.java:2199) [reactor-core-3.3.2.RELEASE.jar!/:3.3.2.RELEASE]
        at reactor.core.publisher.MonoPeekTerminal$MonoTerminalPeekSubscriber.request(MonoPeekTerminal.java:132) [reactor-core-3.3.2.RELEASE.jar!/:3.3.2.RELEASE]
        at reactor.core.publisher.MonoZip$ZipInner.onSubscribe(MonoZip.java:318) [reactor-core-3.3.2.RELEASE.jar!/:3.3.2.RELEASE]
        at reactor.core.publisher.MonoPeekTerminal$MonoTerminalPeekSubscriber.onSubscribe(MonoPeekTerminal.java:145) [reactor-core-3.3.2.RELEASE.jar!/:3.3.2.RELEASE]
        at reactor.core.publisher.MonoJust.subscribe(MonoJust.java:54) [reactor-core-3.3.2.RELEASE.jar!/:3.3.2.RELEASE]
        at reactor.core.publisher.Mono.subscribe(Mono.java:4105) [reactor-core-3.3.2.RELEASE.jar!/:3.3.2.RELEASE]
        at reactor.core.publisher.MonoZip.subscribe(MonoZip.java:128) [reactor-core-3.3.2.RELEASE.jar!/:3.3.2.RELEASE]
        at reactor.core.publisher.InternalMonoOperator.subscribe(InternalMonoOperator.java:55) [reactor-core-3.3.2.RELEASE.jar!/:3.3.2.RELEASE]
        at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:52) [reactor-core-3.3.2.RELEASE.jar!/:3.3.2.RELEASE]
        at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.drain(MonoIgnoreThen.java:153) [reactor-core-3.3.2.RELEASE.jar!/:3.3.2.RELEASE]
        at reactor.core.publisher.MonoIgnoreThen.subscribe(MonoIgnoreThen.java:56) [reactor-core-3.3.2.RELEASE.jar!/:3.3.2.RELEASE]
        at reactor.core.publisher.InternalMonoOperator.subscribe(InternalMonoOperator.java:55) [reactor-core-3.3.2.RELEASE.jar!/:3.3.2.RELEASE]
        at reactor.core.publisher.MonoFlatMap$FlatMapMain.onNext(MonoFlatMap.java:150) [reactor-core-3.3.2.RELEASE.jar!/:3.3.2.RELEASE]
        at reactor.core.publisher.FluxSwitchIfEmpty$SwitchIfEmptySubscriber.onNext(FluxSwitchIfEmpty.java:67) [reactor-core-3.3.2.RELEASE.jar!/:3.3.2.RELEASE]
        at reactor.core.publisher.MonoNext$NextSubscriber.onNext(MonoNext.java:76) [reactor-core-3.3.2.RELEASE.jar!/:3.3.2.RELEASE]
        at reactor.core.publisher.FluxConcatMap$ConcatMapImmediate.innerNext(FluxConcatMap.java:274) [reactor-core-3.3.2.RELEASE.jar!/:3.3.2.RELEASE]
        at reactor.core.publisher.FluxConcatMap$ConcatMapInner.onNext(FluxConcatMap.java:851) [reactor-core-3.3.2.RELEASE.jar!/:3.3.2.RELEASE]
        at reactor.core.publisher.FluxMapFuseable$MapFuseableSubscriber.onNext(FluxMapFuseable.java:121) [reactor-core-3.3.2.RELEASE.jar!/:3.3.2.RELEASE]
        at reactor.core.publisher.MonoPeekTerminal$MonoTerminalPeekSubscriber.onNext(MonoPeekTerminal.java:173) [reactor-core-3.3.2.RELEASE.jar!/:3.3.2.RELEASE]
        at reactor.core.publisher.Operators$ScalarSubscription.request(Operators.java:2199) [reactor-core-3.3.2.RELEASE.jar!/:3.3.2.RELEASE]
        at reactor.core.publisher.MonoPeekTerminal$MonoTerminalPeekSubscriber.request(MonoPeekTerminal.java:132) [reactor-core-3.3.2.RELEASE.jar!/:3.3.2.RELEASE]
        at reactor.core.publisher.FluxMapFuseable$MapFuseableSubscriber.request(FluxMapFuseable.java:162) [reactor-core-3.3.2.RELEASE.jar!/:3.3.2.RELEASE]
        at reactor.core.publisher.Operators$MultiSubscriptionSubscriber.set(Operators.java:2007) [reactor-core-3.3.2.RELEASE.jar!/:3.3.2.RELEASE]
        at reactor.core.publisher.Operators$MultiSubscriptionSubscriber.onSubscribe(Operators.java:1881) [reactor-core-3.3.2.RELEASE.jar!/:3.3.2.RELEASE]
        at reactor.core.publisher.FluxMapFuseable$MapFuseableSubscriber.onSubscribe(FluxMapFuseable.java:90) [reactor-core-3.3.2.RELEASE.jar!/:3.3.2.RELEASE]
        at reactor.core.publisher.MonoPeekTerminal$MonoTerminalPeekSubscriber.onSubscribe(MonoPeekTerminal.java:145) [reactor-core-3.3.2.RELEASE.jar!/:3.3.2.RELEASE]
        at reactor.core.publisher.MonoJust.subscribe(MonoJust.java:54) [reactor-core-3.3.2.RELEASE.jar!/:3.3.2.RELEASE]
        at reactor.core.publisher.Mono.subscribe(Mono.java:4105) [reactor-core-3.3.2.RELEASE.jar!/:3.3.2.RELEASE]
        at reactor.core.publisher.FluxConcatMap$ConcatMapImmediate.drain(FluxConcatMap.java:441) [reactor-core-3.3.2.RELEASE.jar!/:3.3.2.RELEASE]
        at reactor.core.publisher.FluxConcatMap$ConcatMapImmediate.onSubscribe(FluxConcatMap.java:211) [reactor-core-3.3.2.RELEASE.jar!/:3.3.2.RELEASE]
        at reactor.core.publisher.FluxIterable.subscribe(FluxIterable.java:139) [reactor-core-3.3.2.RELEASE.jar!/:3.3.2.RELEASE]
        at reactor.core.publisher.FluxIterable.subscribe(FluxIterable.java:63) [reactor-core-3.3.2.RELEASE.jar!/:3.3.2.RELEASE]
        at reactor.core.publisher.InternalMonoOperator.subscribe(InternalMonoOperator.java:55) [reactor-core-3.3.2.RELEASE.jar!/:3.3.2.RELEASE]
        at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:52) [reactor-core-3.3.2.RELEASE.jar!/:3.3.2.RELEASE]
        at reactor.core.publisher.InternalMonoOperator.subscribe(InternalMonoOperator.java:55) [reactor-core-3.3.2.RELEASE.jar!/:3.3.2.RELEASE]
        at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:52) [reactor-core-3.3.2.RELEASE.jar!/:3.3.2.RELEASE]
        at reactor.core.publisher.InternalMonoOperator.subscribe(InternalMonoOperator.java:55) [reactor-core-3.3.2.RELEASE.jar!/:3.3.2.RELEASE]
        at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:52) [reactor-core-3.3.2.RELEASE.jar!/:3.3.2.RELEASE]
        at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:52) [reactor-core-3.3.2.RELEASE.jar!/:3.3.2.RELEASE]
        at reactor.core.publisher.Mono.subscribe(Mono.java:4105) [reactor-core-3.3.2.RELEASE.jar!/:3.3.2.RELEASE]
        at reactor.core.publisher.FluxSwitchIfEmpty$SwitchIfEmptySubscriber.onComplete(FluxSwitchIfEmpty.java:75) [reactor-core-3.3.2.RELEASE.jar!/:3.3.2.RELEASE]
        at reactor.core.publisher.MonoFlatMap$FlatMapMain.onNext(MonoFlatMap.java:141) [reactor-core-3.3.2.RELEASE.jar!/:3.3.2.RELEASE]
        at reactor.core.publisher.FluxSwitchIfEmpty$SwitchIfEmptySubscriber.onNext(FluxSwitchIfEmpty.java:67) [reactor-core-3.3.2.RELEASE.jar!/:3.3.2.RELEASE]
        at reactor.core.publisher.FluxFilter$FilterSubscriber.onNext(FluxFilter.java:107) [reactor-core-3.3.2.RELEASE.jar!/:3.3.2.RELEASE]
        at reactor.core.publisher.FluxDefaultIfEmpty$DefaultIfEmptySubscriber.onNext(FluxDefaultIfEmpty.java:92) [reactor-core-3.3.2.RELEASE.jar!/:3.3.2.RELEASE]
        at reactor.core.publisher.MonoNext$NextSubscriber.onNext(MonoNext.java:76) [reactor-core-3.3.2.RELEASE.jar!/:3.3.2.RELEASE]
        at reactor.core.publisher.FluxConcatMap$ConcatMapImmediate.innerNext(FluxConcatMap.java:274) [reactor-core-3.3.2.RELEASE.jar!/:3.3.2.RELEASE]
        at reactor.core.publisher.FluxConcatMap$ConcatMapInner.onNext(FluxConcatMap.java:851) [reactor-core-3.3.2.RELEASE.jar!/:3.3.2.RELEASE]
        at reactor.core.publisher.Operators$MonoSubscriber.complete(Operators.java:1637) [reactor-core-3.3.2.RELEASE.jar!/:3.3.2.RELEASE]
        at reactor.core.publisher.MonoFlatMap$FlatMapMain.onNext(MonoFlatMap.java:144) [reactor-core-3.3.2.RELEASE.jar!/:3.3.2.RELEASE]
        at reactor.core.publisher.FluxMapFuseable$MapFuseableSubscriber.onNext(FluxMapFuseable.java:121) [reactor-core-3.3.2.RELEASE.jar!/:3.3.2.RELEASE]
        at reactor.core.publisher.FluxFilterFuseable$FilterFuseableSubscriber.onNext(FluxFilterFuseable.java:112) [reactor-core-3.3.2.RELEASE.jar!/:3.3.2.RELEASE]
        at reactor.core.publisher.Operators$ScalarSubscription.request(Operators.java:2199) [reactor-core-3.3.2.RELEASE.jar!/:3.3.2.RELEASE]
        at reactor.core.publisher.FluxFilterFuseable$FilterFuseableSubscriber.request(FluxFilterFuseable.java:184) [reactor-core-3.3.2.RELEASE.jar!/:3.3.2.RELEASE]
        at reactor.core.publisher.FluxMapFuseable$MapFuseableSubscriber.request(FluxMapFuseable.java:162) [reactor-core-3.3.2.RELEASE.jar!/:3.3.2.RELEASE]
        at reactor.core.publisher.MonoFlatMap$FlatMapMain.onSubscribe(MonoFlatMap.java:103) [reactor-core-3.3.2.RELEASE.jar!/:3.3.2.RELEASE]
        at reactor.core.publisher.FluxMapFuseable$MapFuseableSubscriber.onSubscribe(FluxMapFuseable.java:90) [reactor-core-3.3.2.RELEASE.jar!/:3.3.2.RELEASE]
        at reactor.core.publisher.FluxFilterFuseable$FilterFuseableSubscriber.onSubscribe(FluxFilterFuseable.java:81) [reactor-core-3.3.2.RELEASE.jar!/:3.3.2.RELEASE]
        at reactor.core.publisher.MonoJust.subscribe(MonoJust.java:54) [reactor-core-3.3.2.RELEASE.jar!/:3.3.2.RELEASE]
        at reactor.core.publisher.Mono.subscribe(Mono.java:4105) [reactor-core-3.3.2.RELEASE.jar!/:3.3.2.RELEASE]
        at reactor.core.publisher.FluxConcatMap$ConcatMapImmediate.drain(FluxConcatMap.java:441) [reactor-core-3.3.2.RELEASE.jar!/:3.3.2.RELEASE]
        at reactor.core.publisher.FluxConcatMap$ConcatMapImmediate.onSubscribe(FluxConcatMap.java:211) [reactor-core-3.3.2.RELEASE.jar!/:3.3.2.RELEASE]
        at reactor.core.publisher.FluxIterable.subscribe(FluxIterable.java:139) [reactor-core-3.3.2.RELEASE.jar!/:3.3.2.RELEASE]
        at reactor.core.publisher.FluxIterable.subscribe(FluxIterable.java:63) [reactor-core-3.3.2.RELEASE.jar!/:3.3.2.RELEASE]
        at reactor.core.publisher.InternalMonoOperator.subscribe(InternalMonoOperator.java:55) [reactor-core-3.3.2.RELEASE.jar!/:3.3.2.RELEASE]
        at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:52) [reactor-core-3.3.2.RELEASE.jar!/:3.3.2.RELEASE]
        at reactor.core.publisher.InternalMonoOperator.subscribe(InternalMonoOperator.java:55) [reactor-core-3.3.2.RELEASE.jar!/:3.3.2.RELEASE]
        at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:52) [reactor-core-3.3.2.RELEASE.jar!/:3.3.2.RELEASE]
        at reactor.core.publisher.Mono.subscribe(Mono.java:4105) [reactor-core-3.3.2.RELEASE.jar!/:3.3.2.RELEASE]
        at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.drain(MonoIgnoreThen.java:172) [reactor-core-3.3.2.RELEASE.jar!/:3.3.2.RELEASE]
        at reactor.core.publisher.MonoIgnoreThen.subscribe(MonoIgnoreThen.java:56) [reactor-core-3.3.2.RELEASE.jar!/:3.3.2.RELEASE]
        at reactor.core.publisher.Mono.subscribe(Mono.java:4105) [reactor-core-3.3.2.RELEASE.jar!/:3.3.2.RELEASE]
        at reactor.core.publisher.FluxSwitchIfEmpty$SwitchIfEmptySubscriber.onComplete(FluxSwitchIfEmpty.java:75) [reactor-core-3.3.2.RELEASE.jar!/:3.3.2.RELEASE]
        at reactor.core.publisher.FluxFilter$FilterSubscriber.onComplete(FluxFilter.java:160) [reactor-core-3.3.2.RELEASE.jar!/:3.3.2.RELEASE]
        at reactor.core.publisher.FluxSwitchIfEmpty$SwitchIfEmptySubscriber.onComplete(FluxSwitchIfEmpty.java:78) [reactor-core-3.3.2.RELEASE.jar!/:3.3.2.RELEASE]
        at reactor.core.publisher.Operators$ScalarSubscription.request(Operators.java:2201) [reactor-core-3.3.2.RELEASE.jar!/:3.3.2.RELEASE]
        at reactor.core.publisher.Operators$MultiSubscriptionSubscriber.set(Operators.java:2007) [reactor-core-3.3.2.RELEASE.jar!/:3.3.2.RELEASE]
        at reactor.core.publisher.Operators$MultiSubscriptionSubscriber.onSubscribe(Operators.java:1881) [reactor-core-3.3.2.RELEASE.jar!/:3.3.2.RELEASE]
        at reactor.core.publisher.MonoJust.subscribe(MonoJust.java:54) [reactor-core-3.3.2.RELEASE.jar!/:3.3.2.RELEASE]
        at reactor.core.publisher.Mono.subscribe(Mono.java:4105) [reactor-core-3.3.2.RELEASE.jar!/:3.3.2.RELEASE]
        at reactor.core.publisher.FluxSwitchIfEmpty$SwitchIfEmptySubscriber.onComplete(FluxSwitchIfEmpty.java:75) [reactor-core-3.3.2.RELEASE.jar!/:3.3.2.RELEASE]
        at reactor.core.publisher.MonoNext$NextSubscriber.onComplete(MonoNext.java:96) [reactor-core-3.3.2.RELEASE.jar!/:3.3.2.RELEASE]
        at reactor.core.publisher.FluxFilter$FilterSubscriber.onComplete(FluxFilter.java:160) [reactor-core-3.3.2.RELEASE.jar!/:3.3.2.RELEASE]
        at reactor.core.publisher.FluxFlatMap$FlatMapMain.checkTerminated(FluxFlatMap.java:823) [reactor-core-3.3.2.RELEASE.jar!/:3.3.2.RELEASE]
        at reactor.core.publisher.FluxFlatMap$FlatMapMain.drainLoop(FluxFlatMap.java:589) [reactor-core-3.3.2.RELEASE.jar!/:3.3.2.RELEASE]
        at reactor.core.publisher.FluxFlatMap$FlatMapMain.drain(FluxFlatMap.java:569) [reactor-core-3.3.2.RELEASE.jar!/:3.3.2.RELEASE]
        at reactor.core.publisher.FluxFlatMap$FlatMapMain.onComplete(FluxFlatMap.java:455) [reactor-core-3.3.2.RELEASE.jar!/:3.3.2.RELEASE]
        at reactor.core.publisher.FluxIterable$IterableSubscription.slowPath(FluxIterable.java:265) [reactor-core-3.3.2.RELEASE.jar!/:3.3.2.RELEASE]
        at reactor.core.publisher.FluxIterable$IterableSubscription.request(FluxIterable.java:201) [reactor-core-3.3.2.RELEASE.jar!/:3.3.2.RELEASE]
        at reactor.core.publisher.FluxFlatMap$FlatMapMain.onSubscribe(FluxFlatMap.java:363) [reactor-core-3.3.2.RELEASE.jar!/:3.3.2.RELEASE]
        at reactor.core.publisher.FluxIterable.subscribe(FluxIterable.java:139) [reactor-core-3.3.2.RELEASE.jar!/:3.3.2.RELEASE]
        at reactor.core.publisher.FluxIterable.subscribe(FluxIterable.java:63) [reactor-core-3.3.2.RELEASE.jar!/:3.3.2.RELEASE]
        at reactor.core.publisher.InternalMonoOperator.subscribe(InternalMonoOperator.java:55) [reactor-core-3.3.2.RELEASE.jar!/:3.3.2.RELEASE]
        at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:52) [reactor-core-3.3.2.RELEASE.jar!/:3.3.2.RELEASE]
        at reactor.core.publisher.MonoFlatMap$FlatMapMain.onNext(MonoFlatMap.java:150) [reactor-core-3.3.2.RELEASE.jar!/:3.3.2.RELEASE]
        at reactor.core.publisher.Operators$MonoSubscriber.complete(Operators.java:1637) [reactor-core-3.3.2.RELEASE.jar!/:3.3.2.RELEASE]
        at reactor.core.publisher.FluxDefaultIfEmpty$DefaultIfEmptySubscriber.onComplete(FluxDefaultIfEmpty.java:100) [reactor-core-3.3.2.RELEASE.jar!/:3.3.2.RELEASE]
        at reactor.core.publisher.FluxMap$MapSubscriber.onComplete(FluxMap.java:136) [reactor-core-3.3.2.RELEASE.jar!/:3.3.2.RELEASE]
        at reactor.core.publisher.FluxMap$MapSubscriber.onComplete(FluxMap.java:136) [reactor-core-3.3.2.RELEASE.jar!/:3.3.2.RELEASE]
        at reactor.core.publisher.FluxFilter$FilterSubscriber.onComplete(FluxFilter.java:160) [reactor-core-3.3.2.RELEASE.jar!/:3.3.2.RELEASE]
        at reactor.core.publisher.FluxMap$MapConditionalSubscriber.onComplete(FluxMap.java:262) [reactor-core-3.3.2.RELEASE.jar!/:3.3.2.RELEASE]
        at reactor.core.publisher.Operators$MonoSubscriber.complete(Operators.java:1638) [reactor-core-3.3.2.RELEASE.jar!/:3.3.2.RELEASE]
        at reactor.core.publisher.MonoCacheTime$CoordinatorSubscriber.signalCached(MonoCacheTime.java:320) [reactor-core-3.3.2.RELEASE.jar!/:3.3.2.RELEASE]
        at reactor.core.publisher.MonoCacheTime$CoordinatorSubscriber.onNext(MonoCacheTime.java:337) [reactor-core-3.3.2.RELEASE.jar!/:3.3.2.RELEASE]
        at reactor.core.publisher.FluxPeek$PeekSubscriber.onNext(FluxPeek.java:192) [reactor-core-3.3.2.RELEASE.jar!/:3.3.2.RELEASE]
        at reactor.core.publisher.FluxSwitchIfEmpty$SwitchIfEmptySubscriber.onNext(FluxSwitchIfEmpty.java:67) [reactor-core-3.3.2.RELEASE.jar!/:3.3.2.RELEASE]
        at reactor.core.publisher.FluxMapFuseable$MapFuseableSubscriber.onNext(FluxMapFuseable.java:121) [reactor-core-3.3.2.RELEASE.jar!/:3.3.2.RELEASE]
        at reactor.core.publisher.FluxSubscribeOnCallable$CallableSubscribeOnSubscription.run(FluxSubscribeOnCallable.java:249) [reactor-core-3.3.2.RELEASE.jar!/:3.3.2.RELEASE]
        at reactor.core.scheduler.SchedulerTask.call(SchedulerTask.java:68) [reactor-core-3.3.2.RELEASE.jar!/:3.3.2.RELEASE]
        at reactor.core.scheduler.SchedulerTask.call(SchedulerTask.java:28) [reactor-core-3.3.2.RELEASE.jar!/:3.3.2.RELEASE]
        at java.util.concurrent.FutureTask.run(Unknown Source) [?:?]
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(Unknown Source) [?:?]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) [?:?]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) [?:?]
        at java.lang.Thread.run(Unknown Source) [?:?]
Haarolean commented 2 years ago

Hi Alex, thanks for raising the issue. We'll consider making it possible to run the app w/o kafka in next versions.

jonas-grgt commented 2 years ago

A bit related but when you do not define a zookeeper connection string it displays zookeeper as offline which might be confusing.