程序运行卡住排查

背景

在写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版本不对

    java 复制代码
    private 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的问题

相关推荐
学长毕设3 小时前
基于SpringBoot的实验室资产管理系统
java·spring boot·后端
zzu123zsw4 小时前
从臃肿的模板调用到声明式契约:深入 UniHttp 动态代理与多渠道生命周期扩展
java·spring boot·microsoft·unihttp
源码集结号5 小时前
云诊所门诊系统源码,基于SpringBoot+Vue.js架构,支持多租户设计与Docker容器化部署
java·spring boot·源码·医院信息系统·门诊系统·诊所系统
论文复现现场5 小时前
WRF、FEA 能用 L40S 加速吗?求解器检查、断点恢复与长期运行
java·数据库·算法·wrf·有限元分析·gpu计算·断点续算
啃瓜子的松鼠5 小时前
泛微OAe9-后端二开异步调用
java
秋天的怀念_David6 小时前
第二十一夜 · 数字黑洞与西西弗斯的惩罚
java·程序人生·算法
外收内放6 小时前
Python基础语法练习题(73)
java·前端·python
Wang's Blog6 小时前
Java 项目实战: 交友项目 - 环信后台发送消息测试
java·交友
用户3721574261357 小时前
Java 操作 Word 脚注和尾注:添加、读取与删除
java
小嘉丶学长7 小时前
Day14 · 字典与集合
java·开发语言·网络·python·学习·1024程序员节