Unable to enable wikis on project that only has another group as a member
Summary
Currently it is not possible to enable Wikis on projects that have previously had it disabled. Based on the error message it appears that this occurs when a project has another group as it's member.
Steps to reproduce
- Create a project in a personal namespace, and disable the Wiki functionality on it
- Transfer that project to a group that only has another group as it's member
- Attempt to enable wikis on that project
What is the current bug behavior?
Enabling of Wikis fails (with an error message)
What is the expected correct behavior?
Wiki functionality is enabled for the project
Relevant logs and/or screenshots
production_json.log: "method":"PATCH",
"path":"/graphics/seexpr",
"format":"js",
"controller":"ProjectsController",
"action":"update",
"status":500,
"time":"2020-08-26T10:11:46.086Z",
"params":[
{
"key":"utf8",
"value":"✓"
},
{
"key":"_method",
"value":"patch"
},
{
"key":"authenticity_token",
"value":"[FILTERED]"
},
{
"key":"update_section",
"value":"js-shared-permissions"
},
{
"key":"project",
"value":{
"visibility_level":"20",
"request_access_enabled":"false",
"project_feature_attributes":{
"issues_access_level":"20",
"repository_access_level":"20",
"merge_requests_access_level":"20",
"forking_access_level":"20",
"builds_access_level":"20",
"wiki_access_level":"20",
"snippets_access_level":"20",
"metrics_dashboard_access_level":"10"
},
"lfs_enabled":"false",
"packages_enabled":"false",
"emails_disabled":"false",
"project_setting_attributes":{
"show_default_award_emojis":"true"
}
}
},
{
"key":"confirm_path_input",
"value":""
},
{
"key":"commit",
"value":"Save changes"
},
{
"key":"namespace_id",
"value":"graphics"
},
{
"key":"id",
"value":"seexpr"
}
],
"remote_ip":"[REMOVED]",
"user_id":2,
"username":"bcooksley",
"ua":"[REMOVED]",
"correlation_id":"j9FeWJBDM38",
"meta.user":"bcooksley",
"meta.project":"graphics/seexpr",
"meta.root_namespace":"graphics",
"meta.caller_id":"ProjectsController#update",
"redis_calls":1,
"redis_duration_s":0.000172,
"redis_read_bytes":181,
"redis_write_bytes":588,
"redis_shared_state_calls":1,
"redis_shared_state_duration_s":0.000172,
"redis_shared_state_read_bytes":181,
"redis_shared_state_write_bytes":588,
"queue_duration_s":0.010298,
"cpu_s":0.1,
"exception.class":"ArgumentError",
"exception.message":"user must be a User, got Group",
"exception.backtrace":[
"app/models/wiki.rb:38:in `initialize'",
"app/services/projects/update_service.rb:138:in `new'",
"app/services/projects/update_service.rb:138:in `ensure_wiki_exists'",
"lib/gitlab/metrics/instrumentation.rb:161:in `block in ensure_wiki_exists'",
"lib/gitlab/metrics/method_call.rb:27:in `measure'",
"lib/gitlab/metrics/instrumentation.rb:161:in `ensure_wiki_exists'",
"app/services/projects/update_service.rb:14:in `execute'",
"lib/gitlab/metrics/instrumentation.rb:161:in `block in execute'",
"lib/gitlab/metrics/method_call.rb:27:in `measure'",
"lib/gitlab/metrics/instrumentation.rb:161:in `execute'",
"app/controllers/projects_controller.rb:87:in `update'",
"app/controllers/application_controller.rb:491:in `set_current_admin'",
"lib/gitlab/session.rb:11:in `with_session'",
"app/controllers/application_controller.rb:482:in `set_session_storage'",
"lib/gitlab/i18n.rb:73:in `with_locale'",
"lib/gitlab/i18n.rb:79:in `with_user_locale'",
"app/controllers/application_controller.rb:476:in `set_locale'",
"lib/gitlab/error_tracking.rb:50:in `with_context'",
"app/controllers/application_controller.rb:541:in `sentry_context'",
"app/controllers/application_controller.rb:469:in `block in set_current_context'",
"lib/gitlab/application_context.rb:52:in `block in use'",
"lib/gitlab/application_context.rb:52:in `use'",
"lib/gitlab/application_context.rb:20:in `with_context'",
"app/controllers/application_controller.rb:462:in `set_current_context'",
"lib/gitlab/metrics/elasticsearch_rack_middleware.rb:16:in `call'",
"lib/gitlab/middleware/rails_queue_duration.rb:33:in `call'",
"lib/gitlab/metrics/rack_middleware.rb:16:in `block in call'",
"lib/gitlab/metrics/transaction.rb:61:in `run'",
"lib/gitlab/metrics/rack_middleware.rb:16:in `call'",
"lib/gitlab/request_profiler/middleware.rb:17:in `call'",
"lib/gitlab/middleware/go.rb:20:in `call'",
"lib/gitlab/etag_caching/middleware.rb:13:in `call'",
"lib/gitlab/middleware/multipart.rb:140:in `call'",
"lib/gitlab/middleware/read_only/controller.rb:51:in `call'",
"lib/gitlab/middleware/read_only.rb:18:in `call'",
"lib/gitlab/middleware/same_site_cookies.rb:27:in `call'",
"lib/gitlab/middleware/basic_health_check.rb:25:in `call'",
"lib/gitlab/middleware/handle_ip_spoof_attack_error.rb:25:in `call'",
"lib/gitlab/middleware/request_context.rb:23:in `call'",
"config/initializers/fix_local_cache_middleware.rb:9:in `call'",
"lib/gitlab/metrics/requests_rack_middleware.rb:60:in `call'",
"lib/gitlab/middleware/release_env.rb:12:in `call'"
],
"db_duration_s":0.00188,
"view_duration_s":0.0,
"duration_s":0.07846,
"db_count":7,
"db_write_count":0,
"db_cached_count":1
}
Possible fixes
It appears that app/models/wiki.rb:38 is responsible for this issue, as it cannot handle groups being a member of projects.