lp:~james-w/python-timeline-django/clean-env
- Get this branch:
- bzr branch lp:~james-w/python-timeline-django/clean-env
Branch merges
- Natalia Bidart (community): Approve
-
Diff: 164 lines (+79/-11)4 files modifiedtimeline_django/hooks.py (+12/-7)
timeline_django/tests/test_hooks.py (+6/-0)
timeline_django/tests/test_wsgi.py (+48/-3)
timeline_django/wsgi.py (+13/-1)
Branch information
Recent revisions
- 23. By James Westby
-
Be more careful about leaking objects.
1. Register signals with a dispatch_uid so that if register is called
twice there aren't double receivers. There is a very slim chance that
someone could two want two sets of receivers with timeline_factories
that get different timelines. In that case this should be rewritten
to not use dispatch_uid and offer a disconnect method that can be
used in tests etc.2. Re-set the environ stored in the thread local after the wsgi response
is delivered. In a case where some requests go through wsgi and some
don't (e.g. tests) the environ would leak in to those that don't use
wsgi. This could lead to an ever-growing timeline. - 22. By James Westby
-
Properly handle absence of query in filters
This fixes a TypeError that triggered because django-statsd db patches
caused a max recursion exception that propagated up until the filters,
rendering the query parameter of them as None. Because of this, while
the error was really passed through oops, the final error reported to
the user was related to python-timeline- django. - 20. By James Westby
-
Save the environ before sending the wsgi_request_
started signal. Code that listens to the wsgi_request_
started signal may want to use the
environ, but instead of using the one passed to the signal, it may
call get_environ() to get the saved version. That has to be the
current request's environ, not any previous request, so save the environ
before triggering the signal. - 19. By James Westby
-
Add signals for the start of the wsgi request and start of the response.
The django signal for request-finished fires when the client has consumed
the response. However, when generating an oops it can be done before this
meaning that the timeline doesn't have a reference for an end point.
This defines a response-started signal that fires when start_response
is called in the wsgi stack, making it more likely that there will be
an end point in the timeline. - 18. By James Westby
-
Drop the model signal handlers.
They cause a lot of noise in the timeline, and slow down all requests,
for little benefit. The context they provide for db queries can
just as easily be inferred from the backtraces on the queries.
Branch metadata
- Branch format:
- Branch format 7
- Repository format:
- Bazaar repository format 2a (needs bzr 1.16 or later)
- Stacked on:
- lp:python-timeline-django