Elasticsearch: Überprüfen Sie den verfügbaren Speicherplatz, bevor Sie einen Build starten

Erstellt am 19. Sept. 2016  ·  3Kommentare  ·  Quelle: elastic/elasticsearch

Es wäre super nett, mit gradle vor dem Start von Tests (oder bei jedem Durchlauf, was auch immer die Aufgabe ist) zu überprüfen, ob wir genügend Festplattenspeicher haben (mehr als 10%).

Andernfalls können einige Tests fehlschlagen.

Zum Beispiel habe ich gradle check für eine PR ausgeführt, die nichts mit netty3 zu tun hat, und es schlug im netty3-Modul immer fehl mit:

  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

Als ich mir modules/transport-netty3/build/cluster/integTest\ node0/elasticsearch-6.0.0-alpha1-SNAPSHOT/logs/modules_transport-netty3_integTest.log ansah, sah ich:

[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

Ich habe jedoch 3 GB freien Speicherplatz.

Wenn wir also zu Beginn unserer Integrationstests fehlschlagen oder warnen können, würde dies helfen, die Quelle des "Problems" schneller zu identifizieren.

:DeliverBuild Delivery

Hilfreichster Kommentar

Ich denke nicht, dass wir dem Build solche Dinge hinzufügen sollten. Die Überprüfung wäre nicht zuverlässig, da sie Zeit-of-Check-Time-of-Use-Problemen unterliegt und 90% wahrscheinlich nicht einmal der richtige Grenzwert für einen sauberen Build sind (weil Artefakte und Protokolle und eine Menge anderer Dinge vorhanden sind .) wird erstellt, um die Festplattennutzung auf über 90% zu erhöhen, bevor die abhängigen Tests hier ausgeführt werden).

Wenn ein Integrationstest fehlschlägt, ist es richtig, die Protokolle zu lesen und das Problem anzuzeigen, wie Sie es hier getan haben.

Alle 3 Kommentare

Ich denke nicht, dass wir dem Build solche Dinge hinzufügen sollten. Die Überprüfung wäre nicht zuverlässig, da sie Zeit-of-Check-Time-of-Use-Problemen unterliegt und 90% wahrscheinlich nicht einmal der richtige Grenzwert für einen sauberen Build sind (weil Artefakte und Protokolle und eine Menge anderer Dinge vorhanden sind .) wird erstellt, um die Festplattennutzung auf über 90% zu erhöhen, bevor die abhängigen Tests hier ausgeführt werden).

Wenn ein Integrationstest fehlschlägt, ist es richtig, die Protokolle zu lesen und das Problem anzuzeigen, wie Sie es hier getan haben.

Ich schließe dies, aber öffne @dadoonet gerne wieder, wenn du anders

Ich komme mit dieser Antwort gut zurecht. Sagte nur "es ist schön zu haben". Ich kann ganz ohne leben.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen