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
Jérome Perrin
gitlab-ce
Commits
b7f49aa0
Commit
b7f49aa0
authored
Jan 13, 2016
by
Yorick Peterse
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'configure-randomize-metrics-sample-interval' into 'master'
See merge request !2406
parents
c7d9e780
057eb824
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
318 additions
and
259 deletions
+318
-259
app/controllers/admin/application_settings_controller.rb
app/controllers/admin/application_settings_controller.rb
+1
-0
app/views/admin/application_settings/_form.html.haml
app/views/admin/application_settings/_form.html.haml
+7
-0
db/migrate/20160113111034_add_metrics_sample_interval.rb
db/migrate/20160113111034_add_metrics_sample_interval.rb
+6
-0
db/schema.rb
db/schema.rb
+255
-253
lib/gitlab/metrics.rb
lib/gitlab/metrics.rb
+2
-1
lib/gitlab/metrics/sampler.rb
lib/gitlab/metrics/sampler.rb
+26
-4
spec/lib/gitlab/metrics/sampler_spec.rb
spec/lib/gitlab/metrics/sampler_spec.rb
+21
-1
No files found.
app/controllers/admin/application_settings_controller.rb
View file @
b7f49aa0
...
...
@@ -73,6 +73,7 @@ class Admin::ApplicationSettingsController < Admin::ApplicationController
:metrics_pool_size
,
:metrics_timeout
,
:metrics_method_call_threshold
,
:metrics_sample_interval
,
:recaptcha_enabled
,
:recaptcha_site_key
,
:recaptcha_private_key
,
...
...
app/views/admin/application_settings/_form.html.haml
View file @
b7f49aa0
...
...
@@ -202,6 +202,13 @@
.help-block
A method call is only tracked when it takes longer to complete than
the given amount of milliseconds.
.form-group
=
f
.
label
:metrics_sample_interval
,
'Sampler Interval (sec)'
,
class:
'control-label col-sm-2'
.col-sm-10
=
f
.
number_field
:metrics_sample_interval
,
class:
'form-control'
.help-block
The sampling interval in seconds. Sampled data includes memory usage,
retained Ruby objects, file descriptors and so on.
%fieldset
%legend
Spam and Anti-bot Protection
...
...
db/migrate/20160113111034_add_metrics_sample_interval.rb
0 → 100644
View file @
b7f49aa0
class
AddMetricsSampleInterval
<
ActiveRecord
::
Migration
def
change
add_column
:application_settings
,
:metrics_sample_interval
,
:integer
,
default:
15
end
end
db/schema.rb
View file @
b7f49aa0
...
...
@@ -11,7 +11,7 @@
#
# It's strongly recommended that you check this file into your version control system.
ActiveRecord
::
Schema
.
define
(
version:
201601
06164438
)
do
ActiveRecord
::
Schema
.
define
(
version:
201601
13111034
)
do
# These are extensions that must be enabled in order to support this database
enable_extension
"plpgsql"
...
...
@@ -32,23 +32,23 @@ ActiveRecord::Schema.define(version: 20160106164438) do
t
.
text
"sign_in_text"
t
.
datetime
"created_at"
t
.
datetime
"updated_at"
t
.
string
"home_page_url"
,
limit:
255
t
.
integer
"default_branch_protection"
,
default:
2
t
.
boolean
"twitter_sharing_enabled"
,
default:
true
t
.
string
"home_page_url"
t
.
integer
"default_branch_protection"
,
default:
2
t
.
boolean
"twitter_sharing_enabled"
,
default:
true
t
.
text
"restricted_visibility_levels"
t
.
boolean
"version_check_enabled"
,
default:
true
t
.
integer
"max_attachment_size"
,
default:
10
,
null:
false
t
.
boolean
"version_check_enabled"
,
default:
true
t
.
integer
"max_attachment_size"
,
default:
10
,
null:
false
t
.
integer
"default_project_visibility"
t
.
integer
"default_snippet_visibility"
t
.
text
"restricted_signup_domains"
t
.
boolean
"user_oauth_applications"
,
default:
true
t
.
string
"after_sign_out_path"
,
limit:
255
t
.
integer
"session_expire_delay"
,
default:
10080
,
null:
false
t
.
boolean
"user_oauth_applications"
,
default:
true
t
.
string
"after_sign_out_path"
t
.
integer
"session_expire_delay"
,
default:
10080
,
null:
false
t
.
text
"import_sources"
t
.
text
"help_page_text"
t
.
string
"admin_notification_email"
,
limit:
255
t
.
boolean
"shared_runners_enabled"
,
default:
true
,
null:
false
t
.
integer
"max_artifacts_size"
,
default:
100
,
null:
false
t
.
string
"admin_notification_email"
t
.
boolean
"shared_runners_enabled"
,
default:
true
,
null:
false
t
.
integer
"max_artifacts_size"
,
default:
100
,
null:
false
t
.
string
"runners_registration_token"
t
.
boolean
"require_two_factor_authentication"
,
default:
false
t
.
integer
"two_factor_grace_period"
,
default:
48
...
...
@@ -60,14 +60,15 @@ ActiveRecord::Schema.define(version: 20160106164438) do
t
.
boolean
"recaptcha_enabled"
,
default:
false
t
.
string
"recaptcha_site_key"
t
.
string
"recaptcha_private_key"
t
.
integer
"metrics_port"
,
default:
8089
t
.
integer
"metrics_port"
,
default:
8089
t
.
integer
"metrics_sample_interval"
,
default:
15
end
create_table
"audit_events"
,
force: :cascade
do
|
t
|
t
.
integer
"author_id"
,
null:
false
t
.
string
"type"
,
limit:
255
,
null:
false
t
.
integer
"entity_id"
,
null:
false
t
.
string
"entity_type"
,
limit:
255
,
null:
false
t
.
integer
"author_id"
,
null:
false
t
.
string
"type"
,
null:
false
t
.
integer
"entity_id"
,
null:
false
t
.
string
"entity_type"
,
null:
false
t
.
text
"details"
t
.
datetime
"created_at"
t
.
datetime
"updated_at"
...
...
@@ -78,14 +79,14 @@ ActiveRecord::Schema.define(version: 20160106164438) do
add_index
"audit_events"
,
[
"type"
],
name:
"index_audit_events_on_type"
,
using: :btree
create_table
"broadcast_messages"
,
force: :cascade
do
|
t
|
t
.
text
"message"
,
null:
false
t
.
text
"message"
,
null:
false
t
.
datetime
"starts_at"
t
.
datetime
"ends_at"
t
.
integer
"alert_type"
t
.
datetime
"created_at"
t
.
datetime
"updated_at"
t
.
string
"color"
,
limit:
255
t
.
string
"font"
,
limit:
255
t
.
string
"color"
t
.
string
"font"
end
create_table
"ci_application_settings"
,
force: :cascade
do
|
t
|
...
...
@@ -97,7 +98,7 @@ ActiveRecord::Schema.define(version: 20160106164438) do
create_table
"ci_builds"
,
force: :cascade
do
|
t
|
t
.
integer
"project_id"
t
.
string
"status"
,
limit:
255
t
.
string
"status"
t
.
datetime
"finished_at"
t
.
text
"trace"
t
.
datetime
"created_at"
...
...
@@ -108,19 +109,19 @@ ActiveRecord::Schema.define(version: 20160106164438) do
t
.
integer
"commit_id"
t
.
text
"commands"
t
.
integer
"job_id"
t
.
string
"name"
,
limit:
255
t
.
boolean
"deploy"
,
default:
false
t
.
string
"name"
t
.
boolean
"deploy"
,
default:
false
t
.
text
"options"
t
.
boolean
"allow_failure"
,
default:
false
,
null:
false
t
.
string
"stage"
,
limit:
255
t
.
boolean
"allow_failure"
,
default:
false
,
null:
false
t
.
string
"stage"
t
.
integer
"trigger_request_id"
t
.
integer
"stage_idx"
t
.
boolean
"tag"
t
.
string
"ref"
,
limit:
255
t
.
string
"ref"
t
.
integer
"user_id"
t
.
string
"type"
,
limit:
255
t
.
string
"target_url"
,
limit:
255
t
.
string
"description"
,
limit:
255
t
.
string
"type"
t
.
string
"target_url"
t
.
string
"description"
t
.
text
"artifacts_file"
t
.
integer
"gl_project_id"
end
...
...
@@ -139,13 +140,13 @@ ActiveRecord::Schema.define(version: 20160106164438) do
create_table
"ci_commits"
,
force: :cascade
do
|
t
|
t
.
integer
"project_id"
t
.
string
"ref"
,
limit:
255
t
.
string
"sha"
,
limit:
255
t
.
string
"before_sha"
,
limit:
255
t
.
string
"ref"
t
.
string
"sha"
t
.
string
"before_sha"
t
.
text
"push_data"
t
.
datetime
"created_at"
t
.
datetime
"updated_at"
t
.
boolean
"tag"
,
default:
false
t
.
boolean
"tag"
,
default:
false
t
.
text
"yaml_errors"
t
.
datetime
"committed_at"
t
.
integer
"gl_project_id"
...
...
@@ -172,16 +173,16 @@ ActiveRecord::Schema.define(version: 20160106164438) do
add_index
"ci_events"
,
[
"project_id"
],
name:
"index_ci_events_on_project_id"
,
using: :btree
create_table
"ci_jobs"
,
force: :cascade
do
|
t
|
t
.
integer
"project_id"
,
null:
false
t
.
integer
"project_id"
,
null:
false
t
.
text
"commands"
t
.
boolean
"active"
,
default:
true
,
null:
false
t
.
boolean
"active"
,
default:
true
,
null:
false
t
.
datetime
"created_at"
t
.
datetime
"updated_at"
t
.
string
"name"
,
limit:
255
t
.
boolean
"build_branches"
,
default:
true
,
null:
false
t
.
boolean
"build_tags"
,
default:
false
,
null:
false
t
.
string
"job_type"
,
limit:
255
,
default:
"parallel"
t
.
string
"refs"
,
limit:
255
t
.
string
"name"
t
.
boolean
"build_branches"
,
default:
true
,
null:
false
t
.
boolean
"build_tags"
,
default:
false
,
null:
false
t
.
string
"job_type"
,
default:
"parallel"
t
.
string
"refs"
t
.
datetime
"deleted_at"
end
...
...
@@ -189,25 +190,25 @@ ActiveRecord::Schema.define(version: 20160106164438) do
add_index
"ci_jobs"
,
[
"project_id"
],
name:
"index_ci_jobs_on_project_id"
,
using: :btree
create_table
"ci_projects"
,
force: :cascade
do
|
t
|
t
.
string
"name"
,
limit:
255
t
.
integer
"timeout"
,
default:
3600
,
null:
false
t
.
string
"name"
t
.
integer
"timeout"
,
default:
3600
,
null:
false
t
.
datetime
"created_at"
t
.
datetime
"updated_at"
t
.
string
"token"
,
limit:
255
t
.
string
"default_ref"
,
limit:
255
t
.
string
"path"
,
limit:
255
t
.
boolean
"always_build"
,
default:
false
,
null:
false
t
.
string
"token"
t
.
string
"default_ref"
t
.
string
"path"
t
.
boolean
"always_build"
,
default:
false
,
null:
false
t
.
integer
"polling_interval"
t
.
boolean
"public"
,
default:
false
,
null:
false
t
.
string
"ssh_url_to_repo"
,
limit:
255
t
.
boolean
"public"
,
default:
false
,
null:
false
t
.
string
"ssh_url_to_repo"
t
.
integer
"gitlab_id"
t
.
boolean
"allow_git_fetch"
,
default:
true
,
null:
false
t
.
string
"email_recipients"
,
limit:
255
,
default:
""
,
null:
false
t
.
boolean
"email_add_pusher"
,
default:
true
,
null:
false
t
.
boolean
"email_only_broken_builds"
,
default:
true
,
null:
false
t
.
string
"skip_refs"
,
limit:
255
t
.
string
"coverage_regex"
,
limit:
255
t
.
boolean
"shared_runners_enabled"
,
default:
false
t
.
boolean
"allow_git_fetch"
,
default:
true
,
null:
false
t
.
string
"email_recipients"
,
default:
""
,
null:
false
t
.
boolean
"email_add_pusher"
,
default:
true
,
null:
false
t
.
boolean
"email_only_broken_builds"
,
default:
true
,
null:
false
t
.
string
"skip_refs"
t
.
string
"coverage_regex"
t
.
boolean
"shared_runners_enabled"
,
default:
false
t
.
text
"generated_yaml_config"
end
...
...
@@ -226,34 +227,34 @@ ActiveRecord::Schema.define(version: 20160106164438) do
add_index
"ci_runner_projects"
,
[
"runner_id"
],
name:
"index_ci_runner_projects_on_runner_id"
,
using: :btree
create_table
"ci_runners"
,
force: :cascade
do
|
t
|
t
.
string
"token"
,
limit:
255
t
.
string
"token"
t
.
datetime
"created_at"
t
.
datetime
"updated_at"
t
.
string
"description"
,
limit:
255
t
.
string
"description"
t
.
datetime
"contacted_at"
t
.
boolean
"active"
,
default:
true
,
null:
false
t
.
boolean
"is_shared"
,
default:
false
t
.
string
"name"
,
limit:
255
t
.
string
"version"
,
limit:
255
t
.
string
"revision"
,
limit:
255
t
.
string
"platform"
,
limit:
255
t
.
string
"architecture"
,
limit:
255
t
.
boolean
"active"
,
default:
true
,
null:
false
t
.
boolean
"is_shared"
,
default:
false
t
.
string
"name"
t
.
string
"version"
t
.
string
"revision"
t
.
string
"platform"
t
.
string
"architecture"
end
create_table
"ci_services"
,
force: :cascade
do
|
t
|
t
.
string
"type"
,
limit:
255
t
.
string
"title"
,
limit:
255
t
.
integer
"project_id"
,
null:
false
t
.
string
"type"
t
.
string
"title"
t
.
integer
"project_id"
,
null:
false
t
.
datetime
"created_at"
t
.
datetime
"updated_at"
t
.
boolean
"active"
,
default:
false
,
null:
false
t
.
boolean
"active"
,
default:
false
,
null:
false
t
.
text
"properties"
end
add_index
"ci_services"
,
[
"project_id"
],
name:
"index_ci_services_on_project_id"
,
using: :btree
create_table
"ci_sessions"
,
force: :cascade
do
|
t
|
t
.
string
"session_id"
,
limit:
255
,
null:
false
t
.
string
"session_id"
,
null:
false
t
.
text
"data"
t
.
datetime
"created_at"
t
.
datetime
"updated_at"
...
...
@@ -265,9 +266,9 @@ ActiveRecord::Schema.define(version: 20160106164438) do
create_table
"ci_taggings"
,
force: :cascade
do
|
t
|
t
.
integer
"tag_id"
t
.
integer
"taggable_id"
t
.
string
"taggable_type"
,
limit:
255
t
.
string
"taggable_type"
t
.
integer
"tagger_id"
t
.
string
"tagger_type"
,
limit:
255
t
.
string
"tagger_type"
t
.
string
"context"
,
limit:
128
t
.
datetime
"created_at"
end
...
...
@@ -276,8 +277,8 @@ ActiveRecord::Schema.define(version: 20160106164438) do
add_index
"ci_taggings"
,
[
"taggable_id"
,
"taggable_type"
,
"context"
],
name:
"index_ci_taggings_on_taggable_id_and_taggable_type_and_context"
,
using: :btree
create_table
"ci_tags"
,
force: :cascade
do
|
t
|
t
.
string
"name"
,
limit:
255
t
.
integer
"taggings_count"
,
default:
0
t
.
string
"name"
t
.
integer
"taggings_count"
,
default:
0
end
add_index
"ci_tags"
,
[
"name"
],
name:
"index_ci_tags_on_name"
,
unique:
true
,
using: :btree
...
...
@@ -291,7 +292,7 @@ ActiveRecord::Schema.define(version: 20160106164438) do
end
create_table
"ci_triggers"
,
force: :cascade
do
|
t
|
t
.
string
"token"
,
limit:
255
t
.
string
"token"
t
.
integer
"project_id"
t
.
datetime
"deleted_at"
t
.
datetime
"created_at"
...
...
@@ -304,19 +305,19 @@ ActiveRecord::Schema.define(version: 20160106164438) do
create_table
"ci_variables"
,
force: :cascade
do
|
t
|
t
.
integer
"project_id"
t
.
string
"key"
,
limit:
255
t
.
string
"key"
t
.
text
"value"
t
.
text
"encrypted_value"
t
.
string
"encrypted_value_salt"
,
limit:
255
t
.
string
"encrypted_value_iv"
,
limit:
255
t
.
string
"encrypted_value_salt"
t
.
string
"encrypted_value_iv"
t
.
integer
"gl_project_id"
end
add_index
"ci_variables"
,
[
"gl_project_id"
],
name:
"index_ci_variables_on_gl_project_id"
,
using: :btree
create_table
"ci_web_hooks"
,
force: :cascade
do
|
t
|
t
.
string
"url"
,
limit:
255
,
null:
false
t
.
integer
"project_id"
,
null:
false
t
.
string
"url"
,
null:
false
t
.
integer
"project_id"
,
null:
false
t
.
datetime
"created_at"
t
.
datetime
"updated_at"
end
...
...
@@ -331,8 +332,8 @@ ActiveRecord::Schema.define(version: 20160106164438) do
add_index
"deploy_keys_projects"
,
[
"project_id"
],
name:
"index_deploy_keys_projects_on_project_id"
,
using: :btree
create_table
"emails"
,
force: :cascade
do
|
t
|
t
.
integer
"user_id"
,
null:
false
t
.
string
"email"
,
limit:
255
,
null:
false
t
.
integer
"user_id"
,
null:
false
t
.
string
"email"
,
null:
false
t
.
datetime
"created_at"
t
.
datetime
"updated_at"
end
...
...
@@ -341,9 +342,9 @@ ActiveRecord::Schema.define(version: 20160106164438) do
add_index
"emails"
,
[
"user_id"
],
name:
"index_emails_on_user_id"
,
using: :btree
create_table
"events"
,
force: :cascade
do
|
t
|
t
.
string
"target_type"
,
limit:
255
t
.
string
"target_type"
t
.
integer
"target_id"
t
.
string
"title"
,
limit:
255
t
.
string
"title"
t
.
text
"data"
t
.
integer
"project_id"
t
.
datetime
"created_at"
...
...
@@ -369,8 +370,8 @@ ActiveRecord::Schema.define(version: 20160106164438) do
add_index
"forked_project_links"
,
[
"forked_to_project_id"
],
name:
"index_forked_project_links_on_forked_to_project_id"
,
unique:
true
,
using: :btree
create_table
"identities"
,
force: :cascade
do
|
t
|
t
.
string
"extern_uid"
,
limit:
255
t
.
string
"provider"
,
limit:
255
t
.
string
"extern_uid"
t
.
string
"provider"
t
.
integer
"user_id"
t
.
datetime
"created_at"
t
.
datetime
"updated_at"
...
...
@@ -380,17 +381,17 @@ ActiveRecord::Schema.define(version: 20160106164438) do
add_index
"identities"
,
[
"user_id"
],
name:
"index_identities_on_user_id"
,
using: :btree
create_table
"issues"
,
force: :cascade
do
|
t
|
t
.
string
"title"
,
limit:
255
t
.
string
"title"
t
.
integer
"assignee_id"
t
.
integer
"author_id"
t
.
integer
"project_id"
t
.
datetime
"created_at"
t
.
datetime
"updated_at"
t
.
integer
"position"
,
default:
0
t
.
string
"branch_name"
,
limit:
255
t
.
integer
"position"
,
default:
0
t
.
string
"branch_name"
t
.
text
"description"
t
.
integer
"milestone_id"
t
.
string
"state"
,
limit:
255
t
.
string
"state"
t
.
integer
"iid"
t
.
integer
"updated_by_id"
end
...
...
@@ -410,10 +411,10 @@ ActiveRecord::Schema.define(version: 20160106164438) do
t
.
datetime
"created_at"
t
.
datetime
"updated_at"
t
.
text
"key"
t
.
string
"title"
,
limit:
255
t
.
string
"type"
,
limit:
255
t
.
string
"fingerprint"
,
limit:
255
t
.
boolean
"public"
,
default:
false
,
null:
false
t
.
string
"title"
t
.
string
"type"
t
.
string
"fingerprint"
t
.
boolean
"public"
,
default:
false
,
null:
false
end
add_index
"keys"
,
[
"created_at"
,
"id"
],
name:
"index_keys_on_created_at_and_id"
,
using: :btree
...
...
@@ -422,7 +423,7 @@ ActiveRecord::Schema.define(version: 20160106164438) do
create_table
"label_links"
,
force: :cascade
do
|
t
|
t
.
integer
"label_id"
t
.
integer
"target_id"
t
.
string
"target_type"
,
limit:
255
t
.
string
"target_type"
t
.
datetime
"created_at"
t
.
datetime
"updated_at"
end
...
...
@@ -431,22 +432,22 @@ ActiveRecord::Schema.define(version: 20160106164438) do
add_index
"label_links"
,
[
"target_id"
,
"target_type"
],
name:
"index_label_links_on_target_id_and_target_type"
,
using: :btree
create_table
"labels"
,
force: :cascade
do
|
t
|
t
.
string
"title"
,
limit:
255
t
.
string
"color"
,
limit:
255
t
.
string
"title"
t
.
string
"color"
t
.
integer
"project_id"
t
.
datetime
"created_at"
t
.
datetime
"updated_at"
t
.
boolean
"template"
,
default:
false
t
.
boolean
"template"
,
default:
false
end
add_index
"labels"
,
[
"project_id"
],
name:
"index_labels_on_project_id"
,
using: :btree
create_table
"lfs_objects"
,
force: :cascade
do
|
t
|
t
.
string
"oid"
,
limit:
255
,
null:
false
t
.
integer
"size"
,
null:
false
t
.
string
"oid"
,
null:
false
t
.
integer
"size"
,
null:
false
t
.
datetime
"created_at"
t
.
datetime
"updated_at"
t
.
string
"file"
,
limit:
255
t
.
string
"file"
end
add_index
"lfs_objects"
,
[
"oid"
],
name:
"index_lfs_objects_on_oid"
,
unique:
true
,
using: :btree
...
...
@@ -461,17 +462,17 @@ ActiveRecord::Schema.define(version: 20160106164438) do
add_index
"lfs_objects_projects"
,
[
"project_id"
],
name:
"index_lfs_objects_projects_on_project_id"
,
using: :btree
create_table
"members"
,
force: :cascade
do
|
t
|
t
.
integer
"access_level"
,
null:
false
t
.
integer
"source_id"
,
null:
false
t
.
string
"source_type"
,
limit:
255
,
null:
false
t
.
integer
"access_level"
,
null:
false
t
.
integer
"source_id"
,
null:
false
t
.
string
"source_type"
,
null:
false
t
.
integer
"user_id"
t
.
integer
"notification_level"
,
null:
false
t
.
string
"type"
,
limit:
255
t
.
integer
"notification_level"
,
null:
false
t
.
string
"type"
t
.
datetime
"created_at"
t
.
datetime
"updated_at"
t
.
integer
"created_by_id"
t
.
string
"invite_email"
,
limit:
255
t
.
string
"invite_token"
,
limit:
255
t
.
string
"invite_email"
t
.
string
"invite_token"
t
.
datetime
"invite_accepted_at"
end
...
...
@@ -483,10 +484,10 @@ ActiveRecord::Schema.define(version: 20160106164438) do
add_index
"members"
,
[
"user_id"
],
name:
"index_members_on_user_id"
,
using: :btree
create_table
"merge_request_diffs"
,
force: :cascade
do
|
t
|
t
.
string
"state"
,
limit:
255
t
.
string
"state"
t
.
text
"st_commits"
t
.
text
"st_diffs"
t
.
integer
"merge_request_id"
,
null:
false
t
.
integer
"merge_request_id"
,
null:
false
t
.
datetime
"created_at"
t
.
datetime
"updated_at"
end
...
...
@@ -494,26 +495,26 @@ ActiveRecord::Schema.define(version: 20160106164438) do
add_index
"merge_request_diffs"
,
[
"merge_request_id"
],
name:
"index_merge_request_diffs_on_merge_request_id"
,
unique:
true
,
using: :btree
create_table
"merge_requests"
,
force: :cascade
do
|
t
|
t
.
string
"target_branch"
,
limit:
255
,
null:
false
t
.
string
"source_branch"
,
limit:
255
,
null:
false
t
.
integer
"source_project_id"
,
null:
false
t
.
string
"target_branch"
,
null:
false
t
.
string
"source_branch"
,
null:
false
t
.
integer
"source_project_id"
,
null:
false
t
.
integer
"author_id"
t
.
integer
"assignee_id"
t
.
string
"title"
,
limit:
255
t
.
string
"title"
t
.
datetime
"created_at"
t
.
datetime
"updated_at"
t
.
integer
"milestone_id"
t
.
string
"state"
,
limit:
255
t
.
string
"merge_status"
,
limit:
255
t
.
integer
"target_project_id"
,
null:
false
t
.
string
"state"
t
.
string
"merge_status"
t
.
integer
"target_project_id"
,
null:
false
t
.
integer
"iid"
t
.
text
"description"
t
.
integer
"position"
,
default:
0
t
.
integer
"position"
,
default:
0
t
.
datetime
"locked_at"
t
.
integer
"updated_by_id"
t
.
string
"merge_error"
,
limit:
255
t
.
string
"merge_error"
t
.
text
"merge_params"
t
.
boolean
"merge_when_build_succeeds"
,
default:
false
,
null:
false
t
.
boolean
"merge_when_build_succeeds"
,
default:
false
,
null:
false
t
.
integer
"merge_user_id"
end
...
...
@@ -529,13 +530,13 @@ ActiveRecord::Schema.define(version: 20160106164438) do
add_index
"merge_requests"
,
[
"title"
],
name:
"index_merge_requests_on_title"
,
using: :btree
create_table
"milestones"
,
force: :cascade
do
|
t
|
t
.
string
"title"
,
limit:
255
,
null:
false
t
.
integer
"project_id"
,
null:
false
t
.
string
"title"
,
null:
false
t
.
integer
"project_id"
,
null:
false
t
.
text
"description"
t
.
date
"due_date"
t
.
datetime
"created_at"
t
.
datetime
"updated_at"
t
.
string
"state"
,
limit:
255
t
.
string
"state"
t
.
integer
"iid"
end
...
...
@@ -543,16 +544,17 @@ ActiveRecord::Schema.define(version: 20160106164438) do
add_index
"milestones"
,
[
"due_date"
],
name:
"index_milestones_on_due_date"
,
using: :btree
add_index
"milestones"
,
[
"project_id"
,
"iid"
],
name:
"index_milestones_on_project_id_and_iid"
,
unique:
true
,
using: :btree
add_index
"milestones"
,
[
"project_id"
],
name:
"index_milestones_on_project_id"
,
using: :btree
add_index
"milestones"
,
[
"title"
],
name:
"index_milestones_on_title"
,
using: :btree
create_table
"namespaces"
,
force: :cascade
do
|
t
|
t
.
string
"name"
,
limit:
255
,
null:
false
t
.
string
"path"
,
limit:
255
,
null:
false
t
.
string
"name"
,
null:
false
t
.
string
"path"
,
null:
false
t
.
integer
"owner_id"
t
.
datetime
"created_at"
t
.
datetime
"updated_at"
t
.
string
"type"
,
limit:
255
t
.
string
"description"
,
limit:
255
,
default:
""
,
null:
false
t
.
string
"avatar"
,
limit:
255
t
.
string
"type"
t
.
string
"description"
,
default:
""
,
null:
false
t
.
string
"avatar"
end
add_index
"namespaces"
,
[
"created_at"
,
"id"
],
name:
"index_namespaces_on_created_at_and_id"
,
using: :btree
...
...
@@ -563,19 +565,19 @@ ActiveRecord::Schema.define(version: 20160106164438) do
create_table
"notes"
,
force: :cascade
do
|
t
|
t
.
text
"note"
t
.
string
"noteable_type"
,
limit:
255
t
.
string
"noteable_type"
t
.
integer
"author_id"
t
.
datetime
"created_at"
t
.
datetime
"updated_at"
t
.
integer
"project_id"
t
.
string
"attachment"
,
limit:
255
t
.
string
"line_code"
,
limit:
255
t
.
string
"commit_id"
,
limit:
255
t
.
string
"attachment"
t
.
string
"line_code"
t
.
string
"commit_id"
t
.
integer
"noteable_id"
t
.
boolean
"system"
,
default:
false
,
null:
false
t
.
boolean
"system"
,
default:
false
,
null:
false
t
.
text
"st_diff"
t
.
integer
"updated_by_id"
t
.
boolean
"is_award"
,
default:
false
,
null:
false
t
.
boolean
"is_award"
,
default:
false
,
null:
false
end
add_index
"notes"
,
[
"author_id"
],
name:
"index_notes_on_author_id"
,
using: :btree
...
...
@@ -591,14 +593,14 @@ ActiveRecord::Schema.define(version: 20160106164438) do
add_index
"notes"
,
[
"updated_at"
],
name:
"index_notes_on_updated_at"
,
using: :btree
create_table
"oauth_access_grants"
,
force: :cascade
do
|
t
|
t
.
integer
"resource_owner_id"
,
null:
false
t
.
integer
"application_id"
,
null:
false
t
.
string
"token"
,
limit:
255
,
null:
false
t
.
integer
"expires_in"
,
null:
false
t
.
text
"redirect_uri"
,
null:
false
t
.
datetime
"created_at"
,
null:
false
t
.
integer
"resource_owner_id"
,
null:
false
t
.
integer
"application_id"
,
null:
false
t
.
string
"token"
,
null:
false
t
.
integer
"expires_in"
,
null:
false
t
.
text
"redirect_uri"
,
null:
false
t
.
datetime
"created_at"
,
null:
false
t
.
datetime
"revoked_at"
t
.
string
"scopes"
,
limit:
255
t
.
string
"scopes"
end
add_index
"oauth_access_grants"
,
[
"token"
],
name:
"index_oauth_access_grants_on_token"
,
unique:
true
,
using: :btree
...
...
@@ -606,12 +608,12 @@ ActiveRecord::Schema.define(version: 20160106164438) do
create_table
"oauth_access_tokens"
,
force: :cascade
do
|
t
|
t
.
integer
"resource_owner_id"
t
.
integer
"application_id"
t
.
string
"token"
,
limit:
255
,
null:
false
t
.
string
"refresh_token"
,
limit:
255
t
.
string
"token"
,
null:
false
t
.
string
"refresh_token"
t
.
integer
"expires_in"
t
.
datetime
"revoked_at"
t
.
datetime
"created_at"
,
null:
false
t
.
string
"scopes"
,
limit:
255
t
.
datetime
"created_at"
,
null:
false
t
.
string
"scopes"
end
add_index
"oauth_access_tokens"
,
[
"refresh_token"
],
name:
"index_oauth_access_tokens_on_refresh_token"
,
unique:
true
,
using: :btree
...
...
@@ -619,15 +621,15 @@ ActiveRecord::Schema.define(version: 20160106164438) do
add_index
"oauth_access_tokens"
,
[
"token"
],
name:
"index_oauth_access_tokens_on_token"
,
unique:
true
,
using: :btree
create_table
"oauth_applications"
,
force: :cascade
do
|
t
|
t
.
string
"name"
,
limit:
255
,
null:
false
t
.
string
"uid"
,
limit:
255
,
null:
false
t
.
string
"secret"
,
limit:
255
,
null:
false
t
.
text
"redirect_uri"
,
null:
false
t
.
string
"scopes"
,
limit:
255
,
default:
""
,
null:
false
t
.
string
"name"
,
null:
false
t
.
string
"uid"
,
null:
false
t
.
string
"secret"
,
null:
false
t
.
text
"redirect_uri"
,
null:
false
t
.
string
"scopes"
,
default:
""
,
null:
false
t
.
datetime
"created_at"
t
.
datetime
"updated_at"
t
.
integer
"owner_id"
t
.
string
"owner_type"
,
limit:
255
t
.
string
"owner_type"
end
add_index
"oauth_applications"
,
[
"owner_id"
,
"owner_type"
],
name:
"index_oauth_applications_on_owner_id_and_owner_type"
,
using: :btree
...
...
@@ -639,39 +641,39 @@ ActiveRecord::Schema.define(version: 20160106164438) do
end
create_table
"projects"
,
force: :cascade
do
|
t
|
t
.
string
"name"
,
limit:
255
t
.
string
"path"
,
limit:
255
t
.
string
"name"
t
.
string
"path"
t
.
text
"description"
t
.
datetime
"created_at"
t
.
datetime
"updated_at"
t
.
integer
"creator_id"
t
.
boolean
"issues_enabled"
,
default:
true
,
null:
false
t
.
boolean
"wall_enabled"
,
default:
true
,
null:
false
t
.
boolean
"merge_requests_enabled"
,
default:
true
,
null:
false
t
.
boolean
"wiki_enabled"
,
default:
true
,
null:
false
t
.
boolean
"issues_enabled"
,
default:
true
,
null:
false
t
.
boolean
"wall_enabled"
,
default:
true
,
null:
false
t
.
boolean
"merge_requests_enabled"
,
default:
true
,
null:
false
t
.
boolean
"wiki_enabled"
,
default:
true
,
null:
false
t
.
integer
"namespace_id"
t
.
string
"issues_tracker"
,
limit:
255
,
default:
"gitlab"
,
null:
false
t
.
string
"issues_tracker_id"
,
limit:
255
t
.
boolean
"snippets_enabled"
,
default:
true
,
null:
false
t
.
string
"issues_tracker"
,
default:
"gitlab"
,
null:
false
t
.
string
"issues_tracker_id"
t
.
boolean
"snippets_enabled"
,
default:
true
,
null:
false
t
.
datetime
"last_activity_at"
t
.
string
"import_url"
,
limit:
255
t
.
integer
"visibility_level"
,
default:
0
,
null:
false
t
.
boolean
"archived"
,
default:
false
,
null:
false
t
.
string
"avatar"
,
limit:
255
t
.
string
"import_status"
,
limit:
255
t
.
float
"repository_size"
,
default:
0.0
t
.
integer
"star_count"
,
default:
0
,
null:
false
t
.
string
"import_type"
,
limit:
255
t
.
string
"import_source"
,
limit:
255
t
.
integer
"commit_count"
,
default:
0
t
.
string
"import_url"
t
.
integer
"visibility_level"
,
default:
0
,
null:
false
t
.
boolean
"archived"
,
default:
false
,
null:
false
t
.
string
"avatar"
t
.
string
"import_status"
t
.
float
"repository_size"
,
default:
0.0
t
.
integer
"star_count"
,
default:
0
,
null:
false
t
.
string
"import_type"
t
.
string
"import_source"
t
.
integer
"commit_count"
,
default:
0
t
.
text
"import_error"
t
.
integer
"ci_id"
t
.
boolean
"builds_enabled"
,
default:
true
,
null:
false
t
.
boolean
"shared_runners_enabled"
,
default:
true
,
null:
false
t
.
boolean
"builds_enabled"
,
default:
true
,
null:
false
t
.
boolean
"shared_runners_enabled"
,
default:
true
,
null:
false
t
.
string
"runners_token"
t
.
string
"build_coverage_regex"
t
.
boolean
"build_allow_git_fetch"
,
default:
true
,
null:
false
t
.
integer
"build_timeout"
,
default:
3600
,
null:
false
t
.
boolean
"build_allow_git_fetch"
,
default:
true
,
null:
false
t
.
integer
"build_timeout"
,
default:
3600
,
null:
false
end
add_index
"projects"
,
[
"builds_enabled"
,
"shared_runners_enabled"
],
name:
"index_projects_on_builds_enabled_and_shared_runners_enabled"
,
using: :btree
...
...
@@ -687,17 +689,17 @@ ActiveRecord::Schema.define(version: 20160106164438) do
add_index
"projects"
,
[
"visibility_level"
],
name:
"index_projects_on_visibility_level"
,
using: :btree
create_table
"protected_branches"
,
force: :cascade
do
|
t
|
t
.
integer
"project_id"
,
null:
false
t
.
string
"name"
,
limit:
255
,
null:
false
t
.
integer
"project_id"
,
null:
false
t
.
string
"name"
,
null:
false
t
.
datetime
"created_at"
t
.
datetime
"updated_at"
t
.
boolean
"developers_can_push"
,
default:
false
,
null:
false
t
.
boolean
"developers_can_push"
,
default:
false
,
null:
false
end
add_index
"protected_branches"
,
[
"project_id"
],
name:
"index_protected_branches_on_project_id"
,
using: :btree
create_table
"releases"
,
force: :cascade
do
|
t
|
t
.
string
"tag"
,
limit:
255
t
.
string
"tag"
t
.
text
"description"
t
.
integer
"project_id"
t
.
datetime
"created_at"
...
...
@@ -710,30 +712,30 @@ ActiveRecord::Schema.define(version: 20160106164438) do
create_table
"sent_notifications"
,
force: :cascade
do
|
t
|
t
.
integer
"project_id"
t
.
integer
"noteable_id"
t
.
string
"noteable_type"
,
limit:
255
t
.
string
"noteable_type"
t
.
integer
"recipient_id"
t
.
string
"commit_id"
,
limit:
255
t
.
string
"reply_key"
,
limit:
255
,
null:
false
t
.
string
"line_code"
,
limit:
255
t
.
string
"commit_id"
t
.
string
"reply_key"
,
null:
false
t
.
string
"line_code"
end
add_index
"sent_notifications"
,
[
"reply_key"
],
name:
"index_sent_notifications_on_reply_key"
,
unique:
true
,
using: :btree
create_table
"services"
,
force: :cascade
do
|
t
|
t
.
string
"type"
,
limit:
255
t
.
string
"title"
,
limit:
255
t
.
string
"type"
t
.
string
"title"
t
.
integer
"project_id"
t
.
datetime
"created_at"
t
.
datetime
"updated_at"
t
.
boolean
"active"
,
default:
false
,
null:
false
t
.
boolean
"active"
,
default:
false
,
null:
false
t
.
text
"properties"
t
.
boolean
"template"
,
default:
false
t
.
boolean
"push_events"
,
default:
true
t
.
boolean
"issues_events"
,
default:
true
t
.
boolean
"merge_requests_events"
,
default:
true
t
.
boolean
"tag_push_events"
,
default:
true
t
.
boolean
"note_events"
,
default:
true
,
null:
false
t
.
boolean
"build_events"
,
default:
false
,
null:
false
t
.
boolean
"template"
,
default:
false
t
.
boolean
"push_events"
,
default:
true
t
.
boolean
"issues_events"
,
default:
true
t
.
boolean
"merge_requests_events"
,
default:
true
t
.
boolean
"tag_push_events"
,
default:
true
t
.
boolean
"note_events"
,
default:
true
,
null:
false
t
.
boolean
"build_events"
,
default:
false
,
null:
false
end
add_index
"services"
,
[
"created_at"
,
"id"
],
name:
"index_services_on_created_at_and_id"
,
using: :btree
...
...
@@ -741,16 +743,16 @@ ActiveRecord::Schema.define(version: 20160106164438) do
add_index
"services"
,
[
"template"
],
name:
"index_services_on_template"
,
using: :btree
create_table
"snippets"
,
force: :cascade
do
|
t
|
t
.
string
"title"
,
limit:
255
t
.
string
"title"
t
.
text
"content"
t
.
integer
"author_id"
,
null:
false
t
.
integer
"author_id"
,
null:
false
t
.
integer
"project_id"
t
.
datetime
"created_at"
t
.
datetime
"updated_at"
t
.
string
"file_name"
,
limit:
255
t
.
string
"file_name"
t
.
datetime
"expires_at"
t
.
string
"type"
,
limit:
255
t
.
integer
"visibility_level"
,
default:
0
,
null:
false
t
.
string
"type"
t
.
integer
"visibility_level"
,
default:
0
,
null:
false
end
add_index
"snippets"
,
[
"author_id"
],
name:
"index_snippets_on_author_id"
,
using: :btree
...
...
@@ -763,7 +765,7 @@ ActiveRecord::Schema.define(version: 20160106164438) do
create_table
"subscriptions"
,
force: :cascade
do
|
t
|
t
.
integer
"user_id"
t
.
integer
"subscribable_id"
t
.
string
"subscribable_type"
,
limit:
255
t
.
string
"subscribable_type"
t
.
boolean
"subscribed"
t
.
datetime
"created_at"
t
.
datetime
"updated_at"
...
...
@@ -774,10 +776,10 @@ ActiveRecord::Schema.define(version: 20160106164438) do
create_table
"taggings"
,
force: :cascade
do
|
t
|
t
.
integer
"tag_id"
t
.
integer
"taggable_id"
t
.
string
"taggable_type"
,
limit:
255
t
.
string
"taggable_type"
t
.
integer
"tagger_id"
t
.
string
"tagger_type"
,
limit:
255
t
.
string
"context"
,
limit:
255
t
.
string
"tagger_type"
t
.
string
"context"
t
.
datetime
"created_at"
end
...
...
@@ -785,67 +787,67 @@ ActiveRecord::Schema.define(version: 20160106164438) do
add_index
"taggings"
,
[
"taggable_id"
,
"taggable_type"
,
"context"
],
name:
"index_taggings_on_taggable_id_and_taggable_type_and_context"
,
using: :btree
create_table
"tags"
,
force: :cascade
do
|
t
|
t
.
string
"name"
,
limit:
255
t
.
integer
"taggings_count"
,
default:
0
t
.
string
"name"
t
.
integer
"taggings_count"
,
default:
0
end
add_index
"tags"
,
[
"name"
],
name:
"index_tags_on_name"
,
unique:
true
,
using: :btree
create_table
"users"
,
force: :cascade
do
|
t
|
t
.
string
"email"
,
limit:
255
,
default:
""
,
null:
false
t
.
string
"encrypted_password"
,
limit:
255
,
default:
""
,
null:
false
t
.
string
"reset_password_token"
,
limit:
255
t
.
string
"email"
,
default:
""
,
null:
false
t
.
string
"encrypted_password"
,
default:
""
,
null:
false
t
.
string
"reset_password_token"
t
.
datetime
"reset_password_sent_at"
t
.
datetime
"remember_created_at"
t
.
integer
"sign_in_count"
,
default:
0
t
.
integer
"sign_in_count"
,
default:
0
t
.
datetime
"current_sign_in_at"
t
.
datetime
"last_sign_in_at"
t
.
string
"current_sign_in_ip"
,
limit:
255
t
.
string
"last_sign_in_ip"
,
limit:
255
t
.
datetime
"created_at"
t
.
datetime
"updated_at"
t
.
string
"name"
,
limit:
255
t
.
boolean
"admin"
,
default:
false
,
null:
false
t
.
integer
"projects_limit"
,
default:
10
t
.
string
"skype"
,
limit:
255
,
default:
""
,
null:
false
t
.
string
"linkedin"
,
limit:
255
,
default:
""
,
null:
false
t
.
string
"twitter"
,
limit:
255
,
default:
""
,
null:
false
t
.
string
"authentication_token"
,
limit:
255
t
.
integer
"theme_id"
,
default:
1
,
null:
false
t
.
string
"bio"
,
limit:
255
t
.
integer
"failed_attempts"
,
default:
0
t
.
string
"current_sign_in_ip"
t
.
string
"last_sign_in_ip"
t
.
datetime
"created_at"
t
.
datetime
"updated_at"
t
.
string
"name"
t
.
boolean
"admin"
,
default:
false
,
null:
false
t
.
integer
"projects_limit"
,
default:
10
t
.
string
"skype"
,
default:
""
,
null:
false
t
.
string
"linkedin"
,
default:
""
,
null:
false
t
.
string
"twitter"
,
default:
""
,
null:
false
t
.
string
"authentication_token"
t
.
integer
"theme_id"
,
default:
1
,
null:
false
t
.
string
"bio"
t
.
integer
"failed_attempts"
,
default:
0
t
.
datetime
"locked_at"
t
.
string
"username"
,
limit:
255
t
.
boolean
"can_create_group"
,
default:
true
,
null:
false
t
.
boolean
"can_create_team"
,
default:
true
,
null:
false
t
.
string
"state"
,
limit:
255
t
.
integer
"color_scheme_id"
,
default:
1
,
null:
false
t
.
integer
"notification_level"
,
default:
1
,
null:
false
t
.
string
"username"
t
.
boolean
"can_create_group"
,
default:
true
,
null:
false
t
.
boolean
"can_create_team"
,
default:
true
,
null:
false
t
.
string
"state"
t
.
integer
"color_scheme_id"
,
default:
1
,
null:
false
t
.
integer
"notification_level"
,
default:
1
,
null:
false
t
.
datetime
"password_expires_at"
t
.
integer
"created_by_id"
t
.
datetime
"last_credential_check_at"
t
.
string
"avatar"
,
limit:
255
t
.
string
"confirmation_token"
,
limit:
255
t
.
string
"avatar"
t
.
string
"confirmation_token"
t
.
datetime
"confirmed_at"
t
.
datetime
"confirmation_sent_at"
t
.
string
"unconfirmed_email"
,
limit:
255
t
.
boolean
"hide_no_ssh_key"
,
default:
false
t
.
string
"website_url"
,
limit:
255
,
default:
""
,
null:
false
t
.
string
"notification_email"
,
limit:
255
t
.
boolean
"hide_no_password"
,
default:
false
t
.
boolean
"password_automatically_set"
,
default:
false
t
.
string
"location"
,
limit:
255
t
.
string
"encrypted_otp_secret"
,
limit:
255
t
.
string
"encrypted_otp_secret_iv"
,
limit:
255
t
.
string
"encrypted_otp_secret_salt"
,
limit:
255
t
.
boolean
"otp_required_for_login"
,
default:
false
,
null:
false
t
.
string
"unconfirmed_email"
t
.
boolean
"hide_no_ssh_key"
,
default:
false
t
.
string
"website_url"
,
default:
""
,
null:
false
t
.
string
"notification_email"
t
.
boolean
"hide_no_password"
,
default:
false
t
.
boolean
"password_automatically_set"
,
default:
false
t
.
string
"location"
t
.
string
"encrypted_otp_secret"
t
.
string
"encrypted_otp_secret_iv"
t
.
string
"encrypted_otp_secret_salt"
t
.
boolean
"otp_required_for_login"
,
default:
false
,
null:
false
t
.
text
"otp_backup_codes"
t
.
string
"public_email"
,
limit:
255
,
default:
""
,
null:
false
t
.
integer
"dashboard"
,
default:
0
t
.
integer
"project_view"
,
default:
0
t
.
string
"public_email"
,
default:
""
,
null:
false
t
.
integer
"dashboard"
,
default:
0
t
.
integer
"project_view"
,
default:
0
t
.
integer
"consumed_timestep"
t
.
integer
"layout"
,
default:
0
t
.
boolean
"hide_project_limit"
,
default:
false
t
.
integer
"layout"
,
default:
0
t
.
boolean
"hide_project_limit"
,
default:
false
t
.
string
"unlock_token"
t
.
datetime
"otp_grace_period_started_at"
end
...
...
@@ -872,19 +874,19 @@ ActiveRecord::Schema.define(version: 20160106164438) do
add_index
"users_star_projects"
,
[
"user_id"
],
name:
"index_users_star_projects_on_user_id"
,
using: :btree
create_table
"web_hooks"
,
force: :cascade
do
|
t
|
t
.
string
"url"
,
limit:
255
t
.
string
"url"
t
.
integer
"project_id"
t
.
datetime
"created_at"
t
.
datetime
"updated_at"
t
.
string
"type"
,
limit:
255
,
default:
"ProjectHook"
t
.
string
"type"
,
default:
"ProjectHook"
t
.
integer
"service_id"
t
.
boolean
"push_events"
,
default:
true
,
null:
false
t
.
boolean
"issues_events"
,
default:
false
,
null:
false
t
.
boolean
"merge_requests_events"
,
default:
false
,
null:
false
t
.
boolean
"tag_push_events"
,
default:
false
t
.
boolean
"note_events"
,
default:
false
,
null:
false
t
.
boolean
"enable_ssl_verification"
,
default:
true
t
.
boolean
"build_events"
,
default:
false
,
null:
false
t
.
boolean
"push_events"
,
default:
true
,
null:
false
t
.
boolean
"issues_events"
,
default:
false
,
null:
false
t
.
boolean
"merge_requests_events"
,
default:
false
,
null:
false
t
.
boolean
"tag_push_events"
,
default:
false
t
.
boolean
"note_events"
,
default:
false
,
null:
false
t
.
boolean
"enable_ssl_verification"
,
default:
true
t
.
boolean
"build_events"
,
default:
false
,
null:
false
end
add_index
"web_hooks"
,
[
"created_at"
,
"id"
],
name:
"index_web_hooks_on_created_at_and_id"
,
using: :btree
...
...
lib/gitlab/metrics.rb
View file @
b7f49aa0
...
...
@@ -13,7 +13,8 @@ module Gitlab
timeout:
current_application_settings
[
:metrics_timeout
],
method_call_threshold:
current_application_settings
[
:metrics_method_call_threshold
],
host:
current_application_settings
[
:metrics_host
],
port:
current_application_settings
[
:metrics_port
]
port:
current_application_settings
[
:metrics_port
],
sample_interval:
current_application_settings
[
:metrics_sample_interval
]
||
15
}
end
...
...
lib/gitlab/metrics/sampler.rb
View file @
b7f49aa0
...
...
@@ -7,9 +7,14 @@ module Gitlab
# statistics, etc.
class
Sampler
# interval - The sampling interval in seconds.
def
initialize
(
interval
=
15
)
@interval
=
interval
@metrics
=
[]
def
initialize
(
interval
=
Metrics
.
settings
[
:sample_interval
])
interval_half
=
interval
.
to_f
/
2
@interval
=
interval
@interval_steps
=
(
-
interval_half
..
interval_half
).
step
(
0.1
).
to_a
@last_step
=
nil
@metrics
=
[]
@last_minor_gc
=
Delta
.
new
(
GC
.
stat
[
:minor_gc_count
])
@last_major_gc
=
Delta
.
new
(
GC
.
stat
[
:major_gc_count
])
...
...
@@ -26,7 +31,7 @@ module Gitlab
Thread
.
current
.
abort_on_exception
=
true
loop
do
sleep
(
@
interval
)
sleep
(
sleep_
interval
)
sample
end
...
...
@@ -102,6 +107,23 @@ module Gitlab
def
sidekiq?
Sidekiq
.
server?
end
# Returns the sleep interval with a random adjustment.
#
# The random adjustment is put in place to ensure we:
#
# 1. Don't generate samples at the exact same interval every time (thus
# potentially missing anything that happens in between samples).
# 2. Don't sample data at the same interval two times in a row.
def
sleep_interval
while
step
=
@interval_steps
.
sample
if
step
!=
@last_step
@last_step
=
step
return
@interval
+
@last_step
end
end
end
end
end
end
spec/lib/gitlab/metrics/sampler_spec.rb
View file @
b7f49aa0
...
...
@@ -9,7 +9,7 @@ describe Gitlab::Metrics::Sampler do
describe
'#start'
do
it
'gathers a sample at a given interval'
do
expect
(
sampler
).
to
receive
(
:sleep
).
with
(
5
)
expect
(
sampler
).
to
receive
(
:sleep
).
with
(
a_kind_of
(
Numeric
)
)
expect
(
sampler
).
to
receive
(
:sample
)
expect
(
sampler
).
to
receive
(
:loop
).
and_yield
...
...
@@ -116,4 +116,24 @@ describe Gitlab::Metrics::Sampler do
sampler
.
add_metric
(
'cats'
,
value:
10
)
end
end
describe
'#sleep_interval'
do
it
'returns a Numeric'
do
expect
(
sampler
.
sleep_interval
).
to
be_a_kind_of
(
Numeric
)
end
# Testing random behaviour is very hard, so treat this test as a basic smoke
# test instead of a very accurate behaviour/unit test.
it
'does not return the same interval twice in a row'
do
last
=
nil
100
.
times
do
interval
=
sampler
.
sleep_interval
expect
(
interval
).
to_not
eq
(
last
)
last
=
interval
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