Repository: provectus/kafka-ui
Issue: KSQL is not working with cp-ksqldb-server:5.5.3
Labels: type/bug
scope/backend
status/accepted
status/confirmed

Due to API changes ksql list streams api is not working for cp-ksqldb-server with versions <= 5.5.3

Issue comments:
Hello there iliax! 👋

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. 👀
Thanks for opening issue on behalf of me. I am attaching screenshots for better understanding (if needed)

#### GUI: Where the Streams and Tables are showing as 0
![GUI](https://user-images.githubusercontent.com/55309319/229038964-34f759bc-f068-473a-aacb-0cb7249c4dcb.png)
#### Terminal Window where I can see the Streams:
![WORKINGTERMINAL](https://user-images.githubusercontent.com/55309319/229039020-cfbd6818-40c5-4543-9e7e-28a8d79319d5.png)
#### Query From GUI: I can see the streams
![GUIWorking](https://user-images.githubusercontent.com/55309319/229040193-e2e8e6f4-0a67-4dfe-bee2-3e0312faeb2d.png)
#### XHR Requests:
![xhrrequests](https://user-images.githubusercontent.com/55309319/229039686-e8de843c-e643-42d4-97f1-0bb8308c6241.png)
#### Docker Configuration:
![dockerconfiguration](https://user-images.githubusercontent.com/55309319/229039694-1b4eb2c7-a1e6-4ce0-8cf5-6535e06e45ee.png)
#### Stack Traces
```
kafka-ui           | 2023-03-29 05:41:43,822 ERROR [reactor-http-epoll-2] o.s.b.a.w.r.e.AbstractErrorWebExceptionHandler: [27cdebf5-156]  500 Server Error for HTTP GET "/api/clusters/local-kafka-cluster/ksql/streams"
kafka-ui           | java.lang.IndexOutOfBoundsException: Index -1 out of bounds for length 4
kafka-ui           |    at java.base/jdk.internal.util.Preconditions.outOfBounds(Preconditions.java:64)
kafka-ui           |    Suppressed: reactor.core.publisher.FluxOnAssembly$OnAssemblyException: 
kafka-ui           | Error has been observed at the following site(s):
kafka-ui           |    *__checkpoint ⇢ Handler com.provectus.kafka.ui.controller.KsqlController#listStreams(String, ServerWebExchange) [DispatcherHandler]
kafka-ui           |    *__checkpoint ⇢ com.provectus.kafka.ui.config.ReadOnlyModeFilter [DefaultWebFilterChain]
kafka-ui           |    *__checkpoint ⇢ com.provectus.kafka.ui.config.CustomWebFilter [DefaultWebFilterChain]
kafka-ui           |    *__checkpoint ⇢ org.springframework.security.web.server.authorization.AuthorizationWebFilter [DefaultWebFilterChain]
kafka-ui           |    *__checkpoint ⇢ org.springframework.security.web.server.authorization.ExceptionTranslationWebFilter [DefaultWebFilterChain]
kafka-ui           |    *__checkpoint ⇢ org.springframework.security.web.server.authentication.logout.LogoutWebFilter [DefaultWebFilterChain]
kafka-ui           |    *__checkpoint ⇢ org.springframework.security.web.server.savedrequest.ServerRequestCacheWebFilter [DefaultWebFilterChain]
kafka-ui           |    *__checkpoint ⇢ org.springframework.security.web.server.context.SecurityContextServerWebExchangeWebFilter [DefaultWebFilterChain]
kafka-ui           |    *__checkpoint ⇢ org.springframework.security.web.server.authentication.AuthenticationWebFilter [DefaultWebFilterChain]
kafka-ui           |    *__checkpoint ⇢ org.springframework.security.web.server.ui.LogoutPageGeneratingWebFilter [DefaultWebFilterChain]
kafka-ui           |    *__checkpoint ⇢ org.springframework.security.web.server.context.ReactorContextWebFilter [DefaultWebFilterChain]
kafka-ui           |    *__checkpoint ⇢ org.springframework.security.web.server.header.HttpHeaderWriterWebFilter [DefaultWebFilterChain]
kafka-ui           |    *__checkpoint ⇢ org.springframework.security.config.web.server.ServerHttpSecurity$ServerWebExchangeReactorContextWebFilter [DefaultWebFilterChain]
kafka-ui           |    *__checkpoint ⇢ org.springframework.security.web.server.WebFilterChainProxy [DefaultWebFilterChain]
kafka-ui           |    *__checkpoint ⇢ org.springframework.boot.actuate.metrics.web.reactive.server.MetricsWebFilter [DefaultWebFilterChain]
kafka-ui           |    *__checkpoint ⇢ HTTP GET "/api/clusters/local-kafka-cluster/ksql/streams" [ExceptionHandlingWebHandler]
kafka-ui           | Original Stack Trace:
kafka-ui           |            at java.base/jdk.internal.util.Preconditions.outOfBounds(Preconditions.java:64)
kafka-ui           |            at java.base/jdk.internal.util.Preconditions.outOfBoundsCheckIndex(Preconditions.java:70)
kafka-ui           |            at java.base/jdk.internal.util.Preconditions.checkIndex(Preconditions.java:266)
kafka-ui           |            at java.base/java.util.Objects.checkIndex(Objects.java:359)
kafka-ui           |            at java.base/java.util.ArrayList.get(ArrayList.java:427)
kafka-ui           |            at com.provectus.kafka.ui.service.ksql.KsqlApiClient$KsqlResponseTable.getColumnValue(KsqlApiClient.java:55)
kafka-ui           |            at com.provectus.kafka.ui.service.ksql.KsqlServiceV2.lambda$listStreams$5(KsqlServiceV2.java:91)
kafka-ui           |            at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
kafka-ui           |            at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1625)
kafka-ui           |            at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
kafka-ui           |            at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
kafka-ui           |            at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921)
kafka-ui           |            at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
kafka-ui           |            at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:682)
kafka-ui           |            at com.provectus.kafka.ui.service.ksql.KsqlServiceV2.lambda$listStreams$6(KsqlServiceV2.java:93)
kafka-ui           |            at reactor.core.publisher.FluxFlatMap$FlatMapMain.onNext(FluxFlatMap.java:386)
kafka-ui           |            at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onNext(FluxOnErrorResume.java:79)
kafka-ui           |            at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onNext(FluxOnErrorResume.java:79)
kafka-ui           |            at reactor.core.publisher.MonoFlatMapMany$FlatMapManyInner.onNext(MonoFlatMapMany.java:250)
kafka-ui           |            at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onNext(FluxOnErrorResume.java:79)
kafka-ui           |            at reactor.core.publisher.FluxConcatArray$ConcatArraySubscriber.onNext(FluxConcatArray.java:201)
kafka-ui           |            at reactor.core.publisher.FluxSwitchIfEmpty$SwitchIfEmptySubscriber.onNext(FluxSwitchIfEmpty.java:74)
kafka-ui           |            at reactor.core.publisher.FluxFlatMap$FlatMapMain.drainLoop(FluxFlatMap.java:712)
kafka-ui           |            at reactor.core.publisher.FluxFlatMap$FlatMapMain.drain(FluxFlatMap.java:588)
kafka-ui           |            at reactor.core.publisher.FluxFlatMap$FlatMapInner.onSubscribe(FluxFlatMap.java:955)
kafka-ui           |            at reactor.core.publisher.FluxIterable.subscribe(FluxIterable.java:165)
kafka-ui           |            at reactor.core.publisher.FluxIterable.subscribe(FluxIterable.java:109)
kafka-ui           |            at reactor.core.publisher.FluxFlattenIterable.subscribeOrReturn(FluxFlattenIterable.java:105)
kafka-ui           |            at reactor.core.publisher.Flux.subscribe(Flux.java:8512)
kafka-ui           |            at reactor.core.publisher.FluxFlatMap$FlatMapMain.onNext(FluxFlatMap.java:426)
kafka-ui           |            at reactor.core.publisher.FluxHandle$HandleSubscriber.onNext(FluxHandle.java:126)
kafka-ui           |            at reactor.core.publisher.FluxConcatArray$ConcatArraySubscriber.onNext(FluxConcatArray.java:201)
kafka-ui           |            at reactor.core.publisher.FluxFlattenIterable$FlattenIterableSubscriber.drainAsync(FluxFlattenIterable.java:421)
kafka-ui           |            at reactor.core.publisher.FluxFlattenIterable$FlattenIterableSubscriber.drain(FluxFlattenIterable.java:686)
kafka-ui           |            at reactor.core.publisher.FluxFlattenIterable$FlattenIterableSubscriber.onNext(FluxFlattenIterable.java:250)
kafka-ui           |            at reactor.core.publisher.FluxMap$MapSubscriber.onNext(FluxMap.java:122)
kafka-ui           |            at reactor.core.publisher.FluxPeek$PeekSubscriber.onNext(FluxPeek.java:200)
kafka-ui           |            at reactor.core.publisher.FluxMap$MapSubscriber.onNext(FluxMap.java:122)
kafka-ui           |            at reactor.netty.channel.FluxReceive.drainReceiver(FluxReceive.java:279)
kafka-ui           |            at reactor.netty.channel.FluxReceive.onInboundNext(FluxReceive.java:388)
kafka-ui           |            at reactor.netty.channel.ChannelOperations.onInboundNext(ChannelOperations.java:404)
kafka-ui           |            at reactor.netty.http.client.HttpClientOperations.onInboundNext(HttpClientOperations.java:724)
kafka-ui           |            at reactor.netty.channel.ChannelOperationsHandler.channelRead(ChannelOperationsHandler.java:113)
kafka-ui           |            at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)
kafka-ui           |            at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
kafka-ui           |            at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
kafka-ui           |            at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103)
kafka-ui           |            at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)
kafka-ui           |            at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
kafka-ui           |            at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
kafka-ui           |            at io.netty.channel.CombinedChannelDuplexHandler$DelegatingChannelHandlerContext.fireChannelRead(CombinedChannelDuplexHandler.java:436)
kafka-ui           |            at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:336)
kafka-ui           |            at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:323)
kafka-ui           |            at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:444)
kafka-ui           |            at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:280)
kafka-ui           |            at io.netty.channel.CombinedChannelDuplexHandler.channelRead(CombinedChannelDuplexHandler.java:251)
kafka-ui           |            at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442)
kafka-ui           |            at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
kafka-ui           |            at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
kafka-ui           |            at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410)
kafka-ui           |            at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:440)
kafka-ui           |            at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
kafka-ui           |            at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919)
kafka-ui           |            at io.netty.channel.epoll.AbstractEpollStreamChannel$EpollStreamUnsafe.epollInReady(AbstractEpollStreamChannel.java:800)
kafka-ui           |            at io.netty.channel.epoll.EpollEventLoop.processReady(EpollEventLoop.java:499)
kafka-ui           |            at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:397)
kafka-ui           |            at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)
kafka-ui           |            at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
kafka-ui           |            at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
kafka-ui           |            at java.base/java.lang.Thread.run(Thread.java:833)
kafka-ui           | 2023-03-29 05:41:43,824 ERROR [reactor-http-epoll-1] o.s.b.a.w.r.e.AbstractErrorWebExceptionHandler: [5eaaff66-157]  500 Server Error for HTTP GET "/api/clusters/local-kafka-cluster/ksql/tables"
kafka-ui           | java.lang.IndexOutOfBoundsException: Index -1 out of bounds for length 5
kafka-ui           |    at java.base/jdk.internal.util.Preconditions.outOfBounds(Preconditions.java:64)
kafka-ui           |    Suppressed: reactor.core.publisher.FluxOnAssembly$OnAssemblyException: 
kafka-ui           | Error has been observed at the following site(s):
kafka-ui           |    *__checkpoint ⇢ Handler com.provectus.kafka.ui.controller.KsqlController#listTables(String, ServerWebExchange) [DispatcherHandler]
kafka-ui           |    *__checkpoint ⇢ com.provectus.kafka.ui.config.ReadOnlyModeFilter [DefaultWebFilterChain]
kafka-ui           |    *__checkpoint ⇢ com.provectus.kafka.ui.config.CustomWebFilter [DefaultWebFilterChain]
kafka-ui           |    *__checkpoint ⇢ org.springframework.security.web.server.authorization.AuthorizationWebFilter [DefaultWebFilterChain]
kafka-ui           |    *__checkpoint ⇢ org.springframework.security.web.server.authorization.ExceptionTranslationWebFilter [DefaultWebFilterChain]
kafka-ui           |    *__checkpoint ⇢ org.springframework.security.web.server.authentication.logout.LogoutWebFilter [DefaultWebFilterChain]
kafka-ui           |    *__checkpoint ⇢ org.springframework.security.web.server.savedrequest.ServerRequestCacheWebFilter [DefaultWebFilterChain]
kafka-ui           |    *__checkpoint ⇢ org.springframework.security.web.server.context.SecurityContextServerWebExchangeWebFilter [DefaultWebFilterChain]
kafka-ui           |    *__checkpoint ⇢ org.springframework.security.web.server.authentication.AuthenticationWebFilter [DefaultWebFilterChain]
kafka-ui           |    *__checkpoint ⇢ org.springframework.security.web.server.ui.LogoutPageGeneratingWebFilter [DefaultWebFilterChain]
kafka-ui           |    *__checkpoint ⇢ org.springframework.security.web.server.context.ReactorContextWebFilter [DefaultWebFilterChain]
kafka-ui           |    *__checkpoint ⇢ org.springframework.security.web.server.header.HttpHeaderWriterWebFilter [DefaultWebFilterChain]
kafka-ui           |    *__checkpoint ⇢ org.springframework.security.config.web.server.ServerHttpSecurity$ServerWebExchangeReactorContextWebFilter [DefaultWebFilterChain]
kafka-ui           |    *__checkpoint ⇢ org.springframework.security.web.server.WebFilterChainProxy [DefaultWebFilterChain]
kafka-ui           |    *__checkpoint ⇢ org.springframework.boot.actuate.metrics.web.reactive.server.MetricsWebFilter [DefaultWebFilterChain]
kafka-ui           |    *__checkpoint ⇢ HTTP GET "/api/clusters/local-kafka-cluster/ksql/tables" [ExceptionHandlingWebHandler]
kafka-ui           | Original Stack Trace:
kafka-ui           |            at java.base/jdk.internal.util.Preconditions.outOfBounds(Preconditions.java:64)
kafka-ui           |            at java.base/jdk.internal.util.Preconditions.outOfBoundsCheckIndex(Preconditions.java:70)
kafka-ui           |            at java.base/jdk.internal.util.Preconditions.checkIndex(Preconditions.java:266)
kafka-ui           |            at java.base/java.util.Objects.checkIndex(Objects.java:359)
kafka-ui           |            at java.base/java.util.ArrayList.get(ArrayList.java:427)
kafka-ui           |            at com.provectus.kafka.ui.service.ksql.KsqlApiClient$KsqlResponseTable.getColumnValue(KsqlApiClient.java:55)
kafka-ui           |            at com.provectus.kafka.ui.service.ksql.KsqlServiceV2.lambda$listTables$2(KsqlServiceV2.java:69)
kafka-ui           |            at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
kafka-ui           |            at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1625)
kafka-ui           |            at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
kafka-ui           |            at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
kafka-ui           |            at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921)
kafka-ui           |            at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
kafka-ui           |            at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:682)
kafka-ui           |            at com.provectus.kafka.ui.service.ksql.KsqlServiceV2.lambda$listTables$3(KsqlServiceV2.java:72)
kafka-ui           |            at reactor.core.publisher.FluxFlatMap$FlatMapMain.onNext(FluxFlatMap.java:386)
kafka-ui           |            at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onNext(FluxOnErrorResume.java:79)
kafka-ui           |            at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onNext(FluxOnErrorResume.java:79)
kafka-ui           |            at reactor.core.publisher.MonoFlatMapMany$FlatMapManyInner.onNext(MonoFlatMapMany.java:250)
kafka-ui           |            at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onNext(FluxOnErrorResume.java:79)
kafka-ui           |            at reactor.core.publisher.FluxConcatArray$ConcatArraySubscriber.onNext(FluxConcatArray.java:201)
kafka-ui           |            at reactor.core.publisher.FluxSwitchIfEmpty$SwitchIfEmptySubscriber.onNext(FluxSwitchIfEmpty.java:74)
kafka-ui           |            at reactor.core.publisher.FluxFlatMap$FlatMapMain.drainLoop(FluxFlatMap.java:712)
kafka-ui           |            at reactor.core.publisher.FluxFlatMap$FlatMapMain.drain(FluxFlatMap.java:588)
kafka-ui           |            at reactor.core.publisher.FluxFlatMap$FlatMapInner.onSubscribe(FluxFlatMap.java:955)
kafka-ui           |            at reactor.core.publisher.FluxIterable.subscribe(FluxIterable.java:165)
kafka-ui           |            at reactor.core.publisher.FluxIterable.subscribe(FluxIterable.java:109)
kafka-ui           |            at reactor.core.publisher.FluxFlattenIterable.subscribeOrReturn(FluxFlattenIterable.java:105)
kafka-ui           |            at reactor.core.publisher.Flux.subscribe(Flux.java:8512)
kafka-ui           |            at reactor.core.publisher.FluxFlatMap$FlatMapMain.onNext(FluxFlatMap.java:426)
kafka-ui           |            at reactor.core.publisher.FluxHandle$HandleSubscriber.onNext(FluxHandle.java:126)
kafka-ui           |            at reactor.core.publisher.FluxConcatArray$ConcatArraySubscriber.onNext(FluxConcatArray.java:201)
kafka-ui           |            at reactor.core.publisher.FluxFlattenIterable$FlattenIterableSubscriber.drainAsync(FluxFlattenIterable.java:421)
kafka-ui           |            at reactor.core.publisher.FluxFlattenIterable$FlattenIterableSubscriber.drain(FluxFlattenIterable.java:686)
kafka-ui           |            at reactor.core.publisher.FluxFlattenIterable$FlattenIterableSubscriber.onNext(FluxFlattenIterable.java:250)
kafka-ui           |            at reactor.core.publisher.FluxMap$MapSubscriber.onNext(FluxMap.java:122)
kafka-ui           |            at reactor.core.publisher.FluxPeek$PeekSubscriber.onNext(FluxPeek.java:200)
kafka-ui           |            at reactor.core.publisher.FluxMap$MapSubscriber.onNext(FluxMap.java:122)
kafka-ui           |            at reactor.netty.channel.FluxReceive.drainReceiver(FluxReceive.java:279)
kafka-ui           |            at reactor.netty.channel.FluxReceive.onInboundNext(FluxReceive.java:388)
kafka-ui           |            at reactor.netty.channel.ChannelOperations.onInboundNext(ChannelOperations.java:404)
kafka-ui           |            at reactor.netty.http.client.HttpClientOperations.onInboundNext(HttpClientOperations.java:724)
kafka-ui           |            at reactor.netty.channel.ChannelOperationsHandler.channelRead(ChannelOperationsHandler.java:113)
kafka-ui           |            at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)
kafka-ui           |            at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
kafka-ui           |            at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
kafka-ui           |            at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103)
kafka-ui           |            at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)
kafka-ui           |            at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
kafka-ui           |            at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
kafka-ui           |            at io.netty.channel.CombinedChannelDuplexHandler$DelegatingChannelHandlerContext.fireChannelRead(CombinedChannelDuplexHandler.java:436)
kafka-ui           |            at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:336)
kafka-ui           |            at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:323)
kafka-ui           |            at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:444)
kafka-ui           |            at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:280)
kafka-ui           |            at io.netty.channel.CombinedChannelDuplexHandler.channelRead(CombinedChannelDuplexHandler.java:251)
kafka-ui           |            at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442)
kafka-ui           |            at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
kafka-ui           |            at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
kafka-ui           |            at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410)
kafka-ui           |            at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:440)
kafka-ui           |            at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
kafka-ui           |            at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919)
kafka-ui           |            at io.netty.channel.epoll.AbstractEpollStreamChannel$EpollStreamUnsafe.epollInReady(AbstractEpollStreamChannel.java:800)
kafka-ui           |            at io.netty.channel.epoll.EpollEventLoop.processReady(EpollEventLoop.java:499)
kafka-ui           |            at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:397)
kafka-ui           |            at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)
kafka-ui           |            at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
kafka-ui           |            at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
kafka-ui           |            at java.base/java.lang.Thread.run(Thread.java:833)
kafka-ui           | 2023-03-29 05:42:07,153 DEBUG [parallel-2] c.p.k.u.s.ClustersStatisticsScheduler: Start getting metrics for kafkaCluster: local-kafka-cluster
kafka-ui           | 2023-03-29 05:42:07,215 DEBUG [parallel-2] c.p.k.u.s.ClustersStatisticsScheduler: Metrics updated for cluster: local-kafka-cluster


```

Pull request review comments:

Patch that resolved the issue:
diff --git a/kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/ksql/KsqlApiClient.java b/kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/ksql/KsqlApiClient.java
index fd68add7267..e8f4954bf0a 100644
--- a/kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/ksql/KsqlApiClient.java
+++ b/kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/ksql/KsqlApiClient.java
@@ -52,7 +52,10 @@ public static class KsqlResponseTable {
     boolean error;
 
     public Optional<JsonNode> getColumnValue(List<JsonNode> row, String column) {
-      return Optional.ofNullable(row.get(columnNames.indexOf(column)));
+      int colIdx = columnNames.indexOf(column);
+      return colIdx >= 0
+          ? Optional.ofNullable(row.get(colIdx))
+          : Optional.empty();
     }
   }
 
diff --git a/kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/ksql/KsqlServiceV2.java b/kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/ksql/KsqlServiceV2.java
index efd7e9ca2e9..e8c2a4c65a3 100644
--- a/kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/ksql/KsqlServiceV2.java
+++ b/kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/ksql/KsqlServiceV2.java
@@ -89,7 +89,14 @@ public Flux<KsqlStreamDescriptionDTO> listStreams(KafkaCluster cluster) {
                       .name(resp.getColumnValue(row, "name").map(JsonNode::asText).orElse(null))
                       .topic(resp.getColumnValue(row, "topic").map(JsonNode::asText).orElse(null))
                       .keyFormat(resp.getColumnValue(row, "keyFormat").map(JsonNode::asText).orElse(null))
-                      .valueFormat(resp.getColumnValue(row, "valueFormat").map(JsonNode::asText).orElse(null)))
+                      .valueFormat(
+                          // for old versions (<0.13) "format" column is filled,
+                          // for new version "keyFormat" & "valueFormat" columns should be filled
+                          resp.getColumnValue(row, "valueFormat")
+                              .or(() -> resp.getColumnValue(row, "format"))
+                              .map(JsonNode::asText)
+                              .orElse(null))
+              )
               .collect(Collectors.toList()));
         });
   }


Test patch: