flink queryable state问题java.util.concurrent.CompletionException: java.lang.IndexOutOfBoundsException

本文为原创,转载请注明出处!

最近在学习flink, queryable state。官网和百度到的代码都很简单,很快就能写出来。但是结果,却很让我困惑。

get kv state return future, waiting......
query resultFuture:[email protected][Not completed]
query resultFuture 4:{"cancelled":false,"completedExceptionally":true,"done":true,"numberOfDependents":0}
query resultFuture 2:[email protected][Completed exceptionally: java.util.concurrent.CompletionException: java.lang.IndexOutOfBoundsException: readerIndex(0) + length(4) exceeds writerIndex(0): PooledSlicedByteBuf(ridx: 0, widx: 0, cap: 0/0, unwrapped: PooledUnsafeDirectByteBuf(ridx: 4, widx: 4, cap: 1024))]
query resultFuture 3:{"cancelled":false,"completedExceptionally":true,"done":true,"numberOfDependents":0}

调了好久,可是结果一直如此。我确认我的代码没问题,各种百度和求助。可是都没有回复。那就只能靠我自己了!

flink queryable state问题java.util.concurrent.CompletionException: java.lang.IndexOutOfBoundsException

flink queryable state问题java.util.concurrent.CompletionException: java.lang.IndexOutOfBoundsException

又重新打开官网教程,仔细认真的读。发现果然遗漏了很多重要的细节!

flink queryable state问题java.util.concurrent.CompletionException: java.lang.IndexOutOfBoundsException

flink queryable state问题java.util.concurrent.CompletionException: java.lang.IndexOutOfBoundsException

所以现在就很好办了。按照官网写的,我把opt文件夹下面的 flink-queryable-state-runtime_2.11-1.9.1.jar 拷贝到lib下面

flink queryable state问题java.util.concurrent.CompletionException: java.lang.IndexOutOfBoundsException

flink queryable state问题java.util.concurrent.CompletionException: java.lang.IndexOutOfBoundsException

但是仍旧不行。重启电脑,还是不行!所以就又在flink-conf.yaml中增加了queryable-state.proxy.ports: 9069的配置。因为我在taskmanager.log的日志中,一直没查不到Queryable proxy的相关信息。

flink queryable state问题java.util.concurrent.CompletionException: java.lang.IndexOutOfBoundsException

果然不负我所望,加完之后,taskmanager日志里,果然能查到了!

flink queryable state问题java.util.concurrent.CompletionException: java.lang.IndexOutOfBoundsException

然后更改 remoteHostname 和 remotePort 跟taskmanager.log 里的 Started Queryable State Proxy Server 后面对应的127.0.0.1和9069。就ok啦!

flink queryable state问题java.util.concurrent.CompletionException: java.lang.IndexOutOfBoundsException

大家都要好好看文档,这样才能解决问题!!!

官方文档:https://ci.apache.org/projects/flink/flink-docs-stable/dev/stream/state/queryable_state.html

对应的代码的queryable state demo: https://github.com/chulili/queryableTest

本文为原创,转载请注明出处!