Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
G
gitlab-ce
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
1
Merge Requests
1
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
nexedi
gitlab-ce
Commits
b4e76e64
Commit
b4e76e64
authored
Aug 26, 2016
by
Valery Sizov
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[ES] Elastic workers should check settings each time when they are running
parent
80cd8f3e
Changes
5
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
188 additions
and
101 deletions
+188
-101
CHANGELOG-EE
CHANGELOG-EE
+1
-0
app/workers/elastic_commit_indexer_worker.rb
app/workers/elastic_commit_indexer_worker.rb
+3
-0
app/workers/elastic_indexer_worker.rb
app/workers/elastic_indexer_worker.rb
+3
-0
spec/workers/elastic_commit_indexer_worker_spec.rb
spec/workers/elastic_commit_indexer_worker_spec.rb
+12
-0
spec/workers/elastic_indexer_worker_spec.rb
spec/workers/elastic_indexer_worker_spec.rb
+169
-101
No files found.
CHANGELOG-EE
View file @
b4e76e64
...
...
@@ -4,6 +4,7 @@ v 8.12.0 (Unreleased)
v 8.11.3 (Unreleased)
- [ES] Add logging to indexer
- Set the correct `GL_PROTOCOL` when rebasing !691
- [ES] Elasticsearch workers checks ES settings before running
v 8.11.2
- Additional documentation on protected branches for EE
...
...
app/workers/elastic_commit_indexer_worker.rb
View file @
b4e76e64
class
ElasticCommitIndexerWorker
include
Sidekiq
::
Worker
include
Gitlab
::
CurrentSettings
sidekiq_options
queue: :elasticsearch
,
retry:
2
def
perform
(
project_id
,
oldrev
=
nil
,
newrev
=
nil
)
return
true
unless
current_application_settings
.
elasticsearch_indexing?
project
=
Project
.
find
(
project_id
)
repository
=
project
.
repository
...
...
app/workers/elastic_indexer_worker.rb
View file @
b4e76e64
class
ElasticIndexerWorker
include
Sidekiq
::
Worker
include
Elasticsearch
::
Model
::
Client
::
ClassMethods
include
Gitlab
::
CurrentSettings
sidekiq_options
queue: :elasticsearch
,
retry:
2
ISSUE_TRACKED_FIELDS
=
%w(assignee_id author_id confidential)
def
perform
(
operation
,
class_name
,
record_id
,
options
=
{})
return
true
unless
current_application_settings
.
elasticsearch_indexing?
klass
=
class_name
.
constantize
case
operation
.
to_s
...
...
spec/workers/elastic_commit_indexer_worker_spec.rb
View file @
b4e76e64
...
...
@@ -6,6 +6,10 @@ describe ElasticCommitIndexerWorker do
subject
{
described_class
.
new
}
describe
'#perform'
do
before
do
stub_application_setting
(
elasticsearch_indexing:
true
)
end
it
'runs indexer'
do
expect_any_instance_of
(
Gitlab
::
Elastic
::
Indexer
).
to
receive
(
:run
)
subject
.
perform
(
project
.
id
,
'0000'
,
'0000'
)
...
...
@@ -27,5 +31,13 @@ describe ElasticCommitIndexerWorker do
expect
(
subject
.
perform
(
project
.
id
)).
to
be_truthy
end
it
'returns true if ES disabled'
do
stub_application_setting
(
elasticsearch_indexing:
false
)
expect_any_instance_of
(
Gitlab
::
Elastic
::
Indexer
).
not_to
receive
(
:run
)
expect
(
subject
.
perform
(
1
)).
to
be_truthy
end
end
end
spec/workers/elastic_indexer_worker_spec.rb
View file @
b4e76e64
...
...
@@ -11,16 +11,29 @@ describe ElasticIndexerWorker, elastic: true do
)
Gitlab
::
Elastic
::
Helper
.
create_empty_index
stub_application_setting
(
elasticsearch_indexing:
true
)
end
after
do
Gitlab
::
Elastic
::
Helper
.
delete_index
end
Sidekiq
::
Testing
.
disable!
do
it
'returns true if ES disabled'
do
stub_application_setting
(
elasticsearch_indexing:
false
)
expect_any_instance_of
(
Elasticsearch
::
Model
).
not_to
receive
(
:__elasticsearch__
)
expect
(
subject
.
perform
(
"index"
,
"Milestone"
,
1
)).
to
be_truthy
end
describe
'Indexing new records'
do
it
'indexes a project'
do
project
=
nil
Sidekiq
::
Testing
.
disable!
do
project
=
create
:empty_project
end
expect
do
subject
.
perform
(
"index"
,
"Project"
,
project
.
id
)
...
...
@@ -29,7 +42,11 @@ describe ElasticIndexerWorker, elastic: true do
end
it
'indexes an issue'
do
issue
=
nil
Sidekiq
::
Testing
.
disable!
do
issue
=
create
:issue
end
expect
do
subject
.
perform
(
"index"
,
"Issue"
,
issue
.
id
)
...
...
@@ -38,7 +55,11 @@ describe ElasticIndexerWorker, elastic: true do
end
it
'indexes a note'
do
note
=
nil
Sidekiq
::
Testing
.
disable!
do
note
=
create
:note
end
expect
do
subject
.
perform
(
"index"
,
"Note"
,
note
.
id
)
...
...
@@ -47,7 +68,11 @@ describe ElasticIndexerWorker, elastic: true do
end
it
'indexes a milestone'
do
milestone
=
nil
Sidekiq
::
Testing
.
disable!
do
milestone
=
create
:milestone
end
expect
do
subject
.
perform
(
"index"
,
"Milestone"
,
milestone
.
id
)
...
...
@@ -56,7 +81,11 @@ describe ElasticIndexerWorker, elastic: true do
end
it
'indexes a merge request'
do
merge_request
=
nil
Sidekiq
::
Testing
.
disable!
do
merge_request
=
create
:merge_request
end
expect
do
subject
.
perform
(
"index"
,
"MergeRequest"
,
merge_request
.
id
)
...
...
@@ -67,9 +96,13 @@ describe ElasticIndexerWorker, elastic: true do
describe
'Updating index'
do
it
'updates a project'
do
project
=
nil
Sidekiq
::
Testing
.
disable!
do
project
=
create
:empty_project
subject
.
perform
(
"index"
,
"Project"
,
project
.
id
)
project
.
update
(
name:
"new"
)
end
expect
do
subject
.
perform
(
"update"
,
"Project"
,
project
.
id
)
...
...
@@ -78,9 +111,13 @@ describe ElasticIndexerWorker, elastic: true do
end
it
'updates an issue'
do
issue
=
nil
Sidekiq
::
Testing
.
disable!
do
issue
=
create
:issue
subject
.
perform
(
"index"
,
"Issue"
,
issue
.
id
)
issue
.
update
(
title:
"new"
)
end
expect
do
subject
.
perform
(
"update"
,
"Issue"
,
issue
.
id
)
...
...
@@ -89,9 +126,13 @@ describe ElasticIndexerWorker, elastic: true do
end
it
'updates a note'
do
note
=
nil
Sidekiq
::
Testing
.
disable!
do
note
=
create
:note
subject
.
perform
(
"index"
,
"Note"
,
note
.
id
)
note
.
update
(
note:
'new'
)
end
expect
do
subject
.
perform
(
"update"
,
"Note"
,
note
.
id
)
...
...
@@ -100,9 +141,13 @@ describe ElasticIndexerWorker, elastic: true do
end
it
'updates a milestone'
do
milestone
=
nil
Sidekiq
::
Testing
.
disable!
do
milestone
=
create
:milestone
subject
.
perform
(
"index"
,
"Milestone"
,
milestone
.
id
)
milestone
.
update
(
title:
'new'
)
end
expect
do
subject
.
perform
(
"update"
,
"Milestone"
,
milestone
.
id
)
...
...
@@ -111,9 +156,13 @@ describe ElasticIndexerWorker, elastic: true do
end
it
'updates a merge request'
do
merge_request
=
nil
Sidekiq
::
Testing
.
disable!
do
merge_request
=
create
:merge_request
subject
.
perform
(
"index"
,
"MergeRequest"
,
merge_request
.
id
)
merge_request
.
update
(
title:
'new'
)
end
expect
do
subject
.
perform
(
"index"
,
"MergeRequest"
,
merge_request
.
id
)
...
...
@@ -124,6 +173,9 @@ describe ElasticIndexerWorker, elastic: true do
describe
'Delete'
do
it
'deletes a project with all nested objects'
do
project
,
issue
,
milestone
,
note
,
merge_request
=
nil
Sidekiq
::
Testing
.
disable!
do
project
=
create
:project
subject
.
perform
(
"index"
,
"Project"
,
project
.
id
)
...
...
@@ -138,6 +190,7 @@ describe ElasticIndexerWorker, elastic: true do
merge_request
=
create
:merge_request
,
target_project:
project
,
source_project:
project
subject
.
perform
(
"index"
,
"MergeRequest"
,
merge_request
.
id
)
end
ElasticCommitIndexerWorker
.
new
.
perform
(
project
.
id
)
Gitlab
::
Elastic
::
Helper
.
refresh_index
...
...
@@ -152,56 +205,71 @@ describe ElasticIndexerWorker, elastic: true do
end
it
'deletes an issue'
do
issue
,
project_id
=
nil
Sidekiq
::
Testing
.
disable!
do
issue
=
create
:issue
subject
.
perform
(
"index"
,
"Issue"
,
issue
.
id
)
Gitlab
::
Elastic
::
Helper
.
refresh_index
project_id
=
issue
.
project_id
issue
.
destroy
end
expect
do
subject
.
perform
(
"delete"
,
"Issue"
,
issue
.
id
,
"project_id"
=>
issue
.
project_id
)
subject
.
perform
(
"delete"
,
"Issue"
,
issue
.
id
,
"project_id"
=>
project_id
)
Gitlab
::
Elastic
::
Helper
.
refresh_index
end
.
to
change
{
Elasticsearch
::
Model
.
search
(
'*'
).
total_count
}.
by
(
-
1
)
end
it
'deletes a note'
do
note
,
project_id
=
nil
Sidekiq
::
Testing
.
disable!
do
note
=
create
:note
subject
.
perform
(
"index"
,
"Note"
,
note
.
id
)
Gitlab
::
Elastic
::
Helper
.
refresh_index
project_id
=
note
.
project_id
note
.
destroy
end
expect
do
subject
.
perform
(
"delete"
,
"Note"
,
note
.
id
,
"project_id"
=>
note
.
project_id
)
subject
.
perform
(
"delete"
,
"Note"
,
note
.
id
,
"project_id"
=>
project_id
)
Gitlab
::
Elastic
::
Helper
.
refresh_index
end
.
to
change
{
Elasticsearch
::
Model
.
search
(
'*'
).
total_count
}.
by
(
-
1
)
end
it
'deletes a milestone'
do
milestone
,
project_id
=
nil
Sidekiq
::
Testing
.
disable!
do
milestone
=
create
:milestone
subject
.
perform
(
"index"
,
"Milestone"
,
milestone
.
id
)
Gitlab
::
Elastic
::
Helper
.
refresh_index
project_id
=
milestone
.
project_id
milestone
.
destroy
end
expect
do
subject
.
perform
(
"delete"
,
"Milestone"
,
milestone
.
id
,
"project_id"
=>
milestone
.
project_id
)
subject
.
perform
(
"delete"
,
"Milestone"
,
milestone
.
id
,
"project_id"
=>
project_id
)
Gitlab
::
Elastic
::
Helper
.
refresh_index
end
.
to
change
{
Elasticsearch
::
Model
.
search
(
'*'
).
total_count
}.
by
(
-
1
)
end
it
'deletes a merge request'
do
merge_request
,
project_id
=
nil
Sidekiq
::
Testing
.
disable!
do
merge_request
=
create
:merge_request
subject
.
perform
(
"index"
,
"MergeRequest"
,
merge_request
.
id
)
Gitlab
::
Elastic
::
Helper
.
refresh_index
project_id
=
merge_request
.
target_project_id
merge_request
.
destroy
end
expect
do
subject
.
perform
(
"delete"
,
"MergeRequest"
,
merge_request
.
id
,
"project_id"
=>
merge_request
.
target_
project_id
)
subject
.
perform
(
"delete"
,
"MergeRequest"
,
merge_request
.
id
,
"project_id"
=>
project_id
)
Gitlab
::
Elastic
::
Helper
.
refresh_index
end
.
to
change
{
Elasticsearch
::
Model
.
search
(
'*'
).
total_count
}.
by
(
-
1
)
end
end
end
end
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment