Ticket #7049 (closed defect: fixed)
Opened 4 years ago
Last modified 4 years ago
tracd: --daemonize and --auto-reload don't cohabitate happily
| Reported by: | bschmer@… | Owned by: | remy.blank@… |
|---|---|---|---|
| Priority: | normal | Milestone: | 0.11.1 |
| Component: | web frontend/tracd | Version: | |
| Severity: | normal | Keywords: | patch |
| Cc: | remy.blank@… | ||
| Release Notes: | |||
| API Changes: | |||
Description (last modified by eblot) (diff)
When using —daemonize and —auto-reload at the same time the background daemon process exits neatly without any explanation. Having done some digging around, it seems that the root of the problem is in _restart_with_reloader() at utils/autoreload.py line 55. When os.spawnve is called, it uses the full sys.argv which includes the —daemonize argument. My fix for this is:
eng:util qa$ diff -c autoreload.py autoreload.py.save
*** autoreload.py Tue Mar 25 16:52:18 2008
--- autoreload.py.save Tue Mar 25 16:14:51 2008
***************
*** 55,63 ****
def _restart_with_reloader():
while True:
args = [sys.executable] + sys.argv
- if args.count('--daemonize'):
- # Stop the insanity
- args.remove('--daemonize')
if sys.platform == 'win32':
args = ['"%s"' % arg for arg in args]
new_environ = os.environ.copy()
--- 55,60 ----
eng:util qa$
With the logic for removing these arguments being:
- The main program already daemonized, so it doesn't need to be done again
- Things started working more like what I expected after making the change
Attachments
Change History
comment:1 Changed 4 years ago by eblot
- Description modified (diff)
comment:2 in reply to: ↑ description Changed 4 years ago by eblot
comment:3 Changed 4 years ago by cboos
- Milestone set to 0.11.1
Things started working more like what I expected after making the change
But what did you expect, precisely? To me, --auto-reload is only meant to be used while developing Trac or plugins, and --daemonize when you use it for "production".
Do you have an use case where they would be useful at the same time?
Also pay attention to the fact that --auto-reload has a not so insignificant performance cost, as there will be a process continuously monitoring for source code changes.
So I think we should rather bark when those two options are used together.
(minor nit-pick: please also have a look about how to create nice patches: TracDev/SubmittingPatches)
Changed 4 years ago by Remy Blank <remy.blank@…>
- Attachment no-auto-reload-deamonize.patch added
Patch against 0.11-stable [7363] disallowing —auto-reload with —deamonize
comment:4 Changed 4 years ago by Remy Blank <remy.blank@…>
- Cc remy.blank@… added
- Keywords patch added
comment:5 Changed 4 years ago by cboos
- Milestone changed from 0.11.2 to 0.11.1
- Owner changed from jonas to remy.blank@…
- Type changed from enhancement to defect
I'm OK with the patch.
Does anyone has a valid use case for using --daemonize and --auto-reload at the same time? If nobody speaks up, I'll commit the patch for 0.11.1.
comment:6 Changed 4 years ago by cboos
- Resolution set to fixed
- Status changed from new to closed
Patch applied in r7380.



Replying to bschmer@yahoo.com:
See ticket:4531:6