You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Query Console中模块JS函数两次执行间的超时问题求助

排查MarkLogic Query Console模块间歇性找不到问题的思路

问题场景

模块定义(Modules数据库路径:/test/test.mjs)

// test.mjs
export function test(message){
    xdmp.log("Received: "+message);
    return "Received: "+message;
}

Query Console测试代码

'use strict';
declareUpdate(); // 本测试用例不需要,但实际代码中需要
import { test } from '/test/test.mjs';
test("Hello");

异常现象

  • 首次执行完全正常
  • 紧接着再次执行时抛出错误:[javascript] XDMP-MODNOTFOUND: result: evalScriptOrModule(q) -- Module /test/test.mjs not found
  • 等待5-6分钟后再次执行,功能恢复正常

排查方向

1. 核对模块缓存配置

MarkLogic会对模块做缓存处理,可能是缓存过期/刷新逻辑导致的间歇性问题:

  • 登录Admin界面,进入Groups > 对应组 > Databases > Modules Database > Caching,查看缓存过期时间是否和出现异常的5-6分钟窗口匹配
  • 手动执行xdmp.clearModuleCache()清除模块缓存,之后立即跑测试代码,看是否能复现问题或者直接恢复正常

2. 测试Query Console会话隔离性

Query Console的会话可能存在临时模块缓存,试试这些操作:

  • 新开一个Query Console标签页执行测试代码,看是否还会出现找不到模块的情况
  • 直接关闭当前Query Console标签页,重新打开后再执行,观察结果

3. 检查集群节点同步状态(如果是集群环境)

如果你的MarkLogic是集群部署,Modules数据库的节点间同步延迟可能导致这个问题:

  • 用xdmp.databaseStatus()检查所有节点的Modules数据库同步状态,确认数据是否一致
  • 查看ErrorLog.txt日志,找有没有模块同步相关的错误或警告信息

4. 验证模块权限与路径

虽然首次执行正常,但权限或路径可能存在临时异常:

  • 执行xdmp.documentPermissions('/test/test.mjs'),确认当前Query Console用户对该模块有read权限
  • 检查模块路径是否有大小写问题(部分环境下MarkLogic路径区分大小写)

5. 切换模块加载方式对比测试

试试不同的模块加载方式,排查是否是ES模块导入的特殊逻辑导致:

  • 用require()替代ES模块的import语法,测试是否还会出现间歇性问题
  • 把模块代码直接内联到Query Console中执行,对比和加载外部模块的差异

内容的提问来源于stack exchange,提问作者Val

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 13:15:34