Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add sleep to allow ES sufficient time for CCR #11172

Merged
merged 2 commits into from
Mar 13, 2019

Conversation

ycombinator
Copy link
Contributor

@ycombinator ycombinator commented Mar 9, 2019

After repeatedly running the Elasticsearch module integration test in Metricbeat, I found that sometimes Elasticsearch doesn't get enough time to perform CCR and generate CCR stats. This causes the following error, but only some times:

--- FAIL: TestFetch (2.44s)
    --- FAIL: TestFetch/ccr (0.08s)
        elasticsearch_integration_test.go:92:
                Error Trace:    elasticsearch_integration_test.go:92
                Error:          Should NOT be empty, but was []
                Test:           TestFetch/ccr

So this PR adds a 300ms sleep to give Elasticsearch enough time to perform CCR and generate CCR stats. After testing various sleep durations, I found that 300ms seemed to be the lowest (round) value I could use that consistently passed this test.

Possibly related: #10866

Copy link
Member

@ruflin ruflin left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, especially as the build is green.

In general not a big fan of time based timeouts as in the past this often has lead to flaky tests on it's own. Instead, could we instead have a "wait for" approach that checks the api every 100ms for a max of 5s and then returns an error?

I'm good with merging as is as it already adresses an issue but would be good to have long term a nicer solution.

@ycombinator
Copy link
Contributor Author

@ruflin Agreed that waitFor is better than sleep. Will implement in this PR.

@ycombinator
Copy link
Contributor Author

@ruflin Implemented waitFor pattern in 8d8aabf. Ready for review again. Thanks!

@ruflin ruflin merged commit 672cf1b into elastic:master Mar 13, 2019
@ruflin
Copy link
Member

ruflin commented Mar 13, 2019

@ycombinator Already merged so today we can see if it has an effect on new PR's.

@ycombinator
Copy link
Contributor Author

Thanks @ruflin!

ycombinator added a commit to ycombinator/beats that referenced this pull request Jun 5, 2019
After repeatedly running the Elasticsearch module integration test in Metricbeat, I found that sometimes Elasticsearch doesn't get enough time to perform CCR and generate CCR stats. This causes the following error, but only some times:

```
--- FAIL: TestFetch (2.44s)
    --- FAIL: TestFetch/ccr (0.08s)
        elasticsearch_integration_test.go:92:
                Error Trace:    elasticsearch_integration_test.go:92
                Error:          Should NOT be empty, but was []
                Test:           TestFetch/ccr
```

So this PR adds a 300ms sleep to give Elasticsearch enough time to perform CCR and generate CCR stats. After testing various sleep durations, I found that 300ms seemed to be the lowest (round) value I could use that consistently passed this test.

Possibly related: elastic#10866
ycombinator added a commit that referenced this pull request Jun 6, 2019
* Add sleep to allow ES sufficient time for CCR (#11172)

After repeatedly running the Elasticsearch module integration test in Metricbeat, I found that sometimes Elasticsearch doesn't get enough time to perform CCR and generate CCR stats. This causes the following error, but only some times:

```
--- FAIL: TestFetch (2.44s)
    --- FAIL: TestFetch/ccr (0.08s)
        elasticsearch_integration_test.go:92:
                Error Trace:    elasticsearch_integration_test.go:92
                Error:          Should NOT be empty, but was []
                Test:           TestFetch/ccr
```

So this PR adds a 300ms sleep to give Elasticsearch enough time to perform CCR and generate CCR stats. After testing various sleep durations, I found that 300ms seemed to be the lowest (round) value I could use that consistently passed this test.

Possibly related: #10866

* Fixing formatting
@ycombinator ycombinator deleted the mb-es-ccr-flakiness branch December 25, 2019 11:17
leweafan pushed a commit to leweafan/beats that referenced this pull request Apr 28, 2023
…lastic#12437)

* Add sleep to allow ES sufficient time for CCR (elastic#11172)

After repeatedly running the Elasticsearch module integration test in Metricbeat, I found that sometimes Elasticsearch doesn't get enough time to perform CCR and generate CCR stats. This causes the following error, but only some times:

```
--- FAIL: TestFetch (2.44s)
    --- FAIL: TestFetch/ccr (0.08s)
        elasticsearch_integration_test.go:92:
                Error Trace:    elasticsearch_integration_test.go:92
                Error:          Should NOT be empty, but was []
                Test:           TestFetch/ccr
```

So this PR adds a 300ms sleep to give Elasticsearch enough time to perform CCR and generate CCR stats. After testing various sleep durations, I found that 300ms seemed to be the lowest (round) value I could use that consistently passed this test.

Possibly related: elastic#10866

* Fixing formatting
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
flaky-test Unstable or unreliable test cases. Metricbeat Metricbeat module review :Testing
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants