milvus-io / milvus-sdk-java

Java SDK for Milvus.
https://milvus.io
Apache License 2.0
363 stars 150 forks source link

Run faild:io.grpc.StatusRuntimeException: UNKNOWN #705

Open xinuo opened 7 months ago

xinuo commented 7 months ago

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.

yhmo commented 7 months ago

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.

alexanderankin commented 6 months ago

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

here is a reproducible test case https://github.com/alexanderankin/how-to-itest/commit/32ddec402e25064f854c116839359f5408e61832 - remove the line and it fails

alexanderankin commented 6 months ago

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 6 months ago

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)
alexanderankin commented 6 months ago

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

alexanderankin commented 6 months ago

thank you for fixing this in latest release! verified and upgraded my repo of examples in https://github.com/alexanderankin/how-to-itest/commit/e6be074e157f4681698c541b852605e344645055

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