milvus-io/milvus-sdk-java

Run faild:io.grpc.StatusRuntimeException: UNKNOWN

xinuo opened this issue · 6 comments

When I run SimpleExample.java, it prompts an error and the following is the error message.

16:20:06.738 [main] ERROR io.milvus.client.AbstractMilvusGrpcClient -- CreateCollectionRequest RPC failed! Collection name:java_sdk_example_simple
io.grpc.StatusRuntimeException: UNKNOWN
at io.grpc.stub.ClientCalls.toStatusRuntimeException(ClientCalls.java:271)
at io.grpc.stub.ClientCalls.getUnchecked(ClientCalls.java:252)
at io.grpc.stub.ClientCalls.blockingUnaryCall(ClientCalls.java:165)
at io.milvus.grpc.MilvusServiceGrpc$MilvusServiceBlockingStub.createCollection(MilvusServiceGrpc.java:4439)
at io.milvus.client.AbstractMilvusGrpcClient.createCollection(AbstractMilvusGrpcClient.java:503)
at io.milvus.client.MilvusServiceClient.lambda$createCollection$5(MilvusServiceClient.java:325)
at io.milvus.client.MilvusServiceClient.retry(MilvusServiceClient.java:256)
at io.milvus.client.MilvusServiceClient.createCollection(MilvusServiceClient.java:325)
at com.example.vectordbtest.Test.main(Test.java:79)

At the same time, I see the milvus service presenting like this:

milvus-standalone | [2023/11/28 08:25:23.616 +00:00] [INFO] [proxy/meta_cache.go:887] ["expire all shard leader cache"] [database=default] [collections="[java_sdk_example_simple]"]
milvus-standalone | [2023/11/28 08:25:23.821 +00:00] [INFO] [datacoord/meta.go:1287] ["UpdateChannelCheckpoint done"] [vChannel=by-dev-rootcoord-dml_2_445948396393078911v0] [ts=445948867039461377] [msgID="\ufffdu\u0004+\ufffdS0\u0006"] [time=2023/11/28 08:25:23.704 +00:00]
milvus-standalone | [2023/11/28 08:25:23.822 +00:00] [INFO] [datanode/flow_graph_time_tick_node.go:142] ["UpdateChannelCheckpoint success"] [channel=by-dev-rootcoord-dml_2_445948396393078911v0] [cpTs=445948867039461377] [cpTime=2023/11/28 08:25:23.704 +00:00]
milvus-standalone | [2023/11/28 08:25:25.262 +00:00] [INFO] [rootcoord/root_coord.go:945] ["received request to create collection"] [traceID=29087208f3be102d2f8c6d727dcc07bd] [dbName=default] [name=java_sdk_example_simple] [role=rootcoord]
milvus-standalone | [2023/11/28 08:25:25.263 +00:00] [INFO] [rootcoord/create_collection_task.go:298] ["assign partitions when create collection"] [collectionName=java_sdk_example_simple] [partitionNames="[_default]"]
milvus-standalone | [2023/11/28 08:25:25.263 +00:00] [INFO] [rootcoord/timeticksync.go:380] ["add dml channels"] [channels="[by-dev-rootcoord-dml_8]"]
milvus-standalone | [2023/11/28 08:25:25.263 +00:00] [WARN] [rootcoord/create_collection_task.go:462] ["add duplicate collection"] [collection=java_sdk_example_simple] [ts=445948867445522434]
milvus-standalone | [2023/11/28 08:25:25.263 +00:00] [INFO] [rootcoord/root_coord.go:981] ["done to create collection"] [traceID=29087208f3be102d2f8c6d727dcc07bd] [role=rootcoord] [name=java_sdk_example_simple] [ts=445948867445522434]
milvus-standalone | [2023/11/28 08:25:26.615 +00:00] [INFO] [proxy/meta_cache.go:887] ["expire all shard leader cache"] [database=default] [collections="[java_sdk_example_simple]"]

But what confuses me is that when I run hello_milvus.py, it is successful. This means that milvus should be fine.

Which version of your java sdk and milvus?
I just use Java SDK 2.3.3 and Milvus 2.3.3 to run the SimpleExample.java, it works well.

i had to set grpc version to io.grpc:grpc-netty:1.60.1

here is a reproducible test case alexanderankin/how-to-itest@32ddec4 - remove the line and it fails

if its the same issue I'm facing, here is the relevant part of the stack trace:

Caused by: java.lang.UnsupportedOperationException: null
	at io.grpc.netty.AbstractHttp2Headers.isEmpty(AbstractHttp2Headers.java:40) ~[grpc-netty-1.46.0.jar:1.46.0]
	at io.netty.handler.codec.http2.DefaultHttp2ConnectionDecoder$FrameReadListener.onHeadersRead(DefaultHttp2ConnectionDecoder.java:419) ~[netty-codec-http2-4.1.101.Final.jar:4.1.101.Final]
	at io.netty.handler.codec.http2.DefaultHttp2ConnectionDecoder$FrameReadListener.onHeadersRead(DefaultHttp2ConnectionDecoder.java:352) ~[netty-codec-http2-4.1.101.Final.jar:4.1.101.Final]
	at io.netty.handler.codec.http2.Http2InboundFrameLogger$1.onHeadersRead(Http2InboundFrameLogger.java:56) ~[netty-codec-http2-4.1.101.Final.jar:4.1.101.Final]
	at io.netty.handler.codec.http2.DefaultHttp2FrameReader$2.processFragment(DefaultHttp2FrameReader.java:476) ~[netty-codec-http2-4.1.101.Final.jar:4.1.101.Final]
	at io.netty.handler.codec.http2.DefaultHttp2FrameReader.readHeadersFrame(DefaultHttp2FrameReader.java:484) ~[netty-codec-http2-4.1.101.Final.jar:4.1.101.Final]
	at io.netty.handler.codec.http2.DefaultHttp2FrameReader.processPayloadState(DefaultHttp2FrameReader.java:253) ~[netty-codec-http2-4.1.101.Final.jar:4.1.101.Final]
	at io.netty.handler.codec.http2.DefaultHttp2FrameReader.readFrame(DefaultHttp2FrameReader.java:159) ~[netty-codec-http2-4.1.101.Final.jar:4.1.101.Final]
	at io.netty.handler.codec.http2.Http2InboundFrameLogger.readFrame(Http2InboundFrameLogger.java:41) ~[netty-codec-http2-4.1.101.Final.jar:4.1.101.Final]
	at io.netty.handler.codec.http2.DefaultHttp2ConnectionDecoder.decodeFrame(DefaultHttp2ConnectionDecoder.java:188) ~[netty-codec-http2-4.1.101.Final.jar:4.1.101.Final]
	at io.netty.handler.codec.http2.Http2ConnectionHandler$FrameDecoder.decode(Http2ConnectionHandler.java:393) ~[netty-codec-http2-4.1.101.Final.jar:4.1.101.Final]
	at io.netty.handler.codec.http2.Http2ConnectionHandler.decode(Http2ConnectionHandler.java:453) ~[netty-codec-http2-4.1.101.Final.jar:4.1.101.Final]
	at io.netty.handler.codec.ByteToMessageDecoder.decodeRemovalReentryProtection(ByteToMessageDecoder.java:529) ~[netty-codec-4.1.101.Final.jar:4.1.101.Final]
	at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:468) ~[netty-codec-4.1.101.Final.jar:4.1.101.Final]
	at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:290) ~[netty-codec-4.1.101.Final.jar:4.1.101.Final]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444) ~[netty-transport-4.1.101.Final.jar:4.1.101.Final]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) ~[netty-transport-4.1.101.Final.jar:4.1.101.Final]
	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) ~[netty-transport-4.1.101.Final.jar:4.1.101.Final]
	at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410) ~[netty-transport-4.1.101.Final.jar:4.1.101.Final]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:440) ~[netty-transport-4.1.101.Final.jar:4.1.101.Final]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) ~[netty-transport-4.1.101.Final.jar:4.1.101.Final]
	at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919) ~[netty-transport-4.1.101.Final.jar:4.1.101.Final]
	at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:166) ~[netty-transport-4.1.101.Final.jar:4.1.101.Final]
	at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:788) ~[netty-transport-4.1.101.Final.jar:4.1.101.Final]
	at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:724) ~[netty-transport-4.1.101.Final.jar:4.1.101.Final]
	at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:650) ~[netty-transport-4.1.101.Final.jar:4.1.101.Final]
	at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562) ~[netty-transport-4.1.101.Final.jar:4.1.101.Final]
	at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997) ~[netty-common-4.1.101.Final.jar:4.1.101.Final]
	at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) ~[netty-common-4.1.101.Final.jar:4.1.101.Final]
	at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) ~[netty-common-4.1.101.Final.jar:4.1.101.Final]
	at java.base/java.lang.Thread.run(Thread.java:833) ~[na:na]

the same method is implemented in 1.60.1

yhmo commented

i had to set grpc version to io.grpc:grpc-netty:1.60.1

here is a reproducible test case alexanderankin/how-to-itest@32ddec4 - remove the line and it fails

The java.lang.UnsupportedOperationException caused by io.grpc.netty.AbstractHttp2Headers.isEmpty has been fixed in the v2.3.4 by upgrading the grpc version to 1.59.1.

But this error I think is different, the root cause is unknown:

io.grpc.StatusRuntimeException: UNKNOWN
at io.grpc.stub.ClientCalls.toStatusRuntimeException(ClientCalls.java:271)
at io.grpc.stub.ClientCalls.getUnchecked(ClientCalls.java:252)
at io.grpc.stub.ClientCalls.blockingUnaryCall(ClientCalls.java:165)

I was seeing those same stack trace lines in the top half of my exception stack trace, but I omitted them, because I didn't think it was relevant. The two parts of the overall stack trace happen on different threads, in my understanding

thank you for fixing this in latest release! verified and upgraded my repo of examples in alexanderankin/how-to-itest@e6be074

hope we hear back from the original poster to find if that is the same issue or not.