Mapepire连接池调用getReadyJob()返回undefined问题求助
Mapepire连接池
getReadyJob返回undefined问题排查 问题重现
创建连接池的代码:
pool = new mapepire.Pool({creds: creds, opts: jdbcOptionsConfig, startingSize: 5, maxSize: 12}); await pool.init();
调用获取可用连接的代码:
const job = await pool.getReadyJob();
出现的异常现象:
job返回undefinedpool.jobs.length显示为5(与设置的初始连接数一致)- 没有新的连接(job)被创建
排查与解决方向
- 检查初始连接的就绪状态:遍历
pool.jobs查看每个job的具体状态,确认是否存在未成功初始化、处于非就绪状态的连接。比如部分连接可能因配置错误、网络问题创建后无法正常使用,导致没有可用的ready job。 - 验证
getReadyJob的调用逻辑:确认该方法是否需要传入超时等参数,若所有初始连接都被占用或处于不可用状态,是否会直接返回undefined而非等待。可以尝试添加超时配置,或查看方法的官方文档(本地文档或源码注释)确认预期行为。 - 单独测试单个连接:跳过连接池,直接创建单个Mapepire连接并测试是否能正常工作,排除
creds、jdbcOptionsConfig等配置错误导致的连接不可用问题。 - 检查连接占用情况:确认是否有其他业务逻辑已经占用了所有初始连接,导致
getReadyJob无可用连接返回。可以查看每个job的inUse或类似状态属性。 - 查看初始化阶段的错误:
pool.init()虽然使用了await,但可能部分连接初始化失败时没有抛出全局错误,需要查看是否有局部错误日志或异常信息,排查连接创建失败的原因。
内容的提问来源于stack exchange,提问作者Didier68
相关产品推荐
相关产品推荐

