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
0f9f1b99
Commit
0f9f1b99
authored
Sep 16, 2021
by
Terri Chu
Committed by
Dmitry Gruzd
Sep 16, 2021
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fix Elastic::MigrationWorker current_migration (2nd attempt)
parent
dec0df95
Changes
5
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
155 additions
and
134 deletions
+155
-134
ee/app/models/elastic/migration_record.rb
ee/app/models/elastic/migration_record.rb
+0
-2
ee/app/workers/elastic/migration_worker.rb
ee/app/workers/elastic/migration_worker.rb
+12
-5
ee/spec/models/elastic/migration_record_spec.rb
ee/spec/models/elastic/migration_record_spec.rb
+8
-8
ee/spec/tasks/gitlab/elastic_rake_spec.rb
ee/spec/tasks/gitlab/elastic_rake_spec.rb
+0
-1
ee/spec/workers/elastic/migration_worker_spec.rb
ee/spec/workers/elastic/migration_worker_spec.rb
+135
-118
No files found.
ee/app/models/elastic/migration_record.rb
View file @
0f9f1b99
...
@@ -65,8 +65,6 @@ module Elastic
...
@@ -65,8 +65,6 @@ module Elastic
.
search
(
index:
helper
.
migrations_index_name
,
body:
{
query:
{
term:
{
completed:
completed
}
},
size:
ELASTICSEARCH_SIZE
})
.
search
(
index:
helper
.
migrations_index_name
,
body:
{
query:
{
term:
{
completed:
completed
}
},
size:
ELASTICSEARCH_SIZE
})
.
dig
(
'hits'
,
'hits'
)
.
dig
(
'hits'
,
'hits'
)
.
map
{
|
v
|
v
[
'_id'
].
to_i
}
.
map
{
|
v
|
v
[
'_id'
].
to_i
}
rescue
StandardError
[]
end
end
def
running?
def
running?
...
...
ee/app/workers/elastic/migration_worker.rb
View file @
0f9f1b99
...
@@ -21,6 +21,13 @@ module Elastic
...
@@ -21,6 +21,13 @@ module Elastic
return
false
unless
helper
.
alias_exists?
return
false
unless
helper
.
alias_exists?
in_lock
(
self
.
class
.
name
.
underscore
,
ttl:
1
.
day
,
retries:
10
,
sleep_sec:
1
)
do
in_lock
(
self
.
class
.
name
.
underscore
,
ttl:
1
.
day
,
retries:
10
,
sleep_sec:
1
)
do
# migration index should be checked before pulling the current_migration because if no migrations_index exists,
# current_migration will return nil
unless
helper
.
migrations_index_exists?
logger
.
info
'MigrationWorker: creating migrations index'
helper
.
create_migrations_index
end
migration
=
current_migration
migration
=
current_migration
unless
migration
unless
migration
...
@@ -28,11 +35,6 @@ module Elastic
...
@@ -28,11 +35,6 @@ module Elastic
break
false
break
false
end
end
unless
helper
.
migrations_index_exists?
logger
.
info
'MigrationWorker: creating migrations index'
helper
.
create_migrations_index
end
if
migration
.
halted?
if
migration
.
halted?
logger
.
info
"MigrationWorker: migration[
#{
migration
.
name
}
] has been halted. All future migrations will be halted because of that. Exiting"
logger
.
info
"MigrationWorker: migration[
#{
migration
.
name
}
] has been halted. All future migrations will be halted because of that. Exiting"
unpause_indexing!
(
migration
)
unpause_indexing!
(
migration
)
...
@@ -89,7 +91,12 @@ module Elastic
...
@@ -89,7 +91,12 @@ module Elastic
def
current_migration
def
current_migration
completed_migrations
=
Elastic
::
MigrationRecord
.
load_versions
(
completed:
true
)
completed_migrations
=
Elastic
::
MigrationRecord
.
load_versions
(
completed:
true
)
# use a negative condition to support new migrations which do not exist in the index yet
Elastic
::
DataMigrationService
.
migrations
.
find
{
|
migration
|
!
completed_migrations
.
include?
(
migration
.
version
)
}
Elastic
::
DataMigrationService
.
migrations
.
find
{
|
migration
|
!
completed_migrations
.
include?
(
migration
.
version
)
}
rescue
StandardError
=>
e
# do not return a migration if there is an issue communicating with the Elasticsearch instance
logger
.
error
(
"MigrationWorker:
#{
e
.
class
}
:
#{
e
.
message
}
"
)
nil
end
end
def
pause_indexing!
(
migration
)
def
pause_indexing!
(
migration
)
...
...
ee/spec/models/elastic/migration_record_spec.rb
View file @
0f9f1b99
...
@@ -42,13 +42,13 @@ RSpec.describe Elastic::MigrationRecord, :elastic do
...
@@ -42,13 +42,13 @@ RSpec.describe Elastic::MigrationRecord, :elastic do
end
end
describe
'#load_from_index'
do
describe
'#load_from_index'
do
it
'does not raise an exeption when connection refused'
do
it
'does not raise an ex
c
eption when connection refused'
do
allow
(
Gitlab
::
Elastic
::
Helper
.
default
).
to
receive
(
:get
).
and_raise
(
Faraday
::
ConnectionFailed
)
allow
(
Gitlab
::
Elastic
::
Helper
.
default
).
to
receive
(
:get
).
and_raise
(
Faraday
::
ConnectionFailed
)
expect
(
record
.
load_from_index
).
to
be_nil
expect
(
record
.
load_from_index
).
to
be_nil
end
end
it
'does not raise an exeption when record does not exist'
do
it
'does not raise an ex
c
eption when record does not exist'
do
allow
(
Gitlab
::
Elastic
::
Helper
.
default
).
to
receive
(
:get
).
and_raise
(
Elasticsearch
::
Transport
::
Transport
::
Errors
::
NotFound
)
allow
(
Gitlab
::
Elastic
::
Helper
.
default
).
to
receive
(
:get
).
and_raise
(
Elasticsearch
::
Transport
::
Transport
::
Errors
::
NotFound
)
expect
(
record
.
load_from_index
).
to
be_nil
expect
(
record
.
load_from_index
).
to
be_nil
...
@@ -95,18 +95,18 @@ RSpec.describe Elastic::MigrationRecord, :elastic do
...
@@ -95,18 +95,18 @@ RSpec.describe Elastic::MigrationRecord, :elastic do
expect
(
described_class
.
load_versions
(
completed:
false
)).
to
contain_exactly
(
in_progress_migration
.
version
)
expect
(
described_class
.
load_versions
(
completed:
false
)).
to
contain_exactly
(
in_progress_migration
.
version
)
end
end
it
'r
eturns empty array
if no index present'
do
it
'r
aises an exception
if no index present'
do
es_helper
.
delete_migrations_index
es_helper
.
delete_migrations_index
expect
(
described_class
.
load_versions
(
completed:
true
)).
to
eq
([]
)
expect
{
described_class
.
load_versions
(
completed:
true
)
}.
to
raise_exception
(
Elasticsearch
::
Transport
::
Transport
::
Errors
::
NotFound
)
expect
(
described_class
.
load_versions
(
completed:
false
)).
to
eq
([]
)
expect
{
described_class
.
load_versions
(
completed:
false
)
}.
to
raise_exception
(
Elasticsearch
::
Transport
::
Transport
::
Errors
::
NotFound
)
end
end
it
'r
eturns empty array
when exception is raised'
do
it
'r
aises an exception
when exception is raised'
do
allow
(
Gitlab
::
Elastic
::
Helper
.
default
.
client
).
to
receive
(
:search
).
and_raise
(
Faraday
::
ConnectionFailed
)
allow
(
Gitlab
::
Elastic
::
Helper
.
default
.
client
).
to
receive
(
:search
).
and_raise
(
Faraday
::
ConnectionFailed
)
expect
(
described_class
.
load_versions
(
completed:
true
)).
to
eq
([]
)
expect
{
described_class
.
load_versions
(
completed:
true
)
}.
to
raise_exception
(
StandardError
)
expect
(
described_class
.
load_versions
(
completed:
false
)).
to
eq
([]
)
expect
{
described_class
.
load_versions
(
completed:
false
)
}.
to
raise_exception
(
StandardError
)
end
end
end
end
...
...
ee/spec/tasks/gitlab/elastic_rake_spec.rb
View file @
0f9f1b99
...
@@ -69,7 +69,6 @@ RSpec.describe 'gitlab:elastic namespace rake tasks', :elastic, :silence_stdout
...
@@ -69,7 +69,6 @@ RSpec.describe 'gitlab:elastic namespace rake tasks', :elastic, :silence_stdout
it
'marks all migrations as completed'
do
it
'marks all migrations as completed'
do
expect
(
Elastic
::
DataMigrationService
).
to
receive
(
:mark_all_as_completed!
).
and_call_original
expect
(
Elastic
::
DataMigrationService
).
to
receive
(
:mark_all_as_completed!
).
and_call_original
expect
(
Elastic
::
MigrationRecord
.
load_versions
(
completed:
true
)).
to
eq
([])
subject
subject
refresh_index!
refresh_index!
...
...
ee/spec/workers/elastic/migration_worker_spec.rb
View file @
0f9f1b99
This diff is collapsed.
Click to expand it.
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