0

我已经在 64 位 Windows 7 上安装了 ArangoDB 2.7.3。

我有一个用例,其中一个 Foxx 应用程序 A 在存储库中公开了一些我想在另一个 Foxx 应用程序 B 中使用的功能,这样我就不必复制该特定功能。应用程序 B 实际上启动了一个定期触发的作业,该作业从 A 调用导出的功能。问题是该作业偶尔会抛出一个错误,即它找不到导出的模块..但一段时间后它会恢复。

我在 Github 上添加了两个应用程序:https ://github.com/mphoenixo/arangodb.git

有谁之前经历过这个吗?我已经使用 ArangoDB 的文档构建了应用程序,但也许我仍然缺少一些东西。

错误的堆栈跟踪如下:

    2016-02-02T15:48:56Z [7380] ERROR TypeError: Cannot read property 'repo' of undefined
2016-02-02T15:48:56Z [7380] ERROR   at d:/install/ArangoDB 2.7.3/var/lib/arangodb-apps/_db/DataPushLandingZone/foxx-import-app-example/APP/scripts/myJob.js:3:25
2016-02-02T15:48:56Z [7380] ERROR   at [object Object].Module.run (D:\install\ArangoDB 2.7.3\bin\../share/arangodb/js/common/bootstrap/modules.js:1420:10)
2016-02-02T15:48:56Z [7380] ERROR   at ArangoApp.loadAppScript (d:/install/ArangoDB 2.7.3/share/arangodb/js/server/modules/org/arangodb/foxx/arangoApp.js:458:24)
2016-02-02T15:48:56Z [7380] ERROR   at executeAppScript (d:/install/ArangoDB 2.7.3/share/arangodb/js/server/modules/org/arangodb/foxx/manager.js:510:18)
2016-02-02T15:48:56Z [7380] ERROR   at Object.runScript (d:/install/ArangoDB 2.7.3/share/arangodb/js/server/modules/org/arangodb/foxx/manager.js:814:10)
2016-02-02T15:48:56Z [7380] ERROR   at Object.exports.work (d:/install/ArangoDB 2.7.3/share/arangodb/js/server/modules/org/arangodb/foxx/queues/worker.js:118:8)
2016-02-02T15:48:56Z [7380] ERROR   at eval (<anonymous>:6:60)
2016-02-02T15:48:56Z [7380] ERROR   at eval (<anonymous>:9:15)
2016-02-02T15:48:56Z [7380] ERROR   at eval (<anonymous>:9:27)
2016-02-02T15:48:56Z [7380] ERROR 
2016-02-02T15:48:56Z [7380] ERROR Running script "MyJob" not possible for mount "/foxx-import-app-example":
2016-02-02T15:48:56Z [7380] ERROR TypeError: Cannot read property 'repo' of undefined
2016-02-02T15:48:56Z [7380] ERROR   at d:/install/ArangoDB 2.7.3/var/lib/arangodb-apps/_db/DataPushLandingZone/foxx-import-app-example/APP/scripts/myJob.js:3:25
2016-02-02T15:48:56Z [7380] ERROR   at [object Object].Module.run (D:\install\ArangoDB 2.7.3\bin\../share/arangodb/js/common/bootstrap/modules.js:1420:10)
2016-02-02T15:48:56Z [7380] ERROR   at ArangoApp.loadAppScript (d:/install/ArangoDB 2.7.3/share/arangodb/js/server/modules/org/arangodb/foxx/arangoApp.js:458:24)
2016-02-02T15:48:56Z [7380] ERROR   at executeAppScript (d:/install/ArangoDB 2.7.3/share/arangodb/js/server/modules/org/arangodb/foxx/manager.js:510:18)
2016-02-02T15:48:56Z [7380] ERROR   at Object.runScript (d:/install/ArangoDB 2.7.3/share/arangodb/js/server/modules/org/arangodb/foxx/manager.js:814:10)
2016-02-02T15:48:56Z [7380] ERROR   at Object.exports.work (d:/install/ArangoDB 2.7.3/share/arangodb/js/server/modules/org/arangodb/foxx/queues/worker.js:118:8)
2016-02-02T15:48:56Z [7380] ERROR   at eval (<anonymous>:6:60)
2016-02-02T15:48:56Z [7380] ERROR   at eval (<anonymous>:9:15)
2016-02-02T15:48:56Z [7380] ERROR   at eval (<anonymous>:9:27)
2016-02-02T15:48:56Z [7380] ERROR 
2016-02-02T15:48:56Z [7380] ERROR Job 47455086883 failed:
2016-02-02T15:48:56Z [7380] ERROR [ArangoError 3103: failed to invoke module
2016-02-02T15:48:56Z [7380] ERROR File: d:/install/ArangoDB 2.7.3/var/lib/arangodb-apps/_db/DataPushLandingZone/foxx-import-app-example/APP/scripts/myJob.js]
2016-02-02T15:48:56Z [7380] ERROR   at [object Object].Module.run (D:\install\ArangoDB 2.7.3\bin\../share/arangodb/js/common/bootstrap/modules.js:1425:20)
2016-02-02T15:48:56Z [7380] ERROR   at ArangoApp.loadAppScript (d:/install/ArangoDB 2.7.3/share/arangodb/js/server/modules/org/arangodb/foxx/arangoApp.js:458:24)
2016-02-02T15:48:56Z [7380] ERROR   at executeAppScript (d:/install/ArangoDB 2.7.3/share/arangodb/js/server/modules/org/arangodb/foxx/manager.js:510:18)
2016-02-02T15:48:56Z [7380] ERROR   at Object.runScript (d:/install/ArangoDB 2.7.3/share/arangodb/js/server/modules/org/arangodb/foxx/manager.js:814:10)
2016-02-02T15:48:56Z [7380] ERROR   at Object.exports.work (d:/install/ArangoDB 2.7.3/share/arangodb/js/server/modules/org/arangodb/foxx/queues/worker.js:118:8)
2016-02-02T15:48:56Z [7380] ERROR   at eval (<anonymous>:6:60)
2016-02-02T15:48:56Z [7380] ERROR   at eval (<anonymous>:9:15)
2016-02-02T15:48:56Z [7380] ERROR   at eval (<anonymous>:9:27)

谢谢!

4

1 回答 1

0

你的代码看起来不错。我不确定您遇到的根本原因可能是什么,但我相当有信心,由于某种原因,您尝试导入的 Foxx 服务在执行作业时未初始化。

您可能偶尔遇到此问题的一个原因是 ArangoDB 使用多个执行 JavaScript 的 V8 上下文。作业和 HTTP 请求在其中任何一个中随机执行。因此,如果其中一个出现故障,如果在另一个上下文中执行,该作业可能仍然可以正常运行。

通常,导入 Foxx 服务应保证该服务已正确初始化(就像在该服务中运行作业或服务来自该服务的请求一样)。正如您所指出的,问题可能是自我修复的(即它在一段时间后停止发生),这可能意味着上下文最终被正确初始化。

我也无法在 2.8 上重现该问题,但我们将密切关注这一点。我不认为问题是特定于 Windows 的。如果问题再次出现,我建议将进一步讨论移至Google Groups 线程在 GitHub 上打开一个问题。

于 2016-02-09T10:05:33.123 回答