HTTP 200 codes during upgrade

Summary

During a GitLab upgrade, the normal web interface return 200 HTTP codes with the maintenance, instead of a more appropriate code (such as 500 or 503).

The API is not affected (it returns 500 codes)

Steps to reproduce

On a self-hosted gitlab instance with an older postgres version, update to the 11.11 version, and execute gitlab-ctl pg_upgrade. During the upgrade, try to access the web interface, you will get a "Deploy in progress" page, with a 200 HTTP code.

Example Project

Not relevant, this is an instance-level behaviour.

What is the current bug behavior?

Any HTTP request to the site returns a 200 OK HTTP code

What is the expected correct behavior?

There are several options, but a 503 Service Unavailable seems the best option here (Wikipedia description : "The server cannot handle the request (because it is overloaded or down for maintenance). Generally, this is a temporary state.")

The normal interface being supposed to be used in an interactive fashion by humans, getting a 200 code is not exactly a big issue, but it can still cause issues with various automated systems reaching the page (crawlers for search engines, monitoring systems, etc…), so I'd put an error code here too.

Relevant logs and/or screenshots

None

Output of checks

Results of GitLab environment info

Expand for output related to GitLab environment info
System information
System:         Ubuntu 16.04
Current User:   git
Using RVM:      no
Ruby Version:   2.5.3p105
Gem Version:    2.7.9
Bundler Version:1.17.3
Rake Version:   12.3.2
Redis Version:  3.2.12
Git Version:    2.21.0
Sidekiq Version:5.2.7
Go Version:     unknown

GitLab information Version: 11.11.0 Revision: 3e8ca2fb781 Directory: /opt/gitlab/embedded/service/gitlab-rails DB Adapter: PostgreSQL DB Version: 9.6.11 URL: https://gitlab.example.com HTTP Clone URL: https://gitlab.example.com/some-group/some-project.git SSH Clone URL: git@gitlab.example.com:some-group/some-project.git Using LDAP: yes Using Omniauth: yes Omniauth Providers: github

GitLab Shell Version: 9.1.0 Repository storage paths:

  • default: /var/opt/gitlab/git-data/repositories GitLab Shell path: /opt/gitlab/embedded/service/gitlab-shell Git: /opt/gitlab/embedded/bin/git

Results of GitLab application Check

Expand for output related to the GitLab application check
Checking GitLab subtasks ...

Checking GitLab Shell ...

GitLab Shell: ... GitLab Shell version >= 9.1.0 ? ... OK (9.1.0) Running /opt/gitlab/embedded/service/gitlab-shell/bin/check Check GitLab API access: OK Redis available via internal API: OK

Access to /var/opt/gitlab/.ssh/authorized_keys: OK gitlab-shell self-check successful

Checking GitLab Shell ... Finished

Checking Gitaly ...

Gitaly: ... default ... OK

Checking Gitaly ... Finished

Checking Sidekiq ...

Sidekiq: ... Running? ... yes Number of Sidekiq processes ... 1

Checking Sidekiq ... Finished

Checking Incoming Email ...

Incoming Email: ... Reply by email is disabled in config/gitlab.yml

Checking Incoming Email ... Finished

Checking LDAP ...

LDAP: ... Server: ldapmain LDAP authentication... Success LDAP users with access to your GitLab server (only showing the first 100 results) […]

Checking LDAP ... Finished

Checking GitLab App ...

