Edgewall Software

Ticket #7049 (closed defect: fixed)

Opened 5 months ago

Last modified 5 weeks 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@…

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

no-auto-reload-deamonize.patch (1.2 kB) - added by Remy Blank <remy.blank@…> 5 weeks ago.
Patch against 0.11-stable [7363] disallowing --auto-reload with --deamonize

Change History

  Changed 5 months ago by eblot

  • description modified (diff)

in reply to: ↑ description   Changed 5 months ago by eblot

Replying to bschmer@yahoo.com:

When using --daemonize and --auto-reload at the same time the background daemon process exits neatly without any explanation.

See ticket:4531:6

  Changed 5 months 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 5 weeks ago by Remy Blank <remy.blank@…>

Patch against 0.11-stable [7363] disallowing --auto-reload with --deamonize

  Changed 5 weeks ago by Remy Blank <remy.blank@…>

  • cc remy.blank@… added
  • keywords patch added

  Changed 5 weeks ago by cboos

  • owner changed from jonas to remy.blank@…
  • type changed from enhancement to defect
  • milestone changed from 0.11.2 to 0.11.1

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.

  Changed 5 weeks ago by cboos

  • status changed from new to closed
  • resolution set to fixed

Patch applied in r7380.

Add/Change #7049 (tracd: --daemonize and --auto-reload don't cohabitate happily)

Author



Change Properties
<Author field>
Action
as closed
Next status will be 'reopened'
 
Note: See TracTickets for help on using tickets.