HTTP 0 error with larger reviews (Docker image)

35 views
Skip to first unread message

Ben ST

unread,
Sep 26, 2019, 11:39:18 AM9/26/19
to Review Board Community
I have installed ReviewBoard using Docker and the ikatson/reviewboard image. I thought it was all working and some small test diffs I posted worked fine. Then when we tried to use some real diffs that were a bit larger, ReviewBoard shows "Saving" for a long time (~60 seconds) and gives a "HTTP 0" error. See attached screen shot.

This is not a stupidly large diff. It's around 50 files, and an attached 6MB movie. The diff upload itself, and attaching the movie, work fine. The error happens when you try to publish. I am using HTTP on port 8000.

Does anyone know what is causing this? Thanks.

ReviewBoard log:

2019-09-26 11:23:59,273 - INFO -  - root - Reloading logging settings
2019-09-26 11:24:02,977 - DEBUG - None - bestave - /reviews/r/1/_fragments/diff-comments/1/ - root - Begin: Generating diff file info for diffset id 1, filediff 2
2019-09-26 11:24:03,632 - DEBUG - None - bestave - /reviews/r/1/_fragments/diff-comments/1/ - root - End: Generating diff file info for diffset id 1, filediff 2
2019-09-26 11:24:03,633 - DEBUG - None - bestave - /reviews/r/1/_fragments/diff-comments/1/ - root - Generating diff file info for diffset id 1, filediff 2 took 0.655330 seconds
2019-09-26 11:25:17,069 - DEBUG -  - root - Calculated issue counts for review request ID 1 across 1 review(s): Resulting counts = {u'A': 0, u'B': 0, u'R': 0, u'D': 0, u'O': 1}; DB values = [{u'screenshot_comments__issue_status': None, u'general_comments__issue_opened': True, u'file_attachment_comments__pk': None, u'screenshot_comments__issue_opened': None, u'comments__pk': None, u'general_comments__pk': 1, u'comments__issue_opened': None, u'general_comments__issue_status': u'O', u'file_attachment_comments__issue_opened': None, u'screenshot_comments__pk': None, u'comments__issue_status': None, u'file_attachment_comments__issue_status': None}]; Field IDs = {u'screenshot_comments': set([]), u'general_comments': set([1]), u'comments': set([]), u'file_attachment_comments': set([])}


Chrome console (also in a screen shot):
base.min.af574b99af97.js:3 [Deprecation] The Notification API may no longer be used from insecure origins. You should consider switching your application to a secure origin, such as HTTPS. See https://goo.gl/rStTGz for more details.
setup @ base.min.af574b99af97.js:3
:8000/reviews/api/review-requests/1/reviews/draft/?1569497084270&api_format=json&force-text-type=html&include-text-types=raw%2Cmarkdown:1 Failed to load resource: the server responded with a status of 404 (NOT FOUND)
reviews.min.62c9e1499e46.js:5 Failed to save review Arguments(2)0: r {cid: "c20", attributes: {…}, _changing: false, _previousAttributes: {…}, changed: {…}, …}attributes: {parentObject: r, publishToOwnerOnly: false, forceTextType: "html", shipIt: false, public: true, …}changed: {}cid: "c20"extraData: r {cid: "c21", attributes: {…}, _changing: false, _previousAttributes: {…}, changed: {…}, …}id: 2validationError: null_changing: false_events: {saving: Array(1), destroying: Array(1), saved: Array(3), destroyed: Array(1), publishError: Array(1), …}_listenerId: "l70"_listeners: {l22: r}_needDraft: false_pending: false_previousAttributes: {parentObject: r, publishToOwnerOnly: false, forceTextType: "html", shipIt: false, public: true, …}__proto__: r1: {readyState: 0, getResponseHeader: ƒ, getAllResponseHeaders: ƒ, setRequestHeader: ƒ, overrideMimeType: ƒ, …}callee: (...)length: 2Symbol(Symbol.iterator): ƒ values()get callee: ƒ ()set callee: ƒ ()__proto__: Object
error @ reviews.min.62c9e1499e46.js:5
:8000/reviews/api/review-requests/1/reviews/2/:1 Failed to load resource: net::ERR_EMPTY_RESPONSE
:8000/reviews/api/review-requests/1/last-update/?api_format=json:1 Failed to load resource: net::ERR_CONNECTION_REFUSED


Chrome console.png
HTTP 0.png

Christian Hammond

unread,
Oct 1, 2019, 2:51:48 PM10/1/19
to revie...@googlegroups.com
Hi Ben,

If this is happening at Publish time, then my first guess would be that something is going wrong with sending an e-mail. That, or custom WebHooks, are the only blocking operations that exist in the publish process (we do want to make these non-blocking in the future, fwiw).

Try disabling e-mails entirely and see if that fixes the problem. WebHooks as well, if they're configured.

What concerns me a bit is the Connection Refused errors. I looked at the Docker image and I suspect part of what's happening is that uwsgi (set up in the image) is running multi-threaded but only with a single process. This can lead to blocking issues. You're really going to want to update that to use multiple processes, for things like this. Maybe start with 10, go up from there. You'll have to determine what numbers are best for your scale (and how many Docker instances you plan to run). It doesn't look like the image natively supports customizing this, so you'll probably have to fork the image.

Christian

--
Supercharge your Review Board with Power Pack: https://www.reviewboard.org/powerpack/
Want us to host Review Board for you? Check out RBCommons: https://rbcommons.com/
Happy user? Let us know! https://www.reviewboard.org/users/
---
You received this message because you are subscribed to the Google Groups "Review Board Community" group.
To unsubscribe from this group and stop receiving emails from it, send an email to reviewboard...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/reviewboard/f3c23013-c624-4ada-a71c-ac6e6585eb5e%40googlegroups.com.


--
Christian Hammond
President/CEO of Beanbag
Makers of Review Board

Ben ST

unread,
Oct 3, 2019, 1:42:44 PM10/3/19
to Review Board Community
Thanks very much for the reply, Christian. You're absolutely right and it is the email send that is hanging. It works fine configured the same way outside of a Docker container. The odd thing is that after the hang and timeout the email does actually get delivered, so it's not a complete network failure.

I'll have to figure out what Docker is doing. Can you tell me anything about how RB sends the emails -- does it use some particular subsystem?

I tried setting uwsgi to use multiple processes but it didn't make a difference.

-- Ben.

To unsubscribe from this group and stop receiving emails from it, send an email to revie...@googlegroups.com.
Reply all
Reply to author
Forward
0 new messages