- 12 Apr, 2021 40 commits
-
-
Sean McGivern authored
Puma has a limit (`Puma::Const::MAX_BODY` - around 110 KiB) over which it will write request bodies to disk for handing off to the application. When it does this, the request body can be left on disk if the Puma process receives SIGKILL. Consider an extremely minimal `config.ru`: run(proc { [204, {}, []] }) If we then: 1. Start `puma`, noting the process ID. 2. Start a slow file transfer, using `curl --limit-rate 100k` (for example) and `-T $PATH_TO_LARGE_FILE`. 3. Watch `$TMPDIR/puma*`. We will see Puma start to write this temporary file. If we then send SIGKILL to Puma, the file won't be cleaned up. With this patch, it will. The patch itself is pretty unpleasant: as Puma has two quite long methods that set up the temporary files (`Puma::Client#setup_body` and `Puma::Client#setup_chunked_body`), we have to copy those methods and call `#unlink` in the correct spots in both. Also, as these are private methods, it's hard to write a test for them. We can test manually. Running `fswatch -t -x $TMPDIR | grep puma` while posting a large file shows this with this patch: Fri Mar 26 20:34:10 2021 ... Created Removed IsFile Fri Mar 26 20:34:21 2021 ... Updated IsFile Whereas without this patch we get: Fri Mar 26 20:32:57 2021 ... Created IsFile Fri Mar 26 20:33:05 2021 ... Created Removed Updated IsFile
-
Sean McGivern authored
Rack writes files from multipart/form-data requests to disk in a temporary file. Rack includes a middleware to clean these up - Rack::TempfileReaper - but that won't withstand a process being sent SIGKILL. To handle that case, we can immediately unlink the created temporary file, which means it will be removed once we're done with it or the current process goes away. For development mode and test mode, we have to ensure that this new middleware is before Gitlab::Middleware::Static, otherwise we might not get the chance to set our own middleware. With direct upload configured, GitLab mostly doesn't accept multipart/form-data requests in a way where they reach Rack directly - they typically go via Workhorse which accelerates them - but there are cases where it can happen, and direct upload is still only an option. To test this manually, we can set `$GITLAB_API_TOKEN_LOCAL` to a personal access token for the API in the local environment, `$PATH_TO_FILE` to be a path to a (preferably large) file to be uploaded, and break the actual saving of uploads (in the default case with GDK, stop Minio): curl -H "Private-Token: $GITLAB_API_TOKEN_LOCAL" \ -F "file=@$PATH_TO_FILE" \ http://localhost:3000/api/v4/projects/1/uploads Once the upload is finished and the request fails, we'll see the file we uploaded in `$TMPDIR`: $ ls -l $TMPDIR/RackMultipart* | awk '{ print $5, $8 }' 952107008 17:40 With this change, that won't happen: we'll see the file created and immediately unlinked, so no matter what happens, it won't stick around on disk. (This specific test case is handled by Rack::TempfileReaper in later versions of Rack, but it still depends on manual cleanup.)
-
Etienne Baqué authored
Merge branch '325263-wiki-kerberos-clone-button-fails-with-undefined-local-variable-or-method-project' into 'master' Fix 500 error when cloning a wiki using the Kerberos clone button See merge request gitlab-org/gitlab!58270
-
Athar Hameed authored
-
Markus Koller authored
Fix EmptyLineAfterFinalLetItBe offenses in spec/services/groups See merge request gitlab-org/gitlab!58423
-
Huzaifa Iftikhar authored
-
Phil Hughes authored
Migrate delete label modal to Vue See merge request gitlab-org/gitlab!58131
-
Olena Horal-Koretska authored
Update default branch in divergence graph See merge request gitlab-org/gitlab!58871
-
Etienne Baqué authored
Change to "read-write" rather than "read write" in database_spec.rb See merge request gitlab-org/gitlab!59067
-
Markus Koller authored
Merge branch '247515-the-ssh-key-page-at-profile-keys-should-mention-that-expired-keys-only-cause-warnings-and' into 'master' The SSH Key page should mention that expired keys only cause warnings and will continue working See merge request gitlab-org/gitlab!57494
-
Robert Hunt authored
-
Arturo Herrero authored
Fix EmptyLineAfterFinalLetItBe offenses in spec/services/issues See merge request gitlab-org/gitlab!58425
-
Mikołaj Wawrzyniak authored
Geo: Add logging to help diagnose why syncing is not working See merge request gitlab-org/gitlab!58526
-
Kamil Trzciński authored
Ensure project_iid before calling drop! on the pipeline [RUN ALL RSPEC] [RUN AS-IF-FOSS] See merge request gitlab-org/gitlab!57783
-
Denys Mishunov authored
Add new project sidebar panel See merge request gitlab-org/gitlab!58854
-
Markus Koller authored
Make blobs directly accessible through the graphql repository See merge request gitlab-org/gitlab!58677
-
Rémy Coutable authored
Expose timelogs against issues and merge requests in graphql See merge request gitlab-org/gitlab!57321
-
Lee Tickett authored
-
Kushal Pandya authored
Remove mock data from DAST Site Profiles See merge request gitlab-org/gitlab!58735
-
Dheeraj Joshi authored
-
Markus Koller authored
Fix RSpec/EmptyLineAfterFinalLetItBe for ee/spec/services/merge_trains See merge request gitlab-org/gitlab!58333
-
Abdul Wadood authored
-
Markus Koller authored
Fix EmptyLineAfterFinalLetItBe offenses in spec/lib/gitlab/hook_data See merge request gitlab-org/gitlab!58262
-
Huzaifa Iftikhar authored
-
Bob Van Landuyt authored
Fix N+1 queries to find or initialize services See merge request gitlab-org/gitlab!58879
-
Arturo Herrero authored
-
Bob Van Landuyt authored
Fix EmptyLineAfterFinalLetItBe offenses in spec/services/ide See merge request gitlab-org/gitlab!58424
-
Huzaifa Iftikhar authored
-
charlie ablett authored
Fix timeout error when loading pipelines by commit SHA for GraphQL See merge request gitlab-org/gitlab!59110
-
Matthias Käppler authored
Use object quarantine directory to enumerate new LFS pointers [RUN ALL RSPEC] [RUN AS-IF-FOSS] See merge request gitlab-org/gitlab!58634
-
Arturo Herrero authored
Fix EmptyLineAfterFinalLetItBe offenses in spec/services/merge_requests See merge request gitlab-org/gitlab!58429
-
Rémy Coutable authored
Include context in spec time tracking See merge request gitlab-org/gitlab!58980
-
Vitali Tatarintev authored
Fix cop offenses for Style/HashTransformation in spec directory See merge request gitlab-org/gitlab!56586
-
Vitali Tatarintev authored
Fix cop offenses for Style/HashTransformation in ee directory See merge request gitlab-org/gitlab!56581
-
James Lopez authored
Add Billable Memberships API See merge request gitlab-org/gitlab!58506
-
Jason Goodman authored
-
Marius Bobin authored
-
Dmitry Gruzd authored
Set version when externally installed See merge request gitlab-org/gitlab!58852
-
Marius Bobin authored
It was loading all the pipelines for a given project and tried to match them from with the requested one from Ruby. This was causing database statement timeouts for projects with lots of pipelines.
-
Arturo Herrero authored
Fix RSpec/EmptyLineAfterFinalLetItBe for ee/spec/features/admin See merge request gitlab-org/gitlab!58403
-