Open Bug 1230862 Opened 9 years ago Updated 2 years ago

Remove mozhttpd

Categories

(Testing :: Mozbase, defect)

defect

Tracking

(Not tracked)

People

(Reporter: Ms2ger, Unassigned)

References

Details

Attachments

(2 files)

Per bug 1150512, it is unsupported.
Personally I don't see anything wrong with keeping it in the tree in its deprecated state, at least as long as there are things using it. I'm still happy to accept/review patches to mozhttpd that fix bugs, I just don't want to add any new features to it.
I'm in favor of removing it, since it is deprecated. I can work on it.
Oups, I did not meant to show those try pushes;

Anyway, as you can see I started looked at it. It works fine as far as I see, I believe the only drawback is for running talos jobs as we need to make it use wptserve in-tree version.

https://treeherder.mozilla.org/#/jobs?repo=try&revision=38793fe76afa

Should test that (already working fine locally).

Maybe a full try will help, to ensure nothing is broken - but I think that mozhttpd was mainly used for mozbase tests, which are run anyway with a basic push try.
(In reply to Julien Pagès (:parkouss) from comment #5)

> Maybe a full try will help, to ensure nothing is broken - but I think that
> mozhttpd was mainly used for mozbase tests, which are run anyway with a
> basic push try.

I mean for things that can break try. mozhttpd was used for a lot of other things, here are my patches so far:

https://hg.mozilla.org/try/rev/177e31f25215
https://hg.mozilla.org/try/rev/38793fe76afa
Maybe it might make sense to convert all existing project to wptserve first?

https://dxr.mozilla.org/mozilla-central/search?q=mozhttpd&redirect=true&case=false
(In reply to Henrik Skupin (:whimboo) from comment #7)
> Maybe it might make sense to convert all existing project to wptserve first?
> 
> https://dxr.mozilla.org/mozilla-central/
> search?q=mozhttpd&redirect=true&case=false

This is done with the first patch, https://hg.mozilla.org/try/rev/177e31f25215, unless I am misunderstanding.
Oh, never mind then! :)
all green. I guess :wlach is a good person to ask for review for that, given that he is ok to remove mozhttpd. :)
Comment on attachment 8714908 [details]
MozReview Request: Bug 1230862 - remove mozhttpd dependency for Talos. r=jmaher

https://reviewboard.mozilla.org/r/33259/#review30601

Two very minor changes that are more a matter of personal taste than anything else. This looks great! I'd be happy to see this land as-is, even better if my personal nits are addressed. :)

::: testing/mozbase/mozcrash/tests/test.py:169
(Diff revision 1)
> -        def get_symbols(req):
> +        @handlers.handler

I would add a newline before ```@handlers.handler``` here.

::: testing/mozbase/mozprofile/tests/test_preferences.py:370
(Diff revision 1)
> +                                    % httpd.httpd.server_address)

Note that important, but I think it makes more sense to put the % on the previous line.
Attachment #8714908 - Flags: review?(wlachance) → review+
Comment on attachment 8714909 [details]
MozReview Request: Bug 1230862 - replace mozhttpd with wptserve. r=wlach

https://reviewboard.mozilla.org/r/33261/#review30621
Attachment #8714909 - Flags: review?(wlachance) → review+
I fixed the nits and landed the patches.
Assignee: nobody → j.parkouss
Status: NEW → ASSIGNED
backed this out seems this caused https://treeherder.mozilla.org/logviewer.html#?job_id=21414859&repo=mozilla-inbound which turned into a perma failure after this push
Flags: needinfo?(j.parkouss)
Thanks Carsten, and sorry for this.

Looks like it is a failure of talos g2 on windows 7 and 8 (maybe mac osx also):

https://treeherder.mozilla.org/#/jobs?repo=mozilla-inbound&revision=8bbaec3ed0f0&selectedJob=21409294

Other talos jobs and others platforms seems good. :jmaher, any idea ?
Flags: needinfo?(j.parkouss) → needinfo?(jmaher)
I suspect after reading a few logs that we are running out of memory on the machine- hence causing firefox to hang.

