我有一个Bazel回收站,可以制作一些神器。问题是,它在挂起消息的过程中中途停止:
[3 / 8] no action到底是什么导致了这种情况呢?这是正常的吗?
(不,这个问题不容易减少,有很多自定义代码,如果我能本地化这个问题,我就不会写这个问题了。我感兴趣的是一般的答案,原则上什么会导致这种情况,这是正常的。)
发布于 2018-02-05 23:50:58
在没有更多信息的情况下很难回答你的问题,但是的,这有时是正常的。Bazel做了几件不是动作的事情。
我看到这种情况的一个原因是,如果Bazel正在计算大量大文件的摘要。如果您在Bazel服务器的堆栈跟踪中看到getDigestInExclusiveMode,很可能是由于此原因。如果这是您的问题,您可以尝试使用--experimental_multi_threaded_digest标志。
发布于 2018-02-05 17:54:18
根据运行Bazel的平台:
如果这是在执行阶段的中期构建(因为Bazel已经在打印操作状态消息,看起来就是这样),那么一个可能的解释是您的构建包含许多shell命令。我测量了一下,在Linux (带硬盘的虚拟机)上,每个shell命令最多需要1-2ms,但在我的Windows10机器(32GRAM,3.5 the,硬盘)上,它们需要1-2秒,0.5%的命令最多需要10秒。如果您的操作大量使用shell命令,则速度会慢3-4个数量级。对此可以有许多解释(防病毒,进程创建缓慢,MSYS很慢),其中没有一个Bazel控制over.
top,看看卡住的Bazel进程是否在做任何事情。尝试输入Ctrl+\,这将打印一个JVM堆栈跟踪,这可以帮助识别问题。也许JVM卡在锁中等待--这可能意味着错误或错误的规则implementation.也有其他的可能性,也许你有一个挂起的构建规则。
Bazel最终会继续吗,还是会持续几分钟以上?
https://stackoverflow.com/questions/48606956
复制相似问题