From 0b082b348b517af854265eaff530b2b6d3cfd7b2 Mon Sep 17 00:00:00 2001 From: Jacob Vosmaer Date: Mon, 26 Oct 2015 13:42:09 +0100 Subject: Start putting shared files in "shared" --- doc/development/shared_files.md | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 doc/development/shared_files.md (limited to 'doc/development/shared_files.md') diff --git a/doc/development/shared_files.md b/doc/development/shared_files.md new file mode 100644 index 00000000000..cffe6f79193 --- /dev/null +++ b/doc/development/shared_files.md @@ -0,0 +1,33 @@ +# Shared files + +Historically, GitLab has been storing shared files in many different +directories: `public/uploads`, `builds`, `tmp/repositories`, `tmp/rebase` (EE), +etc. Having so many shared directories makes it difficult to deploy GitLab on +shared storage (e.g. NFS). Working towards GitLab 9.0 we are consolidating +these different directories under the `shared` directory. + +This means that if GitLab will start storing puppies in some future version +then we should put them in `shared/puppies`. Temporary files should be stored +in `shared/tmp`. + +In the GitLab application code you can get the full path to the `shared` +directory with `Gitlab.config.shared.path`. + +## What is not a 'shared file' + +Files that belong to only one process, or on only one server, should not go in +`shared`. Examples include PID files and sockets. + +## Temporary files and shared storage + +Sometimes you create a temporary file on disk with the intention of it becoming +'official'. For example you might be first streaming an upload from a user to +disk in a temporary file so you can perform some checks on it. When the checks +pass, you make the file official. In scenarios like this please follow these +rules: + +- Store the temporary file under `shared/tmp`, i.e. on the same filesystem you + want the official file to be on. +- Use move/rename operations when operating on the file instead of copy + operations where possible, because renaming a file is much faster than + copying it. -- cgit v1.2.1 From 5ff830cf32908c0efc156e439a0486cfb40eeadb Mon Sep 17 00:00:00 2001 From: Jacob Vosmaer Date: Mon, 26 Oct 2015 14:28:31 +0100 Subject: Clarify puppies --- doc/development/shared_files.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'doc/development/shared_files.md') diff --git a/doc/development/shared_files.md b/doc/development/shared_files.md index cffe6f79193..fcd905b54a4 100644 --- a/doc/development/shared_files.md +++ b/doc/development/shared_files.md @@ -7,8 +7,8 @@ shared storage (e.g. NFS). Working towards GitLab 9.0 we are consolidating these different directories under the `shared` directory. This means that if GitLab will start storing puppies in some future version -then we should put them in `shared/puppies`. Temporary files should be stored -in `shared/tmp`. +then we should put them in `shared/puppies`. Temporary puppy files should be +stored in `shared/tmp`. In the GitLab application code you can get the full path to the `shared` directory with `Gitlab.config.shared.path`. -- cgit v1.2.1