#9400: flock causes problems when writing to an NFS share
---------------------------+------------------------------------------------
Reporter: mikeh | Owner: nobody
Status: new | Milestone:
Component: Uncategorized | Version: 1.0
Keywords: | Stage: Unreviewed
Has_patch: 0 |
---------------------------+------------------------------------------------
Hi,
This seems to be the same behaviour as reported in #8403, but as that
ticket has been closed as there was a request not to reopen it, here's a
new ticket.
We have a media directory mounted over NFS. Our system is RHEL5.2, Python
2.4, Django-1.0. Saving a file through the standard FileField mechanisms
(we're not using any custom storage backends, just out of the box django
setup stuff) results in the following :
{{{
File "/usr/lib64/python2.4/site-packages/mod_python/apache.py", line 299,
in HandlerDispatch?
result = object(req)
File "/usr/lib/python2.4/site-packages/django/core/handlers/modpython.py",
line 222, in handler
return ModPythonHandler?()(req)
File "/usr/lib/python2.4/site-packages/django/core/handlers/modpython.py",
line 195, in call
response = self.get_response(request)
File "/usr/lib/python2.4/site-packages/django/core/handlers/base.py", line
128, in get_response
return self.handle_uncaught_exception(request, resolver, exc_info)
File "./../apps/dave_common/init.py", line 20, in new
File "/usr/lib/python2.4/site-packages/django/core/handlers/base.py", line
86, in get_response
response = callback(request, *callback_args, **callback_kwargs)
File "/usr/lib/python2.4/site-packages/django/contrib/admin/sites.py",
line 158, in root
return self.model_page(request, *url.split('/', 2))
File "/usr/lib/python2.4/site-packages/django/views/decorators/cache.py",
line 44, in _wrapped_view_func
response = view_func(request, *args, **kwargs)
File "/usr/lib/python2.4/site-packages/django/contrib/admin/sites.py",
line 177, in model_page
return admin_obj(request, rest_of_url)
File "/usr/lib/python2.4/site-packages/django/contrib/admin/options.py",
line 191, in call
return self.add_view(request)
File "/usr/lib/python2.4/site-packages/django/db/transaction.py", line
238, in _commit_on_success
res = func(*args, **kw)
File "/usr/lib/python2.4/site-packages/django/contrib/admin/options.py",
line 492, in add_view
new_object = self.save_form(request, form, change=False)
File "/usr/lib/python2.4/site-packages/django/contrib/admin/options.py",
line 370, in save_form
return form.save(commit=False)
File "/usr/lib/python2.4/site-packages/django/forms/models.py", line 302,
in save
return save_instance(self, self.instance, self._meta.fields, fail_message,
commit)
File "/usr/lib/python2.4/site-packages/django/forms/models.py", line 47,
in save_instance
f.save_form_data(instance, cleaned_data[
f.name])
File "/usr/lib/python2.4/site-packages/django/db/models/fields/files.py",
line 192, in save_form_data
getattr(instance,
self.name).save(
data.name, data, save=False)
File "/usr/lib/python2.4/site-packages/django/db/models/fields/files.py",
line 217, in save
super(ImageFieldFile?, self).save(name, content, save)
File "/usr/lib/python2.4/site-packages/django/db/models/fields/files.py",
line 74, in save
self._name = self.storage.save(name, content)
File "/usr/lib/python2.4/site-packages/django/core/files/storage.py", line
45, in save
name = self._save(name, content)
File "/usr/lib/python2.4/site-packages/django/core/files/storage.py", line
159, in _save
locks.lock(fd, locks.LOCK_EX)
File "/usr/lib/python2.4/site-packages/django/core/files/locks.py", line
57, in lock
fcntl.lockf(fd(file), flags)
IOError: [Errno 37] No locks available
}}}
The default with RHEL5.2 is NFSv3, and that's what we're using.
Cheers,
Mike
--
Ticket URL: <
http://code.djangoproject.com/ticket/9400>
Django <
http://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.