Could we look at wptserve and see if there is a way to measure the memory of the python process while serving a bunch of memory.  Maybe compare before/after of the overall OS on a set of runs?
Flags: needinfo?(jmaher)
Be careful about try runs - 10.10 g2 wound up putting something in the log that matches one of the strings that causes buildbot to auto-retry, so unless you cancel it it will infinitely retry.
(In reply to Joel Maher (:jmaher) from comment #21)
> I suspect after reading a few logs that we are running out of memory on the
> machine- hence causing firefox to hang.
> 
> Could we look at wptserve and see if there is a way to measure the memory of
> the python process while serving a bunch of memory.  Maybe compare
> before/after of the overall OS on a set of runs?

Thanks Joel for the answer! Indeed, I wrote a new server from scratch, and this time g2 seems good:

https://treeherder.mozilla.org/#/jobs?repo=try&revision=84d7aa647615&selectedJob=16587024

There is an issue with S on win7 though, but I suspect it is either an intermittent, or a bad base for my try (PROCESS_CRASH).

I triggered some more jobs, just to be sure. I'll ask you for a review if that works, will be https://hg.mozilla.org/try/rev/cd80c2cbef37 with a better commit message. Roughly a pure python webserver, ran in a new process instead of mozhttpd or wptserve.
The only concern I have here is that we already have mozhttpd which works and then switching to wptserve failed and now we are just rewriting another thing from scratch.  It sounds like running in a new process is the big win here- to me that is critical and useful to write code from scratch.

This falls back to understanding the problem more, or maybe understanding what bug we are really solving here by not using mozhttpd.

:parkouss, there is a big old problem with 's' on windows right now due to some changes in new tab, if you were to push to try with no changes, you would see this as well.
So, we looked at that in depth, and wptserve is doing a full read() on file, and returning whole file contents as byte string. It does so to be able to apply filters on the content, according to jgraham.

mozhttpd is using SImpleHttpServer under the hood (which I used here also), and this read content by chunks of 16k - so I think this is the issue for us.

It seems that we could write something like a SimpleFileHandler and hook that in wptserve. At this point I wonder if the server wrote from scratch here isn't a better alternative, since it is 5 lines of code and that talos needs for the web server are low (only static serving). Plus it is in a new process, which probably is better - but may/will alter numbers.
thanks for the explanation.  I suggest we file bugs on wptserve and go forward with this implementation- it is simple and easy to hack on as needed.
Comment on attachment 8714908 [details]
MozReview Request: Bug 1230862 - remove mozhttpd dependency for Talos. r=jmaher

Review request updated; see interdiff: https://reviewboard.mozilla.org/r/33259/diff/1-2/
Attachment #8714908 - Attachment description: MozReview Request: Bug 1230862 - Remove mozhttpd. r=wlach → MozReview Request: Bug 1230862 - remove mozhttpd dependency for Talos. r=jmaher
Attachment #8714908 - Flags: review?(jmaher)
Attachment #8714909 - Attachment description: MozReview Request: Bug 1230862 - use wptserve in-tree for talos. r=wlach → MozReview Request: Bug 1230862 - replace mozhttpd with wptserve. r=wlach
Comment on attachment 8714909 [details]
MozReview Request: Bug 1230862 - replace mozhttpd with wptserve. r=wlach

Review request updated; see interdiff: https://reviewboard.mozilla.org/r/33261/diff/1-2/
Attachment #8714908 - Flags: review?(jmaher) → review+
Comment on attachment 8714908 [details]
MozReview Request: Bug 1230862 - remove mozhttpd dependency for Talos. r=jmaher

https://reviewboard.mozilla.org/r/33259/#review31205

please just explain the open(os.devnull) in a comment, the patch looks great.  Just to confirm, this works with --develop mode?

::: testing/talos/talos/run_tests.py:75
(Diff revision 2)
> -    return mozhttpd.MozHttpd(host=host, port=int(port), docroot=here)
> +    with open(os.devnull, 'w') as null:

I am not familiar with open os.devnull.
Valgring build is busted, I have the feeling that it is for the same reason.

The bug assignee didn't login in Bugzilla in the last 7 months.
:gbrown, could you have a look please?
For more information, please visit auto_nag documentation.

Assignee: j.parkouss → nobody
Status: ASSIGNED → NEW
Flags: needinfo?(gbrown)
Flags: needinfo?(gbrown)
Severity: normal → S3
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: