I found the problem that is causing the issue, the tftp not working is caused by rackd outage which is caused by setting up https address in rackd.conf.
I recently opened an issue asking about the tls in maas, what I did not mention though is that all my 3 maas servers are initialised in rack plus region mode.
Now when the address in rackd.conf became https://10.10.10.104 I keep getting the following error
2023-03-05 12:47:59 provisioningserver.rpc.clusterservice: [critical] Failed to contact region. (While requesting RPC info at https://10.10.10.104/MAAS).
Traceback (most recent call last):
File "/snap/maas/26421/usr/lib/python3/dist-packages/twisted/internet/defer.py", line 661, in callback
self._startRunCallbacks(result)
File "/snap/maas/26421/usr/lib/python3/dist-packages/twisted/internet/defer.py", line 763, in _startRunCallbacks
self._runCallbacks()
File "/snap/maas/26421/usr/lib/python3/dist-packages/twisted/internet/defer.py", line 857, in _runCallbacks
current.result = callback( # type: ignore[misc]
File "/snap/maas/26421/usr/lib/python3/dist-packages/twisted/internet/defer.py", line 1750, in gotResult
current_context.run(_inlineCallbacks, r, gen, status)
--- <exception caught here> ---
File "/snap/maas/26421/lib/python3.10/site-packages/provisioningserver/rpc/clusterservice.py", line 1299, in _doUpdate
eventloops, maas_url = yield self._get_rpc_info(urls)
File "/snap/maas/26421/lib/python3.10/site-packages/provisioningserver/rpc/clusterservice.py", line 1558, in _get_rpc_info
raise config_exc
File "/snap/maas/26421/lib/python3.10/site-packages/provisioningserver/rpc/clusterservice.py", line 1529, in _get_rpc_info
eventloops, maas_url = yield self._parallel_fetch_rpc_info(urls)
File "/snap/maas/26421/usr/lib/python3/dist-packages/twisted/internet/defer.py", line 857, in _runCallbacks
current.result = callback( # type: ignore[misc]
File "/snap/maas/26421/lib/python3.10/site-packages/provisioningserver/rpc/clusterservice.py", line 1503, in handle_responses
errors[0].raiseException()
File "/snap/maas/26421/usr/lib/python3/dist-packages/twisted/python/failure.py", line 475, in raiseException
raise self.value.with_traceback(self.tb)
File "/snap/maas/26421/lib/python3.10/site-packages/provisioningserver/rpc/clusterservice.py", line 1464, in _serial_fetch_rpc_info
raise last_exc
File "/snap/maas/26421/lib/python3.10/site-packages/provisioningserver/rpc/clusterservice.py", line 1456, in _serial_fetch_rpc_info
response = yield self._fetch_rpc_info(url, orig_url)
File "/snap/maas/26421/usr/lib/python3/dist-packages/twisted/internet/defer.py", line 1656, in _inlineCallbacks
result = current_context.run(
File "/snap/maas/26421/usr/lib/python3/dist-packages/twisted/python/failure.py", line 489, in throwExceptionIntoGenerator
return g.throw(self.type, self.value, self.tb)
File "/snap/maas/26421/lib/python3.10/site-packages/provisioningserver/rpc/clusterservice.py", line 1558, in _get_rpc_info
raise config_exc
File "/snap/maas/26421/lib/python3.10/site-packages/provisioningserver/rpc/clusterservice.py", line 1529, in _get_rpc_info
eventloops, maas_url = yield self._parallel_fetch_rpc_info(urls)
File "/snap/maas/26421/usr/lib/python3/dist-packages/twisted/internet/defer.py", line 857, in _runCallbacks
current.result = callback( # type: ignore[misc]
File "/snap/maas/26421/lib/python3.10/site-packages/provisioningserver/rpc/clusterservice.py", line 1503, in handle_responses
errors[0].raiseException()
File "/snap/maas/26421/usr/lib/python3/dist-packages/twisted/python/failure.py", line 475, in raiseException
raise self.value.with_traceback(self.tb)
File "/snap/maas/26421/usr/lib/python3/dist-packages/twisted/internet/defer.py", line 1656, in _inlineCallbacks
result = current_context.run(
File "/snap/maas/26421/usr/lib/python3/dist-packages/twisted/python/failure.py", line 489, in throwExceptionIntoGenerator
return g.throw(self.type, self.value, self.tb)
File "/snap/maas/26421/lib/python3.10/site-packages/provisioningserver/rpc/clusterservice.py", line 1464, in _serial_fetch_rpc_info
raise last_exc
File "/snap/maas/26421/lib/python3.10/site-packages/provisioningserver/rpc/clusterservice.py", line 1456, in _serial_fetch_rpc_info
response = yield self._fetch_rpc_info(url, orig_url)
twisted.web._newclient.ResponseNeverReceived: [<twisted.python.failure.Failure OpenSSL.SSL.Error: [('SSL routines', '', 'certificate verify failed')]>]
DNS is also failing to start properly, most likely to rack controllers no having started properly:
2023-03-05 12:46:25 maasserver.ipc: [info] Worker pid:805 registered RPC connection to ('pket84', '10.10.99.101', 5251).
2023-03-05 12:46:26 maasserver.region_controller: [critical] Failed configuring DNS; killing and restarting
Traceback (most recent call last):
File "/snap/maas/26421/usr/lib/python3/dist-packages/twisted/internet/defer.py", line 763, in _startRunCallbacks
self._runCallbacks()
File "/snap/maas/26421/usr/lib/python3/dist-packages/twisted/internet/defer.py", line 857, in _runCallbacks
current.result = callback( # type: ignore[misc]
File "/snap/maas/26421/usr/lib/python3/dist-packages/twisted/internet/defer.py", line 1905, in unwindGenerator
return _cancellableInlineCallbacks(gen)
File "/snap/maas/26421/usr/lib/python3/dist-packages/twisted/internet/defer.py", line 1815, in _cancellableInlineCallbacks
_inlineCallbacks(None, gen, status)
--- <exception caught here> ---
File "/snap/maas/26421/usr/lib/python3/dist-packages/twisted/internet/defer.py", line 1660, in _inlineCallbacks
result = current_context.run(gen.send, result)
File "/snap/maas/26421/lib/python3.10/site-packages/maasserver/region_controller.py", line 287, in _checkSerial
raise DNSReloadError(
maasserver.region_controller.DNSReloadError: Failed to reload DNS; timeout or rdnc command failed.
2023-03-05 12:46:26 provisioningserver.rpc.common: [critical] Unhandled failure dispatching AMP command. This is probably a bug. Please ensure that this error is handled within application code or declared in the signature of the b'ReportNeighbours' command. [maas-ha-1:pid=804:cmd=ReportNeighbours:ask=b3]
Traceback (most recent call last):
File "/snap/maas/26421/usr/lib/python3/dist-packages/twisted/internet/asyncioreactor.py", line 271, in _onTimer
self.runUntilCurrent()
File "/snap/maas/26421/usr/lib/python3/dist-packages/twisted/internet/base.py", line 991, in runUntilCurrent
call.func(*call.args, **call.kw)
File "/snap/maas/26421/usr/lib/python3/dist-packages/twisted/internet/defer.py", line 700, in errback
self._startRunCallbacks(fail)
File "/snap/maas/26421/usr/lib/python3/dist-packages/twisted/internet/defer.py", line 763, in _startRunCallbacks
self._runCallbacks()
--- <exception caught here> ---
File "/snap/maas/26421/usr/lib/python3/dist-packages/twisted/internet/defer.py", line 857, in _runCallbacks
current.result = callback( # type: ignore[misc]
File "/snap/maas/26421/usr/lib/python3/dist-packages/twisted/protocols/amp.py", line 1138, in checkKnownErrors
key = error.trap(*command.allErrors)
File "/snap/maas/26421/usr/lib/python3/dist-packages/twisted/python/failure.py", line 451, in trap
self.raiseException()
File "/snap/maas/26421/usr/lib/python3/dist-packages/twisted/python/failure.py", line 475, in raiseException
raise self.value.with_traceback(self.tb)
File "/snap/maas/26421/usr/lib/python3/dist-packages/twisted/python/threadpool.py", line 244, in inContext
result = inContext.theWork() # type: ignore[attr-defined]
File "/snap/maas/26421/usr/lib/python3/dist-packages/twisted/python/threadpool.py", line 260, in <lambda>
inContext.theWork = lambda: context.call( # type: ignore[attr-defined]
File "/snap/maas/26421/usr/lib/python3/dist-packages/twisted/python/context.py", line 117, in callWithContext
return self.currentContext().callWithContext(ctx, func, *args, **kw)
File "/snap/maas/26421/usr/lib/python3/dist-packages/twisted/python/context.py", line 82, in callWithContext
return func(*args, **kw)
File "/snap/maas/26421/lib/python3.10/site-packages/provisioningserver/utils/twisted.py", line 856, in callInContext
return func(*args, **kwargs)
File "/snap/maas/26421/lib/python3.10/site-packages/provisioningserver/utils/twisted.py", line 203, in wrapper
result = func(*args, **kwargs)
File "/snap/maas/26421/lib/python3.10/site-packages/maasserver/utils/orm.py", line 771, in call_within_transaction
return func_outside_txn(*args, **kwargs)
File "/snap/maas/26421/lib/python3.10/site-packages/maasserver/utils/orm.py", line 587, in retrier
return func(*args, **kwargs)
File "/usr/lib/python3.10/contextlib.py", line 79, in inner
return func(*args, **kwds)
File "/snap/maas/26421/lib/python3.10/site-packages/maasserver/rpc/rackcontrollers.py", line 276, in report_neighbours
rack_controller.report_neighbours(neighbours)
File "/snap/maas/26421/lib/python3.10/site-packages/maasserver/models/node.py", line 6448, in report_neighbours
interface.update_neighbour(
File "/snap/maas/26421/lib/python3.10/site-packages/maasserver/models/interface.py", line 1567, in update_neighbour
neighbour.save(update_fields=["time", "count", "updated"])
File "/snap/maas/26421/lib/python3.10/site-packages/maasserver/models/cleansave.py", line 48, in save
return super().save(*args, **kwargs)
File "/snap/maas/26421/lib/python3.10/site-packages/maasserver/models/timestampedmodel.py", line 78, in save
return super().save(*args, **kwargs)
File "/snap/maas/26421/usr/lib/python3/dist-packages/django/db/models/base.py", line 739, in save
self.save_base(using=using, force_insert=force_insert,
File "/snap/maas/26421/usr/lib/python3/dist-packages/django/db/models/base.py", line 776, in save_base
updated = self._save_table(
File "/snap/maas/26421/usr/lib/python3/dist-packages/django/db/models/base.py", line 858, in _save_table
updated = self._do_update(base_qs, using, pk_val, values, update_fields,
File "/snap/maas/26421/usr/lib/python3/dist-packages/django/db/models/base.py", line 912, in _do_update
return filtered._update(values) > 0
File "/snap/maas/26421/usr/lib/python3/dist-packages/django/db/models/query.py", line 802, in _update
return query.get_compiler(self.db).execute_sql(CURSOR)
File "/snap/maas/26421/usr/lib/python3/dist-packages/django/db/models/sql/compiler.py", line 1559, in execute_sql
cursor = super().execute_sql(result_type)
File "/snap/maas/26421/usr/lib/python3/dist-packages/django/db/models/sql/compiler.py", line 1175, in execute_sql
cursor.execute(sql, params)
File "/snap/maas/26421/usr/lib/python3/dist-packages/django/db/backends/utils.py", line 66, in execute
return self._execute_with_wrappers(sql, params, many=False, executor=self._execute)
File "/snap/maas/26421/usr/lib/python3/dist-packages/django/db/backends/utils.py", line 75, in _execute_with_wrappers
return executor(sql, params, many, context)
File "/snap/maas/26421/usr/lib/python3/dist-packages/django/db/backends/utils.py", line 79, in _execute
with self.db.wrap_database_errors:
File "/snap/maas/26421/usr/lib/python3/dist-packages/django/db/utils.py", line 90, in __exit__
raise dj_exc_value.with_traceback(traceback) from exc_value
File "/snap/maas/26421/usr/lib/python3/dist-packages/django/db/backends/utils.py", line 84, in _execute
return self.cursor.execute(sql, params)
django.db.utils.OperationalError: could not serialize access due to concurrent update
I know that setting it up back to http will not resolve this as nginx will do automatic tls termination.
Is there any reasonable way to approach this?