背景
在写spring ai的时候添加了一些依赖后程序在这卡住了,没有任何报错
bash
2026-03-27 10:00:12.502 [main] DEBUG ai.djl.huggingface.tokenizers.jni.LibUtils - Using cache dir: /Users/xuejinhu/.djl.ai/tokenizers/0.21.0-0.32.0-cpu-osx-aarch64
2026-03-27 10:00:12.502 [main] DEBUG ai.djl.huggingface.tokenizers.jni.LibUtils - Loading huggingface library from: /Users/xuejinhu/.djl.ai/tokenizers/0.21.0-0.32.0-cpu-osx-aarch64
2026-03-27 10:00:12.503 [main] DEBUG ai.djl.huggingface.tokenizers.jni.LibUtils - Loading native library: /Users/xuejinhu/.djl.ai/tokenizers/0.21.0-0.32.0-cpu-osx-aarch64/libtokenizers.dylib
2026-03-27 10:00:13.577 [main] INFO o.s.ai.transformers.ResourceCacheService - The class path resource [onnx-output-folder/model.onnx] resource with URI schema [file] is excluded from caching
2026-03-27 10:00:14.015 [main] INFO o.s.ai.transformers.TransformersEmbeddingModel - Model input names: input_ids, attention_mask
2026-03-27 10:00:14.015 [main] INFO o.s.ai.transformers.TransformersEmbeddingModel - Model output names: token_embeddings, sentence_embedding
排查
-
第一步:是问AI得到 jcmd 73805 Thread.print 看了线程栈,main 线程停在
io.qdrant.client.grpc.QdrantGrpcClient$Builder.checkVersionsCompatibility() -
第二步:从运行改为debug,搜索代码找到QdrantGrpcClient,发现这里报错了,是qdrant版本不对
javaprivate void checkVersionsCompatibility(String clientVersion) { try { String serverVersion = QdrantGrpc.newBlockingStub(this.channel) .healthCheck(QdrantOuterClass.HealthCheckRequest.getDefaultInstance()) .getVersion(); if (!VersionsCompatibilityChecker.isCompatible(clientVersion, serverVersion)) { String logMessage = "Qdrant client version " + clientVersion + " is incompatible with server version " + serverVersion + ". Major versions should match and minor version difference must not exceed 1. " + "Set checkCompatibility=false to skip version check."; logger.warn(logMessage); } } catch (Exception e) { logger.warn( "Failed to obtain server version. Unable to check client-server compatibility. Set checkCompatibility=false to skip version check."); } } -
第三步:修改版本成功运行
复盘
1.程序卡住用debug模式能看到WARN,在运行模式下可能看不到报错日志
2.利用jcmd命令找到线程栈,明确卡在哪里,一开始问AI一直以为是TransformersEmbeddingModel的问题,看了才发现是VectorStore的问题