Flaky test `./ee/spec/workers/elastic_indexer_worker_spec.rb`
Summary
- Job failure https://gitlab.com/gitlab-org/gitlab/-/jobs/502424484 failing for 505e04cc
- Job failure https://gitlab.com/gitlab-org/gitlab/-/jobs/501349643 failing for 26999d59
- Job failure https://gitlab.com/gitlab-org/gitlab/-/jobs/504064263 failing for c6a16a4a
Stack trace
6) ElasticIndexerWorker Indexing, updating, and deleting records type: :merge_request, name: "MergeRequest", attribute: :title deletes from index when an object is deleted
Failure/Error:
expect do
subject.perform("delete", name, object.id, object.es_id, { 'es_parent' => object.es_parent })
ensure_elasticsearch_index!
end.to change { Elasticsearch::Model.search('*').total_count }.by(-1)
NoMethodError:
undefined method `model_name' for [PROXY] #<Class:0x000055800161e960>:Elasticsearch::Model::Proxy::ClassMethodsProxy
# ./vendor/ruby/2.6.0/gems/elasticsearch-model-6.1.0/lib/elasticsearch/model/proxy.rb:96:in `method_missing'
# ./vendor/ruby/2.6.0/gems/elasticsearch-model-6.1.0/lib/elasticsearch/model/naming.rb:96:in `default_index_name'
# ./vendor/ruby/2.6.0/gems/elasticsearch-model-6.1.0/lib/elasticsearch/model/naming.rb:92:in `implicit'
# ./vendor/ruby/2.6.0/gems/elasticsearch-model-6.1.0/lib/elasticsearch/model/naming.rb:39:in `index_name'
# ./vendor/ruby/2.6.0/gems/elasticsearch-model-6.1.0/lib/elasticsearch/model.rb:118:in `index_name'
# ./vendor/ruby/2.6.0/gems/elasticsearch-model-6.1.0/lib/elasticsearch/model/multimodel.rb:63:in `block in index_name'
# ./vendor/ruby/2.6.0/gems/elasticsearch-model-6.1.0/lib/elasticsearch/model/multimodel.rb:63:in `map'
# ./vendor/ruby/2.6.0/gems/elasticsearch-model-6.1.0/lib/elasticsearch/model/multimodel.rb:63:in `index_name'
# ./vendor/ruby/2.6.0/gems/elasticsearch-model-6.1.0/lib/elasticsearch/model/searching.rb:22:in `initialize'
# ./vendor/ruby/2.6.0/gems/elasticsearch-model-6.1.0/lib/elasticsearch/model.rb:181:in `new'
# ./vendor/ruby/2.6.0/gems/elasticsearch-model-6.1.0/lib/elasticsearch/model.rb:181:in `search'
# ./ee/spec/workers/elastic_indexer_worker_spec.rb:58:in `block (5 levels) in <top (required)>'
# ./vendor/ruby/2.6.0/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/change.rb:403:in `evaluate_value_proc'
# ./vendor/ruby/2.6.0/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/change.rb:368:in `perform_change'
# ./vendor/ruby/2.6.0/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/change.rb:141:in `matches?'
# ./vendor/ruby/2.6.0/gems/rspec-expectations-3.9.0/lib/rspec/expectations/handler.rb:50:in `block in handle_matcher'
# ./vendor/ruby/2.6.0/gems/rspec-expectations-3.9.0/lib/rspec/expectations/handler.rb:27:in `with_matcher'
# ./vendor/ruby/2.6.0/gems/rspec-expectations-3.9.0/lib/rspec/expectations/handler.rb:48:in `handle_matcher'
# ./vendor/ruby/2.6.0/gems/rspec-expectations-3.9.0/lib/rspec/expectations/expectation_target.rb:65:in `to'
# ./vendor/ruby/2.6.0/gems/rspec-expectations-3.9.0/lib/rspec/expectations/expectation_target.rb:101:in `to'
# ./ee/spec/workers/elastic_indexer_worker_spec.rb:55:in `block (4 levels) in <top (required)>'
# ./vendor/ruby/2.6.0/gems/rspec-core-3.9.1/lib/rspec/core/example.rb:257:in `instance_exec'
# ./vendor/ruby/2.6.0/gems/rspec-core-3.9.1/lib/rspec/core/example.rb:257:in `block in run'
# ./vendor/ruby/2.6.0/gems/rspec-core-3.9.1/lib/rspec/core/example.rb:503:in `block in with_around_and_singleton_context_hooks'
# ./vendor/ruby/2.6.0/gems/rspec-core-3.9.1/lib/rspec/core/example.rb:460:in `block in with_around_example_hooks'
# ./vendor/ruby/2.6.0/gems/rspec-core-3.9.1/lib/rspec/core/hooks.rb:472:in `block in run'
# ./vendor/ruby/2.6.0/gems/rspec-core-3.9.1/lib/rspec/core/hooks.rb:612:in `block in run_around_example_hooks_for'
# ./vendor/ruby/2.6.0/gems/rspec-core-3.9.1/lib/rspec/core/example.rb:345:in `call'
# ./vendor/ruby/2.6.0/gems/rspec-rails-4.0.0.beta4/lib/rspec/rails/adapters.rb:75:in `block (2 levels) in <module:MinitestLifecycleAdapter>'
# ./vendor/ruby/2.6.0/gems/rspec-core-3.9.1/lib/rspec/core/example.rb:450:in `instance_exec'
# ./vendor/ruby/2.6.0/gems/rspec-core-3.9.1/lib/rspec/core/example.rb:450:in `instance_exec'
# ./vendor/ruby/2.6.0/gems/rspec-core-3.9.1/lib/rspec/core/hooks.rb:381:in `execute_with'
# ./vendor/ruby/2.6.0/gems/rspec-core-3.9.1/lib/rspec/core/hooks.rb:614:in `block (2 levels) in run_around_example_hooks_for'
# ./vendor/ruby/2.6.0/gems/rspec-core-3.9.1/lib/rspec/core/example.rb:345:in `call'
# ./spec/spec_helper.rb:297:in `block (3 levels) in <top (required)>'
# ./vendor/ruby/2.6.0/gems/gitlab-labkit-0.12.0/lib/labkit/context.rb:32:in `with_context'
# ./spec/spec_helper.rb:297:in `block (2 levels) in <top (required)>'
# ./vendor/ruby/2.6.0/gems/rspec-core-3.9.1/lib/rspec/core/example.rb:450:in `instance_exec'
# ./vendor/ruby/2.6.0/gems/rspec-core-3.9.1/lib/rspec/core/example.rb:450:in `instance_exec'
# ./vendor/ruby/2.6.0/gems/rspec-core-3.9.1/lib/rspec/core/hooks.rb:381:in `execute_with'
# ./vendor/ruby/2.6.0/gems/rspec-core-3.9.1/lib/rspec/core/hooks.rb:614:in `block (2 levels) in run_around_example_hooks_for'
# ./vendor/ruby/2.6.0/gems/rspec-core-3.9.1/lib/rspec/core/example.rb:345:in `call'
# ./vendor/ruby/2.6.0/gems/rspec-retry-0.6.1/lib/rspec/retry.rb:123:in `block in run'
# ./vendor/ruby/2.6.0/gems/rspec-retry-0.6.1/lib/rspec/retry.rb:110:in `loop'
# ./vendor/ruby/2.6.0/gems/rspec-retry-0.6.1/lib/rspec/retry.rb:110:in `run'
# ./vendor/ruby/2.6.0/gems/rspec-retry-0.6.1/lib/rspec_ext/rspec_ext.rb:12:in `run_with_retry'
# ./vendor/ruby/2.6.0/gems/rspec-retry-0.6.1/lib/rspec/retry.rb:37:in `block (2 levels) in setup'
# ./vendor/ruby/2.6.0/gems/rspec-core-3.9.1/lib/rspec/core/example.rb:450:in `instance_exec'
# ./vendor/ruby/2.6.0/gems/rspec-core-3.9.1/lib/rspec/core/example.rb:450:in `instance_exec'
# ./vendor/ruby/2.6.0/gems/rspec-core-3.9.1/lib/rspec/core/hooks.rb:381:in `execute_with'
# ./vendor/ruby/2.6.0/gems/rspec-core-3.9.1/lib/rspec/core/hooks.rb:614:in `block (2 levels) in run_around_example_hooks_for'
# ./vendor/ruby/2.6.0/gems/rspec-core-3.9.1/lib/rspec/core/example.rb:345:in `call'
# ./vendor/ruby/2.6.0/gems/rspec-core-3.9.1/lib/rspec/core/hooks.rb:615:in `run_around_example_hooks_for'
# ./vendor/ruby/2.6.0/gems/rspec-core-3.9.1/lib/rspec/core/hooks.rb:472:in `run'
# ./vendor/ruby/2.6.0/gems/rspec-core-3.9.1/lib/rspec/core/example.rb:460:in `with_around_example_hooks'
# ./vendor/ruby/2.6.0/gems/rspec-core-3.9.1/lib/rspec/core/example.rb:503:in `with_around_and_singleton_context_hooks'
# ./vendor/ruby/2.6.0/gems/rspec-core-3.9.1/lib/rspec/core/example.rb:254:in `run'
# ./vendor/ruby/2.6.0/gems/rspec-core-3.9.1/lib/rspec/core/example_group.rb:633:in `block in run_examples'
# ./vendor/ruby/2.6.0/gems/rspec-core-3.9.1/lib/rspec/core/example_group.rb:629:in `map'
# ./vendor/ruby/2.6.0/gems/rspec-core-3.9.1/lib/rspec/core/example_group.rb:629:in `run_examples'
# ./vendor/ruby/2.6.0/gems/rspec-core-3.9.1/lib/rspec/core/example_group.rb:595:in `run'
# ./vendor/ruby/2.6.0/gems/rspec-core-3.9.1/lib/rspec/core/example_group.rb:596:in `block in run'
# ./vendor/ruby/2.6.0/gems/rspec-core-3.9.1/lib/rspec/core/example_group.rb:596:in `map'
# ./vendor/ruby/2.6.0/gems/rspec-core-3.9.1/lib/rspec/core/example_group.rb:596:in `run'
# ./vendor/ruby/2.6.0/gems/rspec-core-3.9.1/lib/rspec/core/example_group.rb:596:in `block in run'
# ./vendor/ruby/2.6.0/gems/rspec-core-3.9.1/lib/rspec/core/example_group.rb:596:in `map'
# ./vendor/ruby/2.6.0/gems/rspec-core-3.9.1/lib/rspec/core/example_group.rb:596:in `run'
# ./vendor/ruby/2.6.0/gems/rspec-core-3.9.1/lib/rspec/core/runner.rb:121:in `block (3 levels) in run_specs'
# ./vendor/ruby/2.6.0/gems/rspec-core-3.9.1/lib/rspec/core/runner.rb:121:in `map'
# ./vendor/ruby/2.6.0/gems/rspec-core-3.9.1/lib/rspec/core/runner.rb:121:in `block (2 levels) in run_specs'
# ./vendor/ruby/2.6.0/gems/rspec-core-3.9.1/lib/rspec/core/configuration.rb:2031:in `with_suite_hooks'
# ./vendor/ruby/2.6.0/gems/rspec-core-3.9.1/lib/rspec/core/runner.rb:116:in `block in run_specs'
# ./vendor/ruby/2.6.0/gems/rspec-core-3.9.1/lib/rspec/core/reporter.rb:74:in `report'
# ./vendor/ruby/2.6.0/gems/rspec-core-3.9.1/lib/rspec/core/runner.rb:115:in `run_specs'
# ./vendor/ruby/2.6.0/gems/rspec-core-3.9.1/lib/rspec/core/runner.rb:89:in `run'
# ./vendor/ruby/2.6.0/gems/rspec-core-3.9.1/lib/rspec/core/runner.rb:71:in `run'
# ./vendor/ruby/2.6.0/gems/rspec-core-3.9.1/lib/rspec/core/runner.rb:45:in `invoke'
# ./vendor/ruby/2.6.0/gems/rspec-core-3.9.1/exe/rspec:4:in `<top (required)>'
# ./vendor/ruby/2.6.0/bin/rspec:23:in `load'
# ./vendor/ruby/2.6.0/bin/rspec:23:in `<top (required)>'
# /usr/local/lib/ruby/2.6.0/bundler/cli/exec.rb:74:in `load'
# /usr/local/lib/ruby/2.6.0/bundler/cli/exec.rb:74:in `kernel_load'
# /usr/local/lib/ruby/2.6.0/bundler/cli/exec.rb:28:in `run'
# /usr/local/lib/ruby/2.6.0/bundler/cli.rb:463:in `exec'
# /usr/local/lib/ruby/2.6.0/bundler/vendor/thor/lib/thor/command.rb:27:in `run'
# /usr/local/lib/ruby/2.6.0/bundler/vendor/thor/lib/thor/invocation.rb:126:in `invoke_command'
# /usr/local/lib/ruby/2.6.0/bundler/vendor/thor/lib/thor.rb:387:in `dispatch'
# /usr/local/lib/ruby/2.6.0/bundler/cli.rb:27:in `dispatch'
# /usr/local/lib/ruby/2.6.0/bundler/vendor/thor/lib/thor/base.rb:466:in `start'
# /usr/local/lib/ruby/2.6.0/bundler/cli.rb:18:in `start'
# /usr/local/lib/ruby/gems/2.6.0/gems/bundler-1.17.2/exe/bundle:30:in `block in <top (required)>'
# /usr/local/lib/ruby/2.6.0/bundler/friendly_errors.rb:124:in `with_friendly_errors'
# /usr/local/lib/ruby/gems/2.6.0/gems/bundler-1.17.2/exe/bundle:22:in `<top (required)>'
# /usr/local/bin/bundle:23:in `load'
# /usr/local/bin/bundle:23:in `<main>'
Finished in 13 minutes 6 seconds (files took 57.92 seconds to load)
1492 examples, 6 failures, 10 pending
Failed examples:
rspec ./ee/spec/workers/elastic_indexer_worker_spec.rb:63 # ElasticIndexerWorker deletes a project with all nested objects
rspec './ee/spec/workers/elastic_indexer_worker_spec.rb[1:2:1:2]' # ElasticIndexerWorker Indexing, updating, and deleting records type: :project, name: "Project", attribute: :name deletes from index when an object is deleted
rspec './ee/spec/workers/elastic_indexer_worker_spec.rb[1:2:2:2]' # ElasticIndexerWorker Indexing, updating, and deleting records type: :issue, name: "Issue", attribute: :title deletes from index when an object is deleted
rspec './ee/spec/workers/elastic_indexer_worker_spec.rb[1:2:3:2]' # ElasticIndexerWorker Indexing, updating, and deleting records type: :note, name: "Note", attribute: :note deletes from index when an object is deleted
rspec './ee/spec/workers/elastic_indexer_worker_spec.rb[1:2:4:2]' # ElasticIndexerWorker Indexing, updating, and deleting records type: :milestone, name: "Milestone", attribute: :title deletes from index when an object is deleted
rspec './ee/spec/workers/elastic_indexer_worker_spec.rb[1:2:5:2]' # ElasticIndexerWorker Indexing, updating, and deleting records type: :merge_request, name: "MergeRequest", attribute: :title deletes from index when an object is deleted
Possible fixes
Edited by Magdalena Frankiewicz