mirror of
https://github.com/tahoe-lafs/tahoe-lafs.git
synced 2025-01-19 03:06:33 +00:00
node.py: use NODEDIR/tmp for the 'tempfile' module's temporary directory, so webapi upload tempfiles are put there instead of /tmp . You can set it to something else by setting [node]tempdir in tahoe.cfg
This commit is contained in:
parent
e9d4334159
commit
26ca53fa3d
@ -205,6 +205,18 @@ ssh.authorized_keys_file = (filename, optional)
|
||||
ssh.port = 8022
|
||||
ssh.authorized_keys_file = ~/.ssh/authorized_keys
|
||||
|
||||
tempdir = (string, optional)
|
||||
|
||||
This specifies a temporary directory for the webapi server to use, for
|
||||
holding large files while they are being uploaded. If a webapi client
|
||||
attempts to upload a 10GB file, this tempdir will need to have at least 10GB
|
||||
available for the upload to complete.
|
||||
|
||||
The default value is the "tmp" directory in the node's base directory (i.e.
|
||||
$NODEDIR/tmp), but it can be placed elsewhere. This directory is used for
|
||||
files that usually (on a unix system) go into /tmp . The string will be
|
||||
interpreted relative to the node's base directory.
|
||||
|
||||
== Client Configuration ==
|
||||
|
||||
[client]
|
||||
|
@ -1,5 +1,5 @@
|
||||
|
||||
import datetime, os.path, re, types, ConfigParser
|
||||
import datetime, os.path, re, types, ConfigParser, tempfile
|
||||
from base64 import b32decode, b32encode
|
||||
|
||||
from twisted.python import log as twlog
|
||||
@ -10,7 +10,7 @@ import foolscap.logging.log
|
||||
from allmydata import get_package_versions, get_package_versions_string
|
||||
from allmydata.util import log
|
||||
from allmydata.util import fileutil, iputil, observer
|
||||
from allmydata.util.assertutil import precondition
|
||||
from allmydata.util.assertutil import precondition, _assert
|
||||
|
||||
from foolscap.logging import app_versions
|
||||
|
||||
@ -65,6 +65,7 @@ class Node(service.MultiService):
|
||||
nickname_utf8 = self.get_config("node", "nickname", "<unspecified>")
|
||||
self.nickname = nickname_utf8.decode("utf-8")
|
||||
|
||||
self.init_tempdir()
|
||||
self.create_tub()
|
||||
self.logSource="Node"
|
||||
|
||||
@ -73,6 +74,20 @@ class Node(service.MultiService):
|
||||
self.log("Node constructed. " + get_package_versions_string())
|
||||
iputil.increase_rlimits()
|
||||
|
||||
def init_tempdir(self):
|
||||
local_tempdir = "tmp" # default is NODEDIR/tmp/
|
||||
tempdir = self.get_config("node", "tempdir", local_tempdir)
|
||||
tempdir = os.path.join(self.basedir, tempdir)
|
||||
if not os.path.exists(tempdir):
|
||||
fileutil.make_dirs(tempdir)
|
||||
tempfile.tempdir = os.path.abspath(tempdir)
|
||||
# this should cause twisted.web.http (which uses
|
||||
# tempfile.TemporaryFile) to put large request bodies in the given
|
||||
# directory. Without this, the default temp dir is usually /tmp/,
|
||||
# which is frequently too small.
|
||||
test_name = tempfile.mktemp()
|
||||
_assert(os.path.dirname(test_name) == tempdir, test_name, tempdir)
|
||||
|
||||
def get_config(self, section, option, default=_None, boolean=False):
|
||||
try:
|
||||
if boolean:
|
||||
|
Loading…
Reference in New Issue
Block a user