[Django] #25022: collectstatic create self-referential symlink

18 views
Skip to first unread message

Django

unread,
Jun 24, 2015, 10:15:58 AM6/24/15
to django-...@googlegroups.com
#25022: collectstatic create self-referential symlink
-----------------------------------------------+------------------------
Reporter: aaugustin | Owner: nobody
Type: Bug | Status: new
Component: contrib.staticfiles | Version: 1.7
Severity: Normal | Keywords:
Triage Stage: Unreviewed | Has patch: 0
Needs documentation: 0 | Needs tests: 0
Patch needs improvement: 0 | Easy pickings: 0
UI/UX: 0 |
-----------------------------------------------+------------------------
This has happened twice on our CI server, but I'm not sure how.

Relevant settings:

{{{
STATICFILES_DIRS = ('/var/lib/jenkins/jobs/project-pr-
endtoend/workspace/frontend/dist',)
STATICFILES_STORAGE =
'django.contrib.staticfiles.storage.ManifestStaticFilesStorage'
STATIC_ROOT = '/var/lib/jenkins/jobs/project-pr-
endtoend/workspace/project/static'
STATIC_URL = '/static/'
}}}

Collectstatic command:

{{{
django-admin collectstatic --noinput --clear --link
}}}

(Possibly run several times in a row, with the same or different static
files.)

We ended up with `'/var/lib/jenkins/jobs/project-pr-
endtoend/workspace/project/static/img/icon-sd3b7ad043d.png'` which was a
symlink to itself.

This prevented gunicorn from starting because we use whitenoise to serve
static files, whitenoise scans the entire static directory on startup, and
it couldn't `stat` a self-referential symlink.

This is quite surprising because:

- If I clear the directory and re-run collectstatic, I cannot reproduce
the issue
- I expect --clear to wipe the directory first
- I don't expect --link to create a self-referential symlink

(This may end up as needsinfo if I don't dig into the details and we can't
figure out the bug from the code. But even then it may help someone who
stumbles upon the same problem.)

--
Ticket URL: <https://code.djangoproject.com/ticket/25022>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.

Django

unread,
Jul 2, 2015, 2:57:37 PM7/2/15
to django-...@googlegroups.com
#25022: collectstatic create self-referential symlink
-------------------------------------+------------------------------------

Reporter: aaugustin | Owner: nobody
Type: Bug | Status: new
Component: contrib.staticfiles | Version: 1.7
Severity: Normal | Resolution:
Keywords: | Triage Stage: Accepted

Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
-------------------------------------+------------------------------------
Changes (by timgraham):

* stage: Unreviewed => Accepted


--
Ticket URL: <https://code.djangoproject.com/ticket/25022#comment:1>

Django

unread,
Aug 25, 2015, 9:33:40 AM8/25/15
to django-...@googlegroups.com
#25022: collectstatic create self-referential symlink
-------------------------------------+------------------------------------

Reporter: aaugustin | Owner: nobody
Type: Bug | Status: new
Component: contrib.staticfiles | Version: 1.7
Severity: Normal | Resolution:
Keywords: | Triage Stage: Accepted
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
-------------------------------------+------------------------------------
Changes (by edmorley):

* cc: emorley@… (added)


--
Ticket URL: <https://code.djangoproject.com/ticket/25022#comment:2>

Django

unread,
Feb 11, 2021, 3:09:15 AM2/11/21
to django-...@googlegroups.com
#25022: collectstatic create self-referential symlink
-------------------------------------+-------------------------------------
Reporter: Aymeric Augustin | Owner: nobody
Type: Bug | Status: closed
Component: contrib.staticfiles | Version: 1.7
Severity: Normal | Resolution: needsinfo
Keywords: | Triage Stage: Accepted

Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------
Changes (by Carlton Gibson):

* status: new => closed
* resolution: => needsinfo


Comment:

> This may end up as needsinfo...

Reviewing this, I can't reproduce with the details, so I think 6 years
later we can say that a test case or project showing the issue to be
Django's is probably needed.

--
Ticket URL: <https://code.djangoproject.com/ticket/25022#comment:3>

Reply all
Reply to author
Forward
0 new messages