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
0
Merge Requests
0
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
Léo-Paul Géneau
gitlab-ce
Commits
270155d6
Commit
270155d6
authored
Oct 19, 2018
by
Nick Thomas
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Start tracking pool repositories
parent
f760c1cd
Changes
9
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
80 additions
and
0 deletions
+80
-0
app/models/pool_repository.rb
app/models/pool_repository.rb
+22
-0
app/models/project.rb
app/models/project.rb
+1
-0
changelogs/unreleased/52300-pool-repositories.yml
changelogs/unreleased/52300-pool-repositories.yml
+5
-0
config/initializers/fill_shards.rb
config/initializers/fill_shards.rb
+1
-0
db/migrate/20181019032408_add_repositories_table.rb
db/migrate/20181019032408_add_repositories_table.rb
+15
-0
db/migrate/20181019105553_add_projects_pool_repository_id_foreign_key.rb
...1019105553_add_projects_pool_repository_id_foreign_key.rb
+22
-0
db/schema.rb
db/schema.rb
+12
-0
lib/gitlab/import_export/import_export.yml
lib/gitlab/import_export/import_export.yml
+1
-0
spec/lib/gitlab/import_export/all_models.yml
spec/lib/gitlab/import_export/all_models.yml
+1
-0
No files found.
app/models/pool_repository.rb
0 → 100644
View file @
270155d6
# frozen_string_literal: true
class
PoolRepository
<
ActiveRecord
::
Base
POOL_PREFIX
=
'@pools'
belongs_to
:shard
validates
:shard
,
presence:
true
# For now, only pool repositories are tracked in the database. However, we may
# want to add other repository types in the future
self
.
table_name
=
'repositories'
has_many
:pool_member_projects
,
class_name:
'Project'
,
foreign_key: :pool_repository_id
def
shard_name
shard
&
.
name
end
def
shard_name
=
(
name
)
self
.
shard
=
Shard
.
by_name
(
name
)
end
end
app/models/project.rb
View file @
270155d6
...
@@ -124,6 +124,7 @@ class Project < ActiveRecord::Base
...
@@ -124,6 +124,7 @@ class Project < ActiveRecord::Base
alias_attribute
:title
,
:name
alias_attribute
:title
,
:name
# Relations
# Relations
belongs_to
:pool_repository
belongs_to
:creator
,
class_name:
'User'
belongs_to
:creator
,
class_name:
'User'
belongs_to
:group
,
->
{
where
(
type:
'Group'
)
},
foreign_key:
'namespace_id'
belongs_to
:group
,
->
{
where
(
type:
'Group'
)
},
foreign_key:
'namespace_id'
belongs_to
:namespace
belongs_to
:namespace
...
...
changelogs/unreleased/52300-pool-repositories.yml
0 → 100644
View file @
270155d6
---
title
:
Start tracking shards and pool repositories in the database
merge_request
:
22482
author
:
type
:
other
config/initializers/fill_shards.rb
View file @
270155d6
return
unless
Shard
.
connected?
return
if
Gitlab
::
Database
.
read_only?
return
if
Gitlab
::
Database
.
read_only?
Shard
.
populate!
Shard
.
populate!
db/migrate/20181019032408_add_repositories_table.rb
0 → 100644
View file @
270155d6
# frozen_string_literal: true
class
AddRepositoriesTable
<
ActiveRecord
::
Migration
DOWNTIME
=
false
def
change
create_table
:repositories
,
id: :bigserial
do
|
t
|
t
.
references
:shard
,
null:
false
,
index:
true
,
foreign_key:
{
on_delete: :restrict
}
t
.
string
:disk_path
,
null:
false
,
index:
{
unique:
true
}
end
add_column
:projects
,
:pool_repository_id
,
:bigint
add_index
:projects
,
:pool_repository_id
,
where:
'pool_repository_id IS NOT NULL'
end
end
db/migrate/20181019105553_add_projects_pool_repository_id_foreign_key.rb
0 → 100644
View file @
270155d6
# frozen_string_literal: true
class
AddProjectsPoolRepositoryIdForeignKey
<
ActiveRecord
::
Migration
include
Gitlab
::
Database
::
MigrationHelpers
DOWNTIME
=
false
disable_ddl_transaction!
def
up
add_concurrent_foreign_key
(
:projects
,
:repositories
,
column: :pool_repository_id
,
on_delete: :nullify
)
end
def
down
remove_foreign_key
(
:projects
,
column: :pool_repository_id
)
end
end
db/schema.rb
View file @
270155d6
...
@@ -1703,6 +1703,7 @@ ActiveRecord::Schema.define(version: 20181101144347) do
...
@@ -1703,6 +1703,7 @@ ActiveRecord::Schema.define(version: 20181101144347) do
t
.
integer
"jobs_cache_index"
t
.
integer
"jobs_cache_index"
t
.
boolean
"pages_https_only"
,
default:
true
t
.
boolean
"pages_https_only"
,
default:
true
t
.
boolean
"remote_mirror_available_overridden"
t
.
boolean
"remote_mirror_available_overridden"
t
.
integer
"pool_repository_id"
,
limit:
8
end
end
add_index
"projects"
,
[
"ci_id"
],
name:
"index_projects_on_ci_id"
,
using: :btree
add_index
"projects"
,
[
"ci_id"
],
name:
"index_projects_on_ci_id"
,
using: :btree
...
@@ -1719,6 +1720,7 @@ ActiveRecord::Schema.define(version: 20181101144347) do
...
@@ -1719,6 +1720,7 @@ ActiveRecord::Schema.define(version: 20181101144347) do
add_index
"projects"
,
[
"path"
],
name:
"index_projects_on_path"
,
using: :btree
add_index
"projects"
,
[
"path"
],
name:
"index_projects_on_path"
,
using: :btree
add_index
"projects"
,
[
"path"
],
name:
"index_projects_on_path_trigram"
,
using: :gin
,
opclasses:
{
"path"
=>
"gin_trgm_ops"
}
add_index
"projects"
,
[
"path"
],
name:
"index_projects_on_path_trigram"
,
using: :gin
,
opclasses:
{
"path"
=>
"gin_trgm_ops"
}
add_index
"projects"
,
[
"pending_delete"
],
name:
"index_projects_on_pending_delete"
,
using: :btree
add_index
"projects"
,
[
"pending_delete"
],
name:
"index_projects_on_pending_delete"
,
using: :btree
add_index
"projects"
,
[
"pool_repository_id"
],
name:
"index_projects_on_pool_repository_id"
,
where:
"(pool_repository_id IS NOT NULL)"
,
using: :btree
add_index
"projects"
,
[
"repository_storage"
,
"created_at"
],
name:
"idx_project_repository_check_partial"
,
where:
"(last_repository_check_at IS NULL)"
,
using: :btree
add_index
"projects"
,
[
"repository_storage"
,
"created_at"
],
name:
"idx_project_repository_check_partial"
,
where:
"(last_repository_check_at IS NULL)"
,
using: :btree
add_index
"projects"
,
[
"repository_storage"
],
name:
"index_projects_on_repository_storage"
,
using: :btree
add_index
"projects"
,
[
"repository_storage"
],
name:
"index_projects_on_repository_storage"
,
using: :btree
add_index
"projects"
,
[
"runners_token"
],
name:
"index_projects_on_runners_token"
,
using: :btree
add_index
"projects"
,
[
"runners_token"
],
name:
"index_projects_on_runners_token"
,
using: :btree
...
@@ -1851,6 +1853,14 @@ ActiveRecord::Schema.define(version: 20181101144347) do
...
@@ -1851,6 +1853,14 @@ ActiveRecord::Schema.define(version: 20181101144347) do
add_index
"remote_mirrors"
,
[
"last_successful_update_at"
],
name:
"index_remote_mirrors_on_last_successful_update_at"
,
using: :btree
add_index
"remote_mirrors"
,
[
"last_successful_update_at"
],
name:
"index_remote_mirrors_on_last_successful_update_at"
,
using: :btree
add_index
"remote_mirrors"
,
[
"project_id"
],
name:
"index_remote_mirrors_on_project_id"
,
using: :btree
add_index
"remote_mirrors"
,
[
"project_id"
],
name:
"index_remote_mirrors_on_project_id"
,
using: :btree
create_table
"repositories"
,
id: :bigserial
,
force: :cascade
do
|
t
|
t
.
integer
"shard_id"
,
null:
false
t
.
string
"disk_path"
,
null:
false
end
add_index
"repositories"
,
[
"disk_path"
],
name:
"index_repositories_on_disk_path"
,
unique:
true
,
using: :btree
add_index
"repositories"
,
[
"shard_id"
],
name:
"index_repositories_on_shard_id"
,
using: :btree
create_table
"repository_languages"
,
id:
false
,
force: :cascade
do
|
t
|
create_table
"repository_languages"
,
id:
false
,
force: :cascade
do
|
t
|
t
.
integer
"project_id"
,
null:
false
t
.
integer
"project_id"
,
null:
false
t
.
integer
"programming_language_id"
,
null:
false
t
.
integer
"programming_language_id"
,
null:
false
...
@@ -2456,6 +2466,7 @@ ActiveRecord::Schema.define(version: 20181101144347) do
...
@@ -2456,6 +2466,7 @@ ActiveRecord::Schema.define(version: 20181101144347) do
add_foreign_key
"project_import_data"
,
"projects"
,
name:
"fk_ffb9ee3a10"
,
on_delete: :cascade
add_foreign_key
"project_import_data"
,
"projects"
,
name:
"fk_ffb9ee3a10"
,
on_delete: :cascade
add_foreign_key
"project_mirror_data"
,
"projects"
,
on_delete: :cascade
add_foreign_key
"project_mirror_data"
,
"projects"
,
on_delete: :cascade
add_foreign_key
"project_statistics"
,
"projects"
,
on_delete: :cascade
add_foreign_key
"project_statistics"
,
"projects"
,
on_delete: :cascade
add_foreign_key
"projects"
,
"repositories"
,
column:
"pool_repository_id"
,
name:
"fk_6e5c14658a"
,
on_delete: :nullify
add_foreign_key
"prometheus_metrics"
,
"projects"
,
on_delete: :cascade
add_foreign_key
"prometheus_metrics"
,
"projects"
,
on_delete: :cascade
add_foreign_key
"protected_branch_merge_access_levels"
,
"protected_branches"
,
name:
"fk_8a3072ccb3"
,
on_delete: :cascade
add_foreign_key
"protected_branch_merge_access_levels"
,
"protected_branches"
,
name:
"fk_8a3072ccb3"
,
on_delete: :cascade
add_foreign_key
"protected_branch_push_access_levels"
,
"protected_branches"
,
name:
"fk_9ffc86a3d9"
,
on_delete: :cascade
add_foreign_key
"protected_branch_push_access_levels"
,
"protected_branches"
,
name:
"fk_9ffc86a3d9"
,
on_delete: :cascade
...
@@ -2467,6 +2478,7 @@ ActiveRecord::Schema.define(version: 20181101144347) do
...
@@ -2467,6 +2478,7 @@ ActiveRecord::Schema.define(version: 20181101144347) do
add_foreign_key
"push_event_payloads"
,
"events"
,
name:
"fk_36c74129da"
,
on_delete: :cascade
add_foreign_key
"push_event_payloads"
,
"events"
,
name:
"fk_36c74129da"
,
on_delete: :cascade
add_foreign_key
"releases"
,
"projects"
,
name:
"fk_47fe2a0596"
,
on_delete: :cascade
add_foreign_key
"releases"
,
"projects"
,
name:
"fk_47fe2a0596"
,
on_delete: :cascade
add_foreign_key
"remote_mirrors"
,
"projects"
,
on_delete: :cascade
add_foreign_key
"remote_mirrors"
,
"projects"
,
on_delete: :cascade
add_foreign_key
"repositories"
,
"shards"
,
on_delete: :restrict
add_foreign_key
"repository_languages"
,
"projects"
,
on_delete: :cascade
add_foreign_key
"repository_languages"
,
"projects"
,
on_delete: :cascade
add_foreign_key
"resource_label_events"
,
"issues"
,
on_delete: :cascade
add_foreign_key
"resource_label_events"
,
"issues"
,
on_delete: :cascade
add_foreign_key
"resource_label_events"
,
"labels"
,
on_delete: :nullify
add_foreign_key
"resource_label_events"
,
"labels"
,
on_delete: :nullify
...
...
lib/gitlab/import_export/import_export.yml
View file @
270155d6
...
@@ -92,6 +92,7 @@ excluded_attributes:
...
@@ -92,6 +92,7 @@ excluded_attributes:
-
:path
-
:path
-
:namespace_id
-
:namespace_id
-
:creator_id
-
:creator_id
-
:pool_repository_id
-
:import_url
-
:import_url
-
:import_status
-
:import_status
-
:avatar
-
:avatar
...
...
spec/lib/gitlab/import_export/all_models.yml
View file @
270155d6
...
@@ -299,6 +299,7 @@ project:
...
@@ -299,6 +299,7 @@ project:
-
ci_cd_settings
-
ci_cd_settings
-
import_export_upload
-
import_export_upload
-
repository_languages
-
repository_languages
-
pool_repository
award_emoji
:
award_emoji
:
-
awardable
-
awardable
-
user
-
user
...
...
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