Git configured correctly? ... yes Database config exists? ... yes All migrations up? ... yes Database contains orphaned GroupMembers? ... no GitLab config exists? ... yes GitLab config up to date? ... yes Log directory writable? ... yes Tmp directory writable? ... yes Uploads directory exists? ... yes Uploads directory has correct permissions? ... yes Uploads directory tmp has correct permissions? ... yes Init script exists? ... skipped (omnibus-gitlab has no init script) Init script up-to-date? ... skipped (omnibus-gitlab has no init script) Projects have namespace: ... 19/4 ... yes 19/5 ... yes 19/6 ... yes 19/8 ... yes 19/10 ... yes 19/11 ... yes 19/13 ... yes 19/15 ... yes 19/16 ... yes 19/17 ... yes 19/18 ... yes 19/24 ... yes 19/25 ... yes 19/32 ... yes 19/33 ... yes 34/35 ... yes 19/37 ... yes 49/38 ... yes 38/43 ... yes 38/44 ... yes 39/45 ... yes 19/46 ... yes 34/49 ... yes 19/51 ... yes 25/52 ... yes 19/53 ... yes 19/55 ... yes 3/56 ... yes 22/57 ... yes 19/58 ... yes 19/59 ... yes 19/60 ... yes 19/64 ... yes 38/68 ... yes 44/69 ... yes 19/70 ... yes 19/71 ... yes 46/73 ... yes 46/74 ... yes 38/77 ... yes 19/84 ... yes 22/85 ... yes 19/89 ... yes 9/91 ... yes 19/92 ... yes 49/93 ... yes 51/94 ... yes 19/100 ... yes 53/101 ... yes 53/102 ... yes 52/103 ... yes 54/104 ... yes 55/105 ... yes 57/106 ... yes 57/107 ... yes 57/111 ... yes 60/116 ... yes 61/117 ... yes 19/120 ... yes 57/121 ... yes 22/122 ... yes 63/123 ... yes 64/126 ... yes 64/127 ... yes 64/128 ... yes 64/129 ... yes 64/130 ... yes 64/131 ... yes 64/132 ... yes 64/133 ... yes 64/134 ... yes 64/135 ... yes 64/136 ... yes 64/137 ... yes 64/138 ... yes 64/139 ... yes 64/140 ... yes 64/141 ... yes 64/142 ... yes 64/143 ... yes 64/144 ... yes 64/145 ... yes 64/148 ... yes 66/150 ... yes 60/151 ... yes 19/161 ... yes 69/162 ... yes 69/163 ... yes 71/166 ... yes 64/168 ... yes 64/169 ... yes 64/170 ... yes 74/171 ... yes 74/172 ... yes 74/173 ... yes 74/174 ... yes 74/175 ... yes 74/176 ... yes 74/177 ... yes 74/178 ... yes 64/179 ... yes 64/180 ... yes 64/181 ... yes 64/182 ... yes 74/184 ... yes 74/185 ... yes 74/186 ... yes 74/187 ... yes 74/189 ... yes 74/190 ... yes 74/191 ... yes 74/192 ... yes 59/193 ... yes 74/195 ... yes 74/196 ... yes 74/197 ... yes 74/198 ... yes 74/199 ... yes 74/200 ... yes 74/201 ... yes 74/202 ... yes 74/203 ... yes 74/204 ... yes 64/205 ... yes 74/206 ... yes 64/207 ... yes 74/208 ... yes 19/210 ... yes 69/211 ... yes 46/212 ... yes 9/213 ... yes 19/215 ... yes 64/216 ... yes 64/217 ... yes 34/219 ... yes 69/221 ... yes 9/222 ... yes 46/223 ... yes 46/224 ... yes 46/225 ... yes 46/226 ... yes 80/227 ... yes 64/228 ... yes 81/229 ... yes 19/232 ... yes 74/233 ... yes 82/234 ... yes 64/235 ... yes 3/236 ... yes 64/237 ... yes 83/239 ... yes 80/240 ... yes 64/241 ... yes 84/242 ... yes 55/244 ... yes 85/245 ... yes 74/246 ... yes 64/247 ... yes 85/248 ... yes 85/249 ... yes 80/250 ... yes 84/251 ... yes 19/252 ... yes 85/253 ... yes 85/256 ... yes 19/257 ... yes 74/258 ... yes 64/261 ... yes 4/262 ... yes 64/264 ... yes 64/265 ... yes 19/266 ... yes 64/267 ... yes 19/271 ... yes 9/272 ... yes 80/276 ... yes 91/279 ... yes 91/280 ... yes 92/281 ... yes 93/282 ... yes 93/283 ... yes 94/284 ... yes 94/285 ... yes 94/286 ... yes 55/287 ... yes 55/288 ... yes 55/290 ... yes 64/292 ... yes 64/293 ... yes 83/294 ... yes 64/295 ... yes 19/296 ... yes 92/297 ... yes 19/298 ... yes 99/300 ... yes 10/301 ... yes 81/303 ... yes 3/308 ... yes 64/317 ... yes 34/318 ... yes 64/320 ... yes 106/321 ... yes 64/324 ... yes 91/325 ... yes 103/328 ... yes 19/331 ... yes 64/332 ... yes 64/334 ... yes 69/335 ... yes 69/336 ... yes 19/337 ... yes 91/338 ... yes 85/339 ... yes 81/340 ... yes 81/341 ... yes 112/344 ... yes 49/345 ... yes 113/346 ... yes 113/347 ... yes 114/349 ... yes 91/353 ... yes 91/354 ... yes 3/358 ... yes 93/361 ... yes 123/363 ... yes 119/364 ... yes 123/365 ... yes 41/366 ... yes 122/367 ... yes 10/368 ... yes 126/372 ... yes 29/375 ... yes 3/377 ... yes 64/383 ... yes 19/384 ... yes 124/386 ... yes 9/387 ... yes 140/389 ... yes 114/391 ... yes 114/392 ... yes 55/393 ... yes 29/394 ... yes 106/395 ... yes 106/398 ... yes 106/399 ... yes 124/400 ... yes 49/402 ... yes 114/403 ... yes 64/404 ... yes 29/405 ... yes 29/406 ... yes 19/408 ... yes 69/410 ... yes 140/411 ... yes 64/412 ... yes 157/414 ... yes 158/419 ... yes 158/421 ... yes 158/422 ... yes 158/424 ... yes 3/426 ... yes 55/427 ... yes 80/428 ... yes 85/430 ... yes 19/431 ... yes 126/432 ... yes 126/433 ... yes 140/434 ... yes 80/436 ... yes 114/437 ... yes 85/438 ... yes 80/442 ... yes 80/443 ... yes 80/444 ... yes 80/445 ... yes 41/446 ... yes 168/448 ... yes 54/449 ... yes 41/450 ... yes 80/451 ... yes 9/452 ... yes 55/455 ... yes 180/456 ... yes 13/459 ... yes 9/460 ... yes 99/461 ... yes 54/463 ... yes 124/464 ... yes 140/465 ... yes 80/467 ... yes 55/469 ... yes 198/470 ... yes 201/471 ... yes 80/472 ... yes 9/473 ... yes 54/475 ... yes 124/476 ... yes 69/477 ... yes 54/478 ... yes 69/479 ... yes 201/480 ... yes 201/481 ... yes 80/484 ... yes 210/486 ... yes 35/487 ... yes 85/488 ... yes 201/489 ... yes 49/490 ... yes 201/491 ... yes 168/492 ... yes 126/493 ... yes 80/494 ... yes 190/496 ... yes 126/497 ... yes 201/499 ... yes 80/500 ... yes 230/502 ... yes 231/503 ... yes 14/505 ... yes 235/506 ... yes 4/507 ... yes 114/508 ... yes 19/509 ... yes 55/510 ... yes 43/512 ... yes 235/514 ... yes 243/515 ... yes 64/516 ... yes 201/517 ... yes 244/518 ... yes 126/519 ... yes 201/520 ... yes 201/521 ... yes 9/522 ... yes 19/524 ... yes 254/525 ... yes 255/526 ... yes 140/528 ... yes 93/529 ... yes 183/530 ... yes 85/531 ... yes 168/533 ... yes 93/534 ... yes 4/536 ... yes 201/537 ... yes 255/539 ... yes 140/540 ... yes 19/541 ... yes 255/542 ... yes 64/546 ... yes 255/547 ... yes 114/548 ... yes 245/549 ... yes 54/550 ... yes 19/551 ... yes 114/553 ... yes 114/554 ... yes 278/555 ... yes 246/556 ... yes 28/558 ... yes 279/559 ... yes 55/560 ... yes 243/561 ... yes 34/562 ... yes 255/563 ... yes 279/564 ... yes 54/565 ... yes 125/566 ... yes 255/567 ... yes 114/568 ... yes 144/570 ... yes 55/572 ... yes 55/573 ... yes 218/574 ... yes 54/576 ... yes 49/577 ... yes 279/578 ... yes 57/579 ... yes 255/581 ... yes 168/582 ... yes 255/583 ... yes 19/584 ... yes 255/585 ... yes 255/586 ... yes 278/587 ... yes 114/588 ... yes 254/589 ... yes 218/590 ... yes 80/591 ... yes 285/592 ... yes 80/594 ... yes 80/595 ... yes 115/597 ... yes 19/599 ... yes 255/601 ... yes 255/602 ... yes 19/603 ... yes 280/604 ... yes 255/605 ... yes 293/607 ... yes 28/609 ... yes 34/610 ... yes 34/611 ... yes 81/612 ... yes 34/613 ... yes 34/614 ... yes 39/615 ... yes 61/617 ... yes 137/618 ... yes 255/619 ... yes 217/620 ... yes 243/621 ... yes 304/623 ... yes 179/625 ... yes 81/626 ... yes 179/628 ... yes 52/629 ... yes 255/630 ... yes 81/631 ... yes 34/632 ... yes 19/633 ... yes 54/636 ... yes 19/637 ... yes 55/638 ... yes 255/639 ... yes 255/640 ... yes 13/642 ... yes 255/643 ... yes 13/644 ... yes 255/645 ... yes 137/646 ... yes 81/647 ... yes 306/648 ... yes 55/649 ... yes 81/651 ... yes 55/652 ... yes 137/653 ... yes 55/654 ... yes 69/655 ... yes 51/656 ... yes 34/657 ... yes 255/658 ... yes 114/659 ... yes 114/661 ... yes 34/662 ... yes 55/663 ... yes 49/664 ... yes 114/665 ... yes 34/666 ... yes 217/667 ... yes 255/668 ... yes 255/669 ... yes 19/670 ... yes 114/672 ... yes 19/673 ... yes 310/674 ... yes 311/675 ... yes 34/676 ... yes 34/677 ... yes 217/678 ... yes 114/682 ... yes 114/683 ... yes 19/684 ... yes 114/685 ... yes 168/686 ... yes 138/687 ... yes 313/688 ... yes 10/689 ... yes 306/690 ... yes 207/691 ... yes 10/693 ... yes 114/694 ... yes 319/695 ... yes 319/696 ... yes 255/697 ... yes 278/698 ... yes 54/699 ... yes 179/700 ... yes 319/702 ... yes 319/703 ... yes 255/704 ... yes 51/705 ... yes 105/706 ... yes 10/707 ... yes 19/708 ... yes 179/709 ... yes 140/710 ... yes 392/712 ... yes 255/713 ... yes 319/714 ... yes 4/715 ... yes 190/721 ... yes 255/723 ... yes 275/724 ... yes 335/725 ... yes 114/726 ... yes 255/727 ... yes 69/730 ... yes 138/732 ... yes 340/733 ... yes 207/734 ... yes 19/736 ... yes 179/737 ... yes 313/738 ... yes 55/739 ... yes 49/740 ... yes 34/741 ... yes 138/742 ... yes 55/746 ... yes 81/748 ... yes 19/750 ... yes 349/751 ... yes 49/752 ... yes 51/753 ... yes 350/754 ... yes 137/755 ... yes 352/756 ... yes 138/758 ... yes 19/759 ... yes 64/760 ... yes 310/761 ... yes 248/763 ... yes 69/764 ... yes 41/765 ... yes 16/766 ... yes 49/767 ... yes 360/768 ... yes 49/769 ... yes 360/770 ... yes 360/772 ... yes 360/784 ... yes 248/790 ... yes 58/792 ... yes 360/793 ... yes 356/794 ... yes 49/795 ... yes 356/796 ... yes 356/797 ... yes 356/798 ... yes 179/799 ... yes 392/800 ... yes 168/801 ... yes 356/802 ... yes 356/803 ... yes 356/804 ... yes 319/805 ... yes 319/806 ... yes 179/807 ... yes 58/808 ... yes 20/809 ... yes 356/810 ... yes 138/812 ... yes 356/813 ... yes 56/814 ... yes 356/815 ... yes 385/816 ... yes 138/817 ... yes 168/818 ... yes 356/819 ... yes 69/820 ... yes 356/821 ... yes 168/822 ... yes 356/823 ... yes 356/824 ... yes 356/825 ... yes 168/826 ... yes 356/827 ... yes 350/828 ... yes 54/829 ... yes 125/830 ... yes 392/831 ... yes Redis version >= 2.8.0? ... yes Ruby version >= 2.5.3 ? ... yes (2.5.3) Git version >= 2.21.0 ? ... yes (2.21.0) Git user has default SSH configuration? ... yes Active users: ... 109

Checking GitLab App ... Finished

Checking GitLab subtasks ... Finished

Possible fixes

I'm not sure where exactly this is in the codebase, but I suspect the maintenance mode is done directly at the nginx reverse proxy level. I suspect the fix would be doable with a single line in the corresponding nginx configuration file.

Edited by Arnaud Venturi