Elasticsearch: 在开始构建之前检查可用磁盘空间

创建于 2016-09-19  ·  3评论  ·  资料来源: elastic/elasticsearch

在开始测试之前(或在每次运行任何任务时)检查 gradle 是否有足够的硬盘空间(超过 10%)会非常好。

否则,您可能会遇到一些测试失败的情况。

例如,我为与 netty3 无关的 PR 运行gradle check并且它总是在 netty3 模块中失败:

  2> REPRODUCE WITH: gradle :modules:transport-netty3:integTest -Dtests.seed=E0B565B5C6B00017 -Dtests.class=org.elasticsearch.http.netty3.Netty3ClientYamlTestSuiteIT -Dtests.method="test {yaml=indices.get_alias/10_basic/Get aliases via /{index}/_alias/name,name}" -Dtests.security.manager=true -Dtests.locale=ar-KW -Dtests.timezone=CET
ERROR   30.1s | Netty3ClientYamlTestSuiteIT.test {yaml=indices.get_alias/10_basic/Get aliases via /{index}/_alias/name,name} <<< FAILURES!
   > Throwable #1: java.lang.RuntimeException: Failure at [indices.get_alias/10_basic:5]: listener timeout after waiting for [30000] ms
   >    at __randomizedtesting.SeedInfo.seed([E0B565B5C6B00017:68E15A6F684C6DEF]:0)
   >    at org.elasticsearch.test.rest.yaml.ESClientYamlSuiteTestCase.executeSection(ESClientYamlSuiteTestCase.java:327)
   >    at org.elasticsearch.test.rest.yaml.ESClientYamlSuiteTestCase.test(ESClientYamlSuiteTestCase.java:300)
   >    at java.lang.Thread.run(Thread.java:745)
   > Caused by: java.io.IOException: listener timeout after waiting for [30000] ms
   >    at org.elasticsearch.client.RestClient$SyncResponseListener.get(RestClient.java:615)
   >    at org.elasticsearch.client.RestClient.performRequest(RestClient.java:212)
   >    at org.elasticsearch.client.RestClient.performRequest(RestClient.java:185)
   >    at org.elasticsearch.test.rest.yaml.ClientYamlTestClient.callApi(ClientYamlTestClient.java:227)
   >    at org.elasticsearch.test.rest.yaml.ClientYamlTestExecutionContext.callApiInternal(ClientYamlTestExecutionContext.java:107)
   >    at org.elasticsearch.test.rest.yaml.ClientYamlTestExecutionContext.callApi(ClientYamlTestExecutionContext.java:72)
   >    at org.elasticsearch.test.rest.yaml.section.DoSection.execute(DoSection.java:128)
   >    at org.elasticsearch.test.rest.yaml.ESClientYamlSuiteTestCase.executeSection(ESClientYamlSuiteTestCase.java:325)
   >    ... 38 more

当我查看modules/transport-netty3/build/cluster/integTest\ node0/elasticsearch-6.0.0-alpha1-SNAPSHOT/logs/modules_transport-netty3_integTest.log ,我看到:

[2016-09-19T10:32:20,078][WARN ][o.e.c.r.a.DiskThresholdMonitor] [tofpR8o] high disk watermark [90%] exceeded on [tofpR8o_Tv-QZ9t2AWtjug][tofpR8o][/Users/dpilato/Documents/Elasticsearch/dev/es-gradle/elasticsearch/modules/transport-netty3/build/cluster/integTest node0/elasticsearch-6.0.0-alpha1-SNAPSHOT/data/nodes/0] free: 2.9gb[0.6%], shards will be relocated away from this node

不过我有 3Gb 可用磁盘空间。

因此,如果我们可以在集成测试开始时失败或发出警告,这将有助于更快地确定“问题”的根源。

:DeliverBuild Delivery

最有用的评论

我认为我们不应该在构建中添加这样的东西。 检查是不可靠的,因为它会受到检查时间和使用时间问题的影响,而且 90% 甚至可能不是从干净的构建开始的正确截止(因为工件和日志以及其他一些东西在此处运行的相关测试之前,将创建推动磁盘使用率超过 90%)。

当集成测试失败时,正确的做法是读取日志并显示问题,正如您在此处所做的那样。

所有3条评论

我认为我们不应该在构建中添加这样的东西。 检查是不可靠的,因为它会受到检查时间和使用时间问题的影响,而且 90% 甚至可能不是从干净的构建开始的正确截止(因为工件和日志以及其他一些东西在此处运行的相关测试之前,将创建推动磁盘使用率超过 90%)。

当集成测试失败时,正确的做法是读取日志并显示问题,正如您在此处所做的那样。

我正在关闭它,但如果您有不同的感觉,请随时重新打开@dadoonet

我对这个答案没意见。 只是说“很高兴拥有”。 没有它我完全可以活下去。

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

malpani picture malpani  ·  3评论

dawi picture dawi  ·  3评论

clintongormley picture clintongormley  ·  3评论

abrahamduran picture abrahamduran  ·  3评论

mayyamus picture mayyamus  ·  3评论