What could be causing the error above? I’ve taken a cursory look at the code. Here’s the full dump:
2019-10-07 19:40:01 maasserver.websockets.protocol: [critical] Error on request (165) machine.action: Failed to retrieve curtin config: 'NoneType' object has no attribute 'url'
Traceback (most recent call last):
File "/usr/lib/python3.6/threading.py", line 864, in run
self._target(*self._args, **self._kwargs)
File "/usr/lib/python3/dist-packages/provisioningserver/utils/twisted.py", line 852, in worker
return target()
File "/usr/lib/python3/dist-packages/twisted/_threads/_threadworker.py", line 46, in work
task()
File "/usr/lib/python3/dist-packages/twisted/_threads/_team.py", line 190, in doWork
task()
--- <exception caught here> ---
File "/usr/lib/python3/dist-packages/twisted/python/threadpool.py", line 250, in inContext
result = inContext.theWork()
File "/usr/lib/python3/dist-packages/twisted/python/threadpool.py", line 266, in <lambda>
inContext.theWork = lambda: context.call(ctx, func, *args, **kw)
File "/usr/lib/python3/dist-packages/twisted/python/context.py", line 122, in callWithContext
return self.currentContext().callWithContext(ctx, func, *args, **kw)
File "/usr/lib/python3/dist-packages/twisted/python/context.py", line 85, in callWithContext
return func(*args,**kw)
File "/usr/lib/python3/dist-packages/provisioningserver/utils/twisted.py", line 885, in callInContext
return func(*args, **kwargs)
File "/usr/lib/python3/dist-packages/provisioningserver/utils/twisted.py", line 234, in wrapper
result = func(*args, **kwargs)
File "/usr/lib/python3/dist-packages/maasserver/utils/orm.py", line 756, in call_within_transaction
return func_outside_txn(*args, **kwargs)
File "/usr/lib/python3/dist-packages/maasserver/utils/orm.py", line 563, in retrier
return func(*args, **kwargs)
File "/usr/lib/python3.6/contextlib.py", line 52, in inner
return func(*args, **kwds)
File "/usr/lib/python3/dist-packages/maasserver/websockets/base.py", line 402, in prep_user_execute
method_name, method, params)
File "/usr/lib/python3/dist-packages/maasserver/websockets/base.py", line 421, in _call_method_track_queries
result = method(params)
File "/usr/lib/python3/dist-packages/maasserver/websockets/handlers/machine.py", line 891, in action
return action.execute(**extra_params)
File "/usr/lib/python3/dist-packages/maasserver/node_action.py", line 172, in execute
self._execute(*args, **kwargs)
File "/usr/lib/python3/dist-packages/maasserver/node_action.py", line 510, in _execute
"Failed to retrieve curtin config: %s" % e)
maasserver.exceptions.NodeActionError: Failed to retrieve curtin config: 'NoneType' object has no attribute 'url'
request
is an HttpRequest
object going into the try
, but url
is missing for some reason. The if
condition is getting skipped (on check for None
) because request
is not None
; only request.url
is seemingly missing.
The self
object and self.request
object contain:
=> /var/log/maas/regiond.log <==
2019-10-08 18:32:21 stdout: [info] { 'endpoint': 1,
2019-10-08 18:32:21 stdout: [info] 'node': <Machine: qhytrx (njdcsbcpu01)>,
2019-10-08 18:32:21 stdout: [info] 'request': <HttpRequest>,
2019-10-08 18:32:21 stdout: [info] 'user': <User: user>}
2019-10-08 18:32:21 stdout: [info] { 'COOKIES': {},
2019-10-08 18:32:21 stdout: [info] 'FILES': <MultiValueDict: {}>,
2019-10-08 18:32:21 stdout: [info] 'GET': <QueryDict: {}>,
2019-10-08 18:32:21 stdout: [info] 'META': { 'HTTP_USER_AGENT': 'Mozilla/5.0 (Macintosh; Intel Mac OS X '
2019-10-08 18:32:21 stdout: [info] '10_14_6) AppleWebKit/537.36 (KHTML, like '
2019-10-08 18:32:21 stdout: [info] 'Gecko) Chrome/77.0.3865.90 Safari/537.36',
2019-10-08 18:32:21 stdout: [info] 'REMOTE_ADDR': '::ffff:105.210.153.254',
2019-10-08 18:32:21 stdout: [info] 'SERVER_NAME': 'URL.io',
2019-10-08 18:32:21 stdout: [info] 'SERVER_PORT': 5240},
2019-10-08 18:32:21 stdout: [info] 'POST': <QueryDict: {}>,
2019-10-08 18:32:21 stdout: [info] '_post_parse_error': False,
2019-10-08 18:32:21 stdout: [info] 'content_params': None,
2019-10-08 18:32:21 stdout: [info] 'content_type': None,
2019-10-08 18:32:21 stdout: [info] 'method': None,
2019-10-08 18:32:21 stdout: [info] 'path': '',
2019-10-08 18:32:21 stdout: [info] 'path_info': '',
2019-10-08 18:32:21 stdout: [info] 'resolver_match': None,
2019-10-08 18:32:21 stdout: [info] 'user': <User: cms>}
Obviously, HttpRequest.url
is None, but the check only exists on checking request
for None. It is still not clear yet why request.url
is None
.