Cleanup remaining alerts service code
What does this MR do?
This MR removes the final pieces of deprecated AlertsService
. !50913 (merged) removed the bulk of the AlertsService
logic & info last milestone.
Related issue: #296923 (closed)
Migration Output
The database changes follow the process laid out in https://docs.gitlab.com/ee/development/migration_style_guide.html#dropping-a-database-table & https://docs.gitlab.com/ee/development/what_requires_downtime.html#dropping-tables.
Up
DB state - before running migrations
$ bin/rails dbconsole
psql (11.9)
Type "help" for help.
gitlabhq_development=# \d alerts_service_data
Table "public.alerts_service_data"
Column | Type | Collation | Nullable | Default
--------------------+--------------------------+-----------+----------+-------------------------------------------------
id | bigint | | not null | nextval('alerts_service_data_id_seq'::regclass)
service_id | integer | | not null |
created_at | timestamp with time zone | | not null |
updated_at | timestamp with time zone | | not null |
encrypted_token | character varying(255) | | |
encrypted_token_iv | character varying(255) | | |
Indexes:
"alerts_service_data_pkey" PRIMARY KEY, btree (id)
"index_alerts_service_data_on_service_id" btree (service_id)
Foreign-key constraints:
"fk_rails_b93215a42c" FOREIGN KEY (service_id) REFERENCES services(id) ON DELETE CASCADE
gitlabhq_development=# \d services
Table "public.services"
Column | Type | Collation | Nullable | Default
----------------------------+-----------------------------+-----------+----------+--------------------------------------
id | integer | | not null | nextval('services_id_seq'::regclass)
type | character varying | | |
project_id | integer | | |
created_at | timestamp without time zone | | |
updated_at | timestamp without time zone | | |
active | boolean | | not null | false
properties | text | | |
push_events | boolean | | | true
issues_events | boolean | | | true
merge_requests_events | boolean | | | true
tag_push_events | boolean | | | true
note_events | boolean | | not null | true
category | character varying | | not null | 'common'::character varying
wiki_page_events | boolean | | | true
pipeline_events | boolean | | not null | false
confidential_issues_events | boolean | | not null | true
commit_events | boolean | | not null | true
job_events | boolean | | not null | false
confidential_note_events | boolean | | | true
deployment_events | boolean | | not null | false
comment_on_event_enabled | boolean | | not null | true
template | boolean | | | false
instance | boolean | | not null | false
comment_detail | smallint | | |
inherit_from_id | bigint | | |
alert_events | boolean | | |
group_id | bigint | | |
Indexes:
"services_pkey" PRIMARY KEY, btree (id)
"index_services_on_project_id_and_type_unique" UNIQUE, btree (project_id, type)
"index_services_on_type_and_instance_partial" UNIQUE, btree (type, instance) WHERE instance = true
"index_services_on_type_and_template_partial" UNIQUE, btree (type, template) WHERE template = true
"index_services_on_unique_group_id_and_type" UNIQUE, btree (group_id, type)
"index_services_on_inherit_from_id" btree (inherit_from_id)
"index_services_on_template" btree (template)
"index_services_on_type" btree (type)
"index_services_on_type_id_when_active_and_project_id_not_null" btree (type, id) WHERE active = true AND project_id IS NOT NULL
Foreign-key constraints:
"fk_71cce407f9" FOREIGN KEY (project_id) REFERENCES projects(id) ON DELETE CASCADE
"fk_e8fe908a34" FOREIGN KEY (group_id) REFERENCES namespaces(id) ON DELETE CASCADE
"fk_services_inherit_from_id" FOREIGN KEY (inherit_from_id) REFERENCES services(id) ON DELETE CASCADE
Referenced by:
TABLE "chat_names" CONSTRAINT "fk_00797a2bf9" FOREIGN KEY (service_id) REFERENCES services(id) ON DELETE CASCADE
TABLE "web_hooks" CONSTRAINT "fk_d47999a98a" FOREIGN KEY (service_id) REFERENCES services(id) ON DELETE CASCADE NOT VALID
TABLE "open_project_tracker_data" CONSTRAINT "fk_rails_1987546e48" FOREIGN KEY (service_id) REFERENCES services(id) ON DELETE CASCADE
TABLE "slack_integrations" CONSTRAINT "fk_rails_73db19721a" FOREIGN KEY (service_id) REFERENCES services(id) ON DELETE CASCADE
TABLE "jira_tracker_data" CONSTRAINT "fk_rails_a299066916" FOREIGN KEY (service_id) REFERENCES services(id) ON DELETE CASCADE
TABLE "alerts_service_data" CONSTRAINT "fk_rails_b93215a42c" FOREIGN KEY (service_id) REFERENCES services(id) ON DELETE CASCADE
TABLE "issue_tracker_data" CONSTRAINT "fk_rails_ccc0840427" FOREIGN KEY (service_id) REFERENCES services(id) ON DELETE CASCADE
TABLE "services" CONSTRAINT "fk_services_inherit_from_id" FOREIGN KEY (inherit_from_id) REFERENCES services(id) ON DELETE CASCADE
Triggers:
trigger_has_external_issue_tracker_on_delete AFTER DELETE ON services FOR EACH ROW WHEN (old.category::text = 'issue_tracker'::text AND old.active = true AND old.project_id IS NOT NULL) EXECUTE PROCEDURE set_has_external_issue_tracker()
trigger_has_external_issue_tracker_on_insert AFTER INSERT ON services FOR EACH ROW WHEN (new.category::text = 'issue_tracker'::text AND new.active = true AND new.project_id IS NOT NULL) EXECUTE PROCEDURE set_has_external_issue_tracker()
trigger_has_external_issue_tracker_on_update AFTER UPDATE ON services FOR EACH ROW WHEN (new.category::text = 'issue_tracker'::text AND old.active <> new.active AND new.project_id IS NOT NULL) EXECUTE PROCEDURE set_has_external_issue_tracker()
trigger_has_external_wiki_on_delete AFTER DELETE ON services FOR EACH ROW WHEN (old.type::text = 'ExternalWikiService'::text AND old.project_id IS NOT NULL) EXECUTE PROCEDURE set_has_external_wiki()
trigger_has_external_wiki_on_insert AFTER INSERT ON services FOR EACH ROW WHEN (new.active = true AND new.type::text = 'ExternalWikiService'::text AND new.project_id IS NOT NULL) EXECUTE PROCEDURE set_has_external_wiki()
trigger_has_external_wiki_on_update AFTER UPDATE ON services FOR EACH ROW WHEN (new.type::text = 'ExternalWikiService'::text AND old.active <> new.active AND new.project_id IS NOT NULL) EXECUTE PROCEDURE set_has_external_wiki()
$ rails db:migrate
== 20210205213915 RemoveForeignKeysFromAlertsServiceData: migrating ===========
-- foreign_keys(:alerts_service_data)
-> 0.0070s
-- remove_foreign_key(:alerts_service_data, {:column=>:service_id})
-> 0.0215s
== 20210205213915 RemoveForeignKeysFromAlertsServiceData: migrated (0.0389s) ==
== 20210205213933 DropAlertsServiceData: migrating ============================
-- drop_table(:alerts_service_data)
-> 0.0196s
== 20210205213933 DropAlertsServiceData: migrated (0.0211s) ===================
== 20210205214003 RemoveAlertsServiceRecordsAgain: migrating ==================
== 20210205214003 RemoveAlertsServiceRecordsAgain: migrated (0.0496s) =========
DB state - after all migrations
$ bin/rails dbconsole
psql (11.9)
Type "help" for help.
gitlabhq_development=# \d alerts_service_data
Did not find any relation named "alerts_service_data".
gitlabhq_development=# \d services
Table "public.services"
Column | Type | Collation | Nullable | Default
----------------------------+-----------------------------+-----------+----------+--------------------------------------
id | integer | | not null | nextval('services_id_seq'::regclass)
type | character varying | | |
project_id | integer | | |
created_at | timestamp without time zone | | |
updated_at | timestamp without time zone | | |
active | boolean | | not null | false
properties | text | | |
push_events | boolean | | | true
issues_events | boolean | | | true
merge_requests_events | boolean | | | true
tag_push_events | boolean | | | true
note_events | boolean | | not null | true
category | character varying | | not null | 'common'::character varying
wiki_page_events | boolean | | | true
pipeline_events | boolean | | not null | false
confidential_issues_events | boolean | | not null | true
commit_events | boolean | | not null | true
job_events | boolean | | not null | false
confidential_note_events | boolean | | | true
deployment_events | boolean | | not null | false
comment_on_event_enabled | boolean | | not null | true
template | boolean | | | false
instance | boolean | | not null | false
comment_detail | smallint | | |
inherit_from_id | bigint | | |
alert_events | boolean | | |
group_id | bigint | | |
Indexes:
"services_pkey" PRIMARY KEY, btree (id)
"index_services_on_project_id_and_type_unique" UNIQUE, btree (project_id, type)
"index_services_on_type_and_instance_partial" UNIQUE, btree (type, instance) WHERE instance = true
"index_services_on_type_and_template_partial" UNIQUE, btree (type, template) WHERE template = true
"index_services_on_unique_group_id_and_type" UNIQUE, btree (group_id, type)
"index_services_on_inherit_from_id" btree (inherit_from_id)
"index_services_on_template" btree (template)
"index_services_on_type" btree (type)
"index_services_on_type_id_when_active_and_project_id_not_null" btree (type, id) WHERE active = true AND project_id IS NOT NULL
Foreign-key constraints:
"fk_71cce407f9" FOREIGN KEY (project_id) REFERENCES projects(id) ON DELETE CASCADE
"fk_e8fe908a34" FOREIGN KEY (group_id) REFERENCES namespaces(id) ON DELETE CASCADE
"fk_services_inherit_from_id" FOREIGN KEY (inherit_from_id) REFERENCES services(id) ON DELETE CASCADE
Referenced by:
TABLE "chat_names" CONSTRAINT "fk_00797a2bf9" FOREIGN KEY (service_id) REFERENCES services(id) ON DELETE CASCADE
TABLE "web_hooks" CONSTRAINT "fk_d47999a98a" FOREIGN KEY (service_id) REFERENCES services(id) ON DELETE CASCADE NOT VALID
TABLE "open_project_tracker_data" CONSTRAINT "fk_rails_1987546e48" FOREIGN KEY (service_id) REFERENCES services(id) ON DELETE CASCADE
TABLE "slack_integrations" CONSTRAINT "fk_rails_73db19721a" FOREIGN KEY (service_id) REFERENCES services(id) ON DELETE CASCADE
TABLE "jira_tracker_data" CONSTRAINT "fk_rails_a299066916" FOREIGN KEY (service_id) REFERENCES services(id) ON DELETE CASCADE
TABLE "issue_tracker_data" CONSTRAINT "fk_rails_ccc0840427" FOREIGN KEY (service_id) REFERENCES services(id) ON DELETE CASCADE
TABLE "services" CONSTRAINT "fk_services_inherit_from_id" FOREIGN KEY (inherit_from_id) REFERENCES services(id) ON DELETE CASCADE
Triggers:
trigger_has_external_issue_tracker_on_delete AFTER DELETE ON services FOR EACH ROW WHEN (old.category::text = 'issue_tracker'::text AND old.active = true AND old.project_id IS NOT NULL) EXECUTE PROCEDURE set_has_external_issue_tracker()
trigger_has_external_issue_tracker_on_insert AFTER INSERT ON services FOR EACH ROW WHEN (new.category::text = 'issue_tracker'::text AND new.active = true AND new.project_id IS NOT NULL) EXECUTE PROCEDURE set_has_external_issue_tracker()
trigger_has_external_issue_tracker_on_update AFTER UPDATE ON services FOR EACH ROW WHEN (new.category::text = 'issue_tracker'::text AND old.active <> new.active AND new.project_id IS NOT NULL) EXECUTE PROCEDURE set_has_external_issue_tracker()
trigger_has_external_wiki_on_delete AFTER DELETE ON services FOR EACH ROW WHEN (old.type::text = 'ExternalWikiService'::text AND old.project_id IS NOT NULL) EXECUTE PROCEDURE set_has_external_wiki()
trigger_has_external_wiki_on_insert AFTER INSERT ON services FOR EACH ROW WHEN (new.active = true AND new.type::text = 'ExternalWikiService'::text AND new.project_id IS NOT NULL) EXECUTE PROCEDURE set_has_external_wiki()
trigger_has_external_wiki_on_update AFTER UPDATE ON services FOR EACH ROW WHEN (new.type::text = 'ExternalWikiService'::text AND old.active <> new.active AND new.project_id IS NOT NULL) EXECUTE PROCEDURE set_has_external_wiki()
Down
$ bin/rails db:migrate:down VERSION=20210205214003
== 20210205214003 RemoveAlertsServiceRecordsAgain: reverting ==================
== 20210205214003 RemoveAlertsServiceRecordsAgain: reverted (0.0000s) =========
$ bin/rails db:migrate:down VERSION=20210205213933
== 20210205213933 DropAlertsServiceData: reverting ============================
-- create_table(:alerts_service_data)
-> 0.0208s
== 20210205213933 DropAlertsServiceData: reverted (0.0286s) ===================
DB state - after rolling back the table-dropping migration
$ bin/rails dbconsole
psql (11.9)
Type "help" for help.
gitlabhq_development=# \d alerts_service_data
Table "public.alerts_service_data"
Column | Type | Collation | Nullable | Default
--------------------+--------------------------+-----------+----------+-------------------------------------------------
id | bigint | | not null | nextval('alerts_service_data_id_seq'::regclass)
service_id | bigint | | not null |
created_at | timestamp with time zone | | not null |
updated_at | timestamp with time zone | | not null |
encrypted_token | character varying(255) | | |
encrypted_token_iv | character varying(255) | | |
Indexes:
"alerts_service_data_pkey" PRIMARY KEY, btree (id)
gitlabhq_development=# \d services
Table "public.services"
Column | Type | Collation | Nullable | Default
----------------------------+-----------------------------+-----------+----------+--------------------------------------
id | integer | | not null | nextval('services_id_seq'::regclass)
type | character varying | | |
project_id | integer | | |
created_at | timestamp without time zone | | |
updated_at | timestamp without time zone | | |
active | boolean | | not null | false
properties | text | | |
push_events | boolean | | | true
issues_events | boolean | | | true
merge_requests_events | boolean | | | true
tag_push_events | boolean | | | true
note_events | boolean | | not null | true
category | character varying | | not null | 'common'::character varying
wiki_page_events | boolean | | | true
pipeline_events | boolean | | not null | false
confidential_issues_events | boolean | | not null | true
commit_events | boolean | | not null | true
job_events | boolean | | not null | false
confidential_note_events | boolean | | | true
deployment_events | boolean | | not null | false
comment_on_event_enabled | boolean | | not null | true
template | boolean | | | false
instance | boolean | | not null | false
comment_detail | smallint | | |
inherit_from_id | bigint | | |
alert_events | boolean | | |
group_id | bigint | | |
Indexes:
"services_pkey" PRIMARY KEY, btree (id)
"index_services_on_project_id_and_type_unique" UNIQUE, btree (project_id, type)
"index_services_on_type_and_instance_partial" UNIQUE, btree (type, instance) WHERE instance = true
"index_services_on_type_and_template_partial" UNIQUE, btree (type, template) WHERE template = true
"index_services_on_unique_group_id_and_type" UNIQUE, btree (group_id, type)
"index_services_on_inherit_from_id" btree (inherit_from_id)
"index_services_on_template" btree (template)
"index_services_on_type" btree (type)
"index_services_on_type_id_when_active_and_project_id_not_null" btree (type, id) WHERE active = true AND project_id IS NOT NULL
Foreign-key constraints:
"fk_71cce407f9" FOREIGN KEY (project_id) REFERENCES projects(id) ON DELETE CASCADE
"fk_e8fe908a34" FOREIGN KEY (group_id) REFERENCES namespaces(id) ON DELETE CASCADE
"fk_services_inherit_from_id" FOREIGN KEY (inherit_from_id) REFERENCES services(id) ON DELETE CASCADE
Referenced by:
TABLE "chat_names" CONSTRAINT "fk_00797a2bf9" FOREIGN KEY (service_id) REFERENCES services(id) ON DELETE CASCADE
TABLE "web_hooks" CONSTRAINT "fk_d47999a98a" FOREIGN KEY (service_id) REFERENCES services(id) ON DELETE CASCADE NOT VALID
TABLE "open_project_tracker_data" CONSTRAINT "fk_rails_1987546e48" FOREIGN KEY (service_id) REFERENCES services(id) ON DELETE CASCADE
TABLE "slack_integrations" CONSTRAINT "fk_rails_73db19721a" FOREIGN KEY (service_id) REFERENCES services(id) ON DELETE CASCADE
TABLE "jira_tracker_data" CONSTRAINT "fk_rails_a299066916" FOREIGN KEY (service_id) REFERENCES services(id) ON DELETE CASCADE
TABLE "issue_tracker_data" CONSTRAINT "fk_rails_ccc0840427" FOREIGN KEY (service_id) REFERENCES services(id) ON DELETE CASCADE
TABLE "services" CONSTRAINT "fk_services_inherit_from_id" FOREIGN KEY (inherit_from_id) REFERENCES services(id) ON DELETE CASCADE
Triggers:
trigger_has_external_issue_tracker_on_delete AFTER DELETE ON services FOR EACH ROW WHEN (old.category::text = 'issue_tracker'::text AND old.active = true AND old.project_id IS NOT NULL) EXECUTE PROCEDURE set_has_external_issue_tracker()
trigger_has_external_issue_tracker_on_insert AFTER INSERT ON services FOR EACH ROW WHEN (new.category::text = 'issue_tracker'::text AND new.active = true AND new.project_id IS NOT NULL) EXECUTE PROCEDURE set_has_external_issue_tracker()
trigger_has_external_issue_tracker_on_update AFTER UPDATE ON services FOR EACH ROW WHEN (new.category::text = 'issue_tracker'::text AND old.active <> new.active AND new.project_id IS NOT NULL) EXECUTE PROCEDURE set_has_external_issue_tracker()
trigger_has_external_wiki_on_delete AFTER DELETE ON services FOR EACH ROW WHEN (old.type::text = 'ExternalWikiService'::text AND old.project_id IS NOT NULL) EXECUTE PROCEDURE set_has_external_wiki()
trigger_has_external_wiki_on_insert AFTER INSERT ON services FOR EACH ROW WHEN (new.active = true AND new.type::text = 'ExternalWikiService'::text AND new.project_id IS NOT NULL) EXECUTE PROCEDURE set_has_external_wiki()
trigger_has_external_wiki_on_update AFTER UPDATE ON services FOR EACH ROW WHEN (new.type::text = 'ExternalWikiService'::text AND old.active <> new.active AND new.project_id IS NOT NULL) EXECUTE PROCEDURE set_has_external_wiki()
$ bin/rails db:migrate:down VERSION=20210205213915
== 20210205213915 RemoveForeignKeysFromAlertsServiceData: reverting ===========
-- add_foreign_key(:alerts_service_data, :services, {:column=>:service_id, :on_delete=>:cascade})
-> 0.0046s
== 20210205213915 RemoveForeignKeysFromAlertsServiceData: reverted (0.0101s) ==
DB state - after rolling back the foreign key migration
$ bin/rails dbconsole
psql (11.9)
Type "help" for help.
gitlabhq_development=# \d alerts_service_data
Table "public.alerts_service_data"
Column | Type | Collation | Nullable | Default
--------------------+--------------------------+-----------+----------+-------------------------------------------------
id | bigint | | not null | nextval('alerts_service_data_id_seq'::regclass)
service_id | bigint | | not null |
created_at | timestamp with time zone | | not null |
updated_at | timestamp with time zone | | not null |
encrypted_token | character varying(255) | | |
encrypted_token_iv | character varying(255) | | |
Indexes:
"alerts_service_data_pkey" PRIMARY KEY, btree (id)
Foreign-key constraints:
"fk_rails_b93215a42c" FOREIGN KEY (service_id) REFERENCES services(id) ON DELETE CASCADE
gitlabhq_development=# \d services
Table "public.services"
Column | Type | Collation | Nullable | Default
----------------------------+-----------------------------+-----------+----------+--------------------------------------
id | integer | | not null | nextval('services_id_seq'::regclass)
type | character varying | | |
project_id | integer | | |
created_at | timestamp without time zone | | |
updated_at | timestamp without time zone | | |
active | boolean | | not null | false
properties | text | | |
push_events | boolean | | | true
issues_events | boolean | | | true
merge_requests_events | boolean | | | true
tag_push_events | boolean | | | true
note_events | boolean | | not null | true
category | character varying | | not null | 'common'::character varying
wiki_page_events | boolean | | | true
pipeline_events | boolean | | not null | false
confidential_issues_events | boolean | | not null | true
commit_events | boolean | | not null | true
job_events | boolean | | not null | false
confidential_note_events | boolean | | | true
deployment_events | boolean | | not null | false
comment_on_event_enabled | boolean | | not null | true
template | boolean | | | false
instance | boolean | | not null | false
comment_detail | smallint | | |
inherit_from_id | bigint | | |
alert_events | boolean | | |
group_id | bigint | | |
Indexes:
"services_pkey" PRIMARY KEY, btree (id)
"index_services_on_project_id_and_type_unique" UNIQUE, btree (project_id, type)
"index_services_on_type_and_instance_partial" UNIQUE, btree (type, instance) WHERE instance = true
"index_services_on_type_and_template_partial" UNIQUE, btree (type, template) WHERE template = true
"index_services_on_unique_group_id_and_type" UNIQUE, btree (group_id, type)
"index_services_on_inherit_from_id" btree (inherit_from_id)
"index_services_on_template" btree (template)
"index_services_on_type" btree (type)
"index_services_on_type_id_when_active_and_project_id_not_null" btree (type, id) WHERE active = true AND project_id IS NOT NULL
Foreign-key constraints:
"fk_71cce407f9" FOREIGN KEY (project_id) REFERENCES projects(id) ON DELETE CASCADE
"fk_e8fe908a34" FOREIGN KEY (group_id) REFERENCES namespaces(id) ON DELETE CASCADE
"fk_services_inherit_from_id" FOREIGN KEY (inherit_from_id) REFERENCES services(id) ON DELETE CASCADE
Referenced by:
TABLE "chat_names" CONSTRAINT "fk_00797a2bf9" FOREIGN KEY (service_id) REFERENCES services(id) ON DELETE CASCADE
TABLE "web_hooks" CONSTRAINT "fk_d47999a98a" FOREIGN KEY (service_id) REFERENCES services(id) ON DELETE CASCADE NOT VALID
TABLE "open_project_tracker_data" CONSTRAINT "fk_rails_1987546e48" FOREIGN KEY (service_id) REFERENCES services(id) ON DELETE CASCADE
TABLE "slack_integrations" CONSTRAINT "fk_rails_73db19721a" FOREIGN KEY (service_id) REFERENCES services(id) ON DELETE CASCADE
TABLE "jira_tracker_data" CONSTRAINT "fk_rails_a299066916" FOREIGN KEY (service_id) REFERENCES services(id) ON DELETE CASCADE
TABLE "alerts_service_data" CONSTRAINT "fk_rails_b93215a42c" FOREIGN KEY (service_id) REFERENCES services(id) ON DELETE CASCADE
TABLE "issue_tracker_data" CONSTRAINT "fk_rails_ccc0840427" FOREIGN KEY (service_id) REFERENCES services(id) ON DELETE CASCADE
TABLE "services" CONSTRAINT "fk_services_inherit_from_id" FOREIGN KEY (inherit_from_id) REFERENCES services(id) ON DELETE CASCADE
Triggers:
trigger_has_external_issue_tracker_on_delete AFTER DELETE ON services FOR EACH ROW WHEN (old.category::text = 'issue_tracker'::text AND old.active = true AND old.project_id IS NOT NULL) EXECUTE PROCEDURE set_has_external_issue_tracker()
trigger_has_external_issue_tracker_on_insert AFTER INSERT ON services FOR EACH ROW WHEN (new.category::text = 'issue_tracker'::text AND new.active = true AND new.project_id IS NOT NULL) EXECUTE PROCEDURE set_has_external_issue_tracker()
trigger_has_external_issue_tracker_on_update AFTER UPDATE ON services FOR EACH ROW WHEN (new.category::text = 'issue_tracker'::text AND old.active <> new.active AND new.project_id IS NOT NULL) EXECUTE PROCEDURE set_has_external_issue_tracker()
trigger_has_external_wiki_on_delete AFTER DELETE ON services FOR EACH ROW WHEN (old.type::text = 'ExternalWikiService'::text AND old.project_id IS NOT NULL) EXECUTE PROCEDURE set_has_external_wiki()
trigger_has_external_wiki_on_insert AFTER INSERT ON services FOR EACH ROW WHEN (new.active = true AND new.type::text = 'ExternalWikiService'::text AND new.project_id IS NOT NULL) EXECUTE PROCEDURE set_has_external_wiki()
trigger_has_external_wiki_on_update AFTER UPDATE ON services FOR EACH ROW WHEN (new.type::text = 'ExternalWikiService'::text AND old.active <> new.active AND new.project_id IS NOT NULL) EXECUTE PROCEDURE set_has_external_wiki()
Screenshots (strongly suggested)
Does this MR meet the acceptance criteria?
Conformity
-
Changelog entry -
Documentation (if required) -
Code review guidelines -
Merge request performance guidelines -
Style guides -
Database guides -
Separation of EE specific content
Availability and Testing
-
Review and add/update tests for this feature/bug. Consider all test levels. See the Test Planning Process. -
Tested in all supported browsers -
Informed Infrastructure department of a default or new setting change, if applicable per definition of done
Security
If this MR contains changes to processing or storing of credentials or tokens, authorization and authentication methods and other items described in the security review guidelines:
-
Label as security and @ mention @gitlab-com/gl-security/appsec
-
The MR includes necessary changes to maintain consistency between UI, API, email, or other methods -
Security reports checked/validated by a reviewer from the AppSec team
Edited by Sarah Yasonik