4768: DNS

Misery

What version are you running?

3.0.10

What's the URL of the page containing the problem?

API

What steps will reproduce the problem?

  1. Create a review request
  2. Try to close review request by API
  3. DNS is not resolvable to send mail
  4. The review request is closed but API call is not succesful because mail cannot be send

What is the expected output? What do you see instead?

Add mail to queue and do not send an error.

What operating system are you using? What browser?

Linux

Please provide any additional information below.

Traceback (most recent call last):

File "/opt/reviewboard/dist/lib/python2.7/site-packages/django/core/handlers/base.py", line 112, in get_response
response = wrapped_callback(request, callback_args, *callback_kwargs)

File "/opt/reviewboard/dist/lib/python2.7/site-packages/django/views/decorators/cache.py", line 52, in _wrapped_view_func
response = view_func(request, args, *kwargs)

File "/opt/reviewboard/dist/lib/python2.7/site-packages/django/views/decorators/vary.py", line 19, in inner_func
response = func(args, *kwargs)

File "/opt/reviewboard/dist/lib/python2.7/site-packages/djblets/webapi/resources/base.py", line 244, in call
request, method, view, api_format=api_format, args, *kwargs)

File "/opt/reviewboard/dist/lib/python2.7/site-packages/reviewboard/webapi/base.py", line 338, in call_method_view
request, method, view, args, *kwargs)

File "/opt/reviewboard/dist/lib/python2.7/site-packages/djblets/webapi/resources/mixins/api_tokens.py", line 66, in call_method_view
request, method, view, args, *kwargs)

File "/opt/reviewboard/dist/lib/python2.7/site-packages/djblets/webapi/resources/mixins/oauth2_tokens.py", line 102, in call_method_view
request, method, view, args, *kwargs)

File "/opt/reviewboard/dist/lib/python2.7/site-packages/djblets/webapi/resources/base.py", line 369, in call_method_view
return view(request, args, *kwargs)

File "/opt/reviewboard/dist/lib/python2.7/site-packages/djblets/webapi/resources/base.py", line 485, in put
return self.update(request, args, *kwargs)

File "/opt/reviewboard/dist/lib/python2.7/site-packages/djblets/webapi/decorators.py", line 125, in _call
return view_func(args, *kwargs)

File "/opt/reviewboard/dist/lib/python2.7/site-packages/reviewboard/webapi/decorators.py", line 169, in _check
return view_func(args, *kwargs)

File "/opt/reviewboard/dist/lib/python2.7/site-packages/djblets/webapi/decorators.py", line 125, in _call
return view_func(args, *kwargs)

File "/opt/reviewboard/dist/lib/python2.7/site-packages/djblets/webapi/decorators.py", line 146, in _checklogin
return view_func(args, *kwargs)

File "/opt/reviewboard/dist/lib/python2.7/site-packages/djblets/webapi/decorators.py", line 125, in _call
return view_func(args, *kwargs)

File "/opt/reviewboard/dist/lib/python2.7/site-packages/djblets/webapi/decorators.py", line 125, in _call
return view_func(args, *kwargs)

File "/opt/reviewboard/dist/lib/python2.7/site-packages/djblets/webapi/decorators.py", line 311, in _validate
return view_func(args, *new_kwargs)

File "/opt/reviewboard/dist/lib/python2.7/site-packages/reviewboard/webapi/resources/review_request.py", line 927, in update
rich_text=close_description_rich_text)

File "/opt/reviewboard/dist/lib/python2.7/site-packages/reviewboard/reviews/models/review_request.py", line 1029, in close
rich_text=rich_text)

File "/opt/reviewboard/dist/lib/python2.7/site-packages/django/dispatch/dispatcher.py", line 185, in send
response = receiver(signal=self, sender=sender, **named)

File "/opt/reviewboard/dist/lib/python2.7/site-packages/reviewboard/notifications/email/signal_handlers.py", line 175, in send_review_request_closed_mail
close_type=close_type)

File "/opt/reviewboard/dist/lib/python2.7/site-packages/reviewboard/notifications/email/utils.py", line 289, in send_email
message = email_builder(**kwargs)

File "/opt/reviewboard/dist/lib/python2.7/site-packages/reviewboard/notifications/email/message.py", line 498, in prepare_review_request_mail
cc_field, 'notifications/review_request_email', extra_context)

File "/opt/reviewboard/dist/lib/python2.7/site-packages/reviewboard/notifications/email/message.py", line 241, in prepare_base_review_request_mail
headers=headers)

File "/opt/reviewboard/dist/lib/python2.7/site-packages/reviewboard/notifications/email/message.py", line 58, in init
**kwargs)

File "/opt/reviewboard/dist/lib/python2.7/site-packages/djblets/mail/message.py", line 182, in init
not is_email_allowed_by_dmarc(parsed_from_email)):

File "/opt/reviewboard/dist/lib/python2.7/site-packages/djblets/mail/dmarc.py", line 306, in is_email_allowed_by_dmarc
dmarc_record = get_dmarc_record(hostname)

File "/opt/reviewboard/dist/lib/python2.7/site-packages/djblets/mail/dmarc.py", line 256, in get_dmarc_record
cache_expiration=cache_expiration)

File "/opt/reviewboard/dist/lib/python2.7/site-packages/djblets/mail/dmarc.py", line 213, in _fetch_dmarc_record
expiration=cache_expiration)

File "/opt/reviewboard/dist/lib/python2.7/site-packages/djblets/cache/backend.py", line 310, in cache_memoize
data = lookup_callable()

File "/opt/reviewboard/dist/lib/python2.7/site-packages/djblets/mail/dmarc.py", line 212, in <lambda>
lambda: _fetch_record(),

File "/opt/reviewboard/dist/lib/python2.7/site-packages/djblets/mail/dmarc.py", line 203, in _fetch_record
'TXT')[0].to_text()

File "/opt/reviewboard/dist/lib/python2.7/site-packages/dns/resolver.py", line 1132, in query
raise_on_no_answer, source_port)

File "/opt/reviewboard/dist/lib/python2.7/site-packages/dns/resolver.py", line 1041, in query
timeout = self._compute_timeout(start)

File "/opt/reviewboard/dist/lib/python2.7/site-packages/dns/resolver.py", line 858, in _compute_timeout
raise Timeout(timeout=duration)

Timeout: The DNS operation timed out after 30.0013279915 seconds

<WSGIRequest
path:/api/review-requests/22178/,
GET:<QueryDict: {}>,
POST:<QueryDict: {u'status': [u'submitted'], u'close_description_text_type': [u'markdown'], u'close_description': [u'Automatically closed by a push (hook): e5e8b8bc1b84']}>,
COOKIES:{'rbsessionid': '...'},
META:{'CONTENT_LENGTH': '474',
'CONTENT_TYPE': 'multipart/form-data; boundary================7717869669730188931==',
'DOCUMENT_ROOT': '/var/lib/nginx/html',
'HTTPS': 'on',
'HTTP_ACCEPT_ENCODING': 'identity',
'HTTP_CONNECTION': 'close',
'HTTP_CONTENT_LENGTH': '474',
'HTTP_CONTENT_TYPE': 'multipart/form-data; boundary================7717869669730188931==',
'HTTP_COOKIE': 'rbsessionid=...',
'HTTP_HOST': 'company.de',
'HTTP_USER_AGENT': 'RBTools/0.7.11',
u'LOCAL_SITE': None,
'PATH_INFO': u'/api/review-requests/22178/',
'QUERY_STRING': '',
'REMOTE_ADDR': '10.211.1.75',
'REMOTE_PORT': '36394',
'REQUEST_METHOD': 'PUT',
'REQUEST_SCHEME': 'https',
'REQUEST_URI': '/api/review-requests/22178/',
u'SCRIPT_NAME': u'',
'SERVER_NAME': 'rb',
'SERVER_PORT': '443',
'SERVER_PROTOCOL': 'HTTP/1.1',
u'USERNAME': u'hook',
u'USER_EMAIL': u'',
'uwsgi.node': 'vpi-rb',
'uwsgi.version': '2.0.17',
'wsgi.errors': <open file 'wsgi_errors', mode 'w' at 0x7f17e695d030>,
'wsgi.file_wrapper': <built-in function uwsgi_sendfile>,
'wsgi.input': <uwsgi._Input object at 0x7f17e16531f8>,
'wsgi.multiprocess': True,
'wsgi.multithread': False,
'wsgi.run_once': False,
'wsgi.url_scheme': u'https',
'wsgi.version': (1, 0)}>