obsidiandynamics / kafdrop

Kafka Web UI
Apache License 2.0
5.44k stars 833 forks source link

Kafdrop does not respond without any log messages #187

Closed Hubbitus closed 2 years ago

Hubbitus commented 3 years ago

I've try docker and run directly jar under java 11, same result:

wget --content-disposition https://bintray.com/obsidiandynamics/kafdrop/download_file?file_path=com%2Fobsidiandynamics%2Fkafdrop%2Fkafdrop%2F3.27.0%2Fkafdrop-3.27.0.jar

java --add-opens=java.base/sun.nio.ch=ALL-UNNAMED \
    -jar kafdrop-3.27.0.jar \
        --kafka.brokerConnect=PLAINTEXT://ecsc00a060af.epam.com:9092

2020-09-22 20:41:47.504  INFO 963498 [           main] o.s.b.StartupInfoLogger                  : Starting Kafdrop on hubbitus.epam.laptop with PID 963498 (/home/pasha/@Projects/#Kafka/UIs/kafdrop/kafdrop-3.27.0.jar started by pasha in /home/pasha/@Projects/#Kafka/UIs/kafdrop)
2020-09-22 20:41:47.511  INFO 963498 [           main] o.s.b.SpringApplication                  : No active profile set, falling back to default profiles: default
2020-09-22 20:41:49.241  INFO 963498 [           main] i.u.s.s.ServletContextImpl               : Initializing Spring embedded WebApplicationContext
2020-09-22 20:41:49.241  INFO 963498 [           main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 1676 ms
2020-09-22 20:41:49.798  INFO 963498 [           main] k.c.KafkaConfiguration                   : Checking truststore file kafka.truststore.jks
2020-09-22 20:41:49.799  INFO 963498 [           main] k.c.KafkaConfiguration                   : Checking keystore file kafka.keystore.jks
2020-09-22 20:41:49.799  INFO 963498 [           main] k.c.KafkaConfiguration                   : Checking properties file kafka.properties
2020-09-22 20:41:49.958  INFO 963498 [           main] k.c.KafkaConfiguration                   : Checking truststore file kafka.truststore.jks
2020-09-22 20:41:49.959  INFO 963498 [           main] k.c.KafkaConfiguration                   : Checking keystore file kafka.keystore.jks
2020-09-22 20:41:49.959  INFO 963498 [           main] k.c.KafkaConfiguration                   : Checking properties file kafka.properties
2020-09-22 20:41:50.011  INFO 963498 [           main] k.s.BuildInfo                            : Kafdrop version: 3.27.0, build time: 2020-06-21T23:17:29.657Z
2020-09-22 20:41:50.534  INFO 963498 [           main] o.s.b.a.e.w.EndpointLinksResolver        : Exposing 15 endpoint(s) beneath base path '/actuator'
2020-09-22 20:41:50.629  INFO 963498 [           main] pertySourcedRequestMappingHandlerMapping : Mapped URL path [/v2/api-docs] onto method [public org.springframework.http.ResponseEntity<springfox.documentation.spring.web.json.Json> springfox.documentation.swagger2.web.Swagger2Controller.getDocumentation(java.lang.String,javax.servlet.http.HttpServletRequest)]
2020-09-22 20:41:50.778  INFO 963498 [           main] o.s.s.c.ExecutorConfigurationSupport     : Initializing ExecutorService 'applicationTaskExecutor'
2020-09-22 20:41:51.179  INFO 963498 [           main] d.s.w.p.DocumentationPluginsBootstrapper : Context refreshed
2020-09-22 20:41:51.201  INFO 963498 [           main] d.s.w.p.DocumentationPluginsBootstrapper : Found 1 custom documentation plugin(s)
2020-09-22 20:41:51.278  INFO 963498 [           main] s.d.s.w.s.ApiListingReferenceScanner     : Scanning for api listing references
2020-09-22 20:41:51.436  INFO 963498 [           main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: brokerDetailsJsonUsingGET_1
2020-09-22 20:41:51.510  INFO 963498 [           main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getAllTopicsUsingGET_1
2020-09-22 20:41:51.568  INFO 963498 [           main] o.x.Xnio                                 : XNIO version 3.3.8.Final
2020-09-22 20:41:51.579  INFO 963498 [           main] o.x.n.NioXnio                            : XNIO NIO Implementation Version 3.3.8.Final
2020-09-22 20:41:51.684  INFO 963498 [           main] o.s.b.w.e.u.UndertowServletWebServer     : Undertow started on port(s) 9000 (http) with context path ''
2020-09-22 20:41:51.688  INFO 963498 [           main] o.s.b.StartupInfoLogger                  : Started Kafdrop in 4.524 seconds (JVM running for 5.699)
2020-09-22 20:42:02.142  INFO 963498 [  XNIO-1 task-1] i.u.s.s.ServletContextImpl               : Initializing Spring DispatcherServlet 'dispatcherServlet'
2020-09-22 20:42:02.143  INFO 963498 [  XNIO-1 task-1] o.s.w.s.FrameworkServlet                 : Initializing Servlet 'dispatcherServlet'
2020-09-22 20:42:02.154  INFO 963498 [  XNIO-1 task-1] o.s.w.s.FrameworkServlet                 : Completed initialization in 11 ms
2020-09-22 20:43:27.167  WARN 963498 [  XNIO-1 task-3] i.s.m.p.AbstractSerializableParameter    : Illegal DefaultValue  for parameter type integer

Then try access:

$ http http://localhost:9000/

http: error: Request timed out (30s).

Please note http://localhost:9000/v2/api-docs answer correctly

Napsty commented 3 years ago

Exactly the same issue here, deployed in Kubernetes. Process:

root         1  2.4  3.1 5659300 255484 ?      Ssl  08:46   0:57 java --add-opens=java.base/sun.nio.ch=ALL-UNNAMED -Xss256K -jar /kafdrop-3.27.0/kafdrop-3.27.0.jar

Broker is set via environment variable:

bash-4.2# env | grep -i kafka
kafka_brokerconnect=zoo1.example.com:9092

(Real broker connect domain obfuscated)

As OP mentions, requests to /v2/api-docs work:

bash-4.2# curl -s -o /dev/null -I -w "%{http_code}\n" http://localhost:9000/v2/api-docs
200

Requests to / time out, without any error or in general event being logged.

Version: kafdrop-3.27.0

Hubbitus commented 3 years ago

Yeh, it looks like there some longer timeout. After some time I see in log:

2020-09-23 15:32:45.446 ERROR 1097050 [  XNIO-1 task-2] i.u.s.a.LoggingExceptionHandler          : UT005023: Exception handling request to /

org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.apache.kafka.common.errors.TimeoutException: Timeout of 60000ms expired before the position for partition router.test.datahub.epm_staf.qa.v1.em_ip_interview_feedback-0 could be determined
        at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1013)
        at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:897)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:645)
        at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:882)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:750)
        at io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:74)
        at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:129)
        at kafdrop.config.CorsConfiguration$1.doFilter(CorsConfiguration.java:88)
        at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
        at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
        at org.springframework.boot.actuate.web.trace.servlet.HttpTraceFilter.doFilterInternal(HttpTraceFilter.java:88)
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:118)
        at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
        at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
        at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99)
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:118)
        at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
        at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
        at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:92)
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:118)
        at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
        at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
        at org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:93)
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:118)
        at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
        at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
        at org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.filterAndRecordMetrics(WebMvcMetricsFilter.java:114)
        at org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.doFilterInternal(WebMvcMetricsFilter.java:104)
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:118)
        at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
        at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
        at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:200)
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:118)
        at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
        at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
        at io.undertow.servlet.handlers.FilterHandler.handleRequest(FilterHandler.java:84)
        at io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62)
        at io.undertow.servlet.handlers.ServletChain$1.handleRequest(ServletChain.java:68)
        at io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36)
        at io.undertow.servlet.handlers.RedirectDirHandler.handleRequest(RedirectDirHandler.java:68)
        at io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:132)
        at io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57)
        at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
        at io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46)
        at io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64)
        at io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:60)
        at io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:77)
        at io.undertow.security.handlers.AbstractSecurityContextAssociationHandler.handleRequest(AbstractSecurityContextAssociationHandler.java:43)
        at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
        at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
        at io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:269)
        at io.undertow.servlet.handlers.ServletInitialHandler.access$100(ServletInitialHandler.java:78)
        at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:133)
        at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:130)
        at io.undertow.servlet.core.ServletRequestContextThreadSetupAction$1.call(ServletRequestContextThreadSetupAction.java:48)
        at io.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43)
        at io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:249)
        at io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:78)
        at io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:99)
        at io.undertow.server.Connectors.executeRootHandler(Connectors.java:376)
        at io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:830)
        at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)
        at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630)
        at java.base/java.lang.Thread.run(Thread.java:832)
Caused by: org.apache.kafka.common.errors.TimeoutException: Timeout of 60000ms expired before the position for partition router.test.datahub.epm_staf.qa.v1.em_ip_interview_feedback-0 could be determined

errorAtts: {timestamp=Wed Sep 23 15:32:45 MSK 2020, status=500, error=Internal Server Error, message=Request processing failed; nested exception is org.apache.kafka.common.errors.TimeoutException: Timeout of 60000ms expired before the position for partition router.test.datahub.epm_staf.qa.v1.em_ip_interview_feedback-0 could be determined, trace=org.apache.kafka.common.errors.TimeoutException: Timeout of 60000ms expired before the position for partition router.test.datahub.epm_staf.qa.v1.em_ip_interview_feedback-0 could be determined
, path=/}

But what it meant? On user HTTP request, you synchronously get metadata of all topics?? It is impossible because there are a huge amount of them.

github-actions[bot] commented 2 years ago

This issue is stale because it has been open for 30 days with no activity.

github-actions[bot] commented 2 years ago

This issue was closed because it has been inactive for 14 days since being marked as stale.