After writing this up, I rebooted the maas server and noticed a couple things I didnt notice before... first, in clusterd.log there is a traceback when the cluster restarted: 2015-09-10 14:21:47-0400 [-] Unhandled error in Deferred: 2015-09-10 14:21:47-0400 [-] Unhandled Error Traceback (most recent call last): File "/usr/lib/python2.7/threading.py", line 783, in __bootstrap self.__bootstrap_inner() File "/usr/lib/python2.7/threading.py", line 810, in __bootstrap_inner self.run() File "/usr/lib/python2.7/threading.py", line 763, in run self.__target(*self.__args, **self.__kwargs) --- --- File "/usr/lib/python2.7/dist-packages/twisted/python/threadpool.py", line 191, in _worker result = context.call(ctx, function, *args, **kwargs) File "/usr/lib/python2.7/dist-packages/twisted/python/context.py", line 118, in callWithContext return self.currentContext().callWithContext(ctx, func, *args, **kw) File "/usr/lib/python2.7/dist-packages/twisted/python/context.py", line 81, in callWithContext return func(*args,**kw) File "/usr/lib/python2.7/dist-packages/provisioningserver/utils/twisted.py", line 158, in wrapper return func(*args, **kwargs) File "/usr/lib/python2.7/dist-packages/provisioningserver/rpc/boot_images.py", line 92, in _run_import reload_boot_images() File "/usr/lib/python2.7/dist-packages/provisioningserver/rpc/boot_images.py", line 57, in reload_boot_images CACHED_BOOT_IMAGES = tftppath.list_boot_images(config.tftp_root) File "/usr/lib/python2.7/dist-packages/provisioningserver/boot/tftppath.py", line 266, in list_boot_images extract_image_params(path, metadata) for path in paths)) File "/usr/lib/python2.7/dist-packages/provisioningserver/boot/tftppath.py", line 266, in extract_image_params(path, metadata) for path in paths)) File "/usr/lib/python2.7/dist-packages/provisioningserver/boot/tftppath.py", line 180, in extract_image_params arch, subarch, release, label) File "/usr/lib/python2.7/dist-packages/provisioningserver/drivers/osystem/custom.py", line 58, in get_xinstall_parameters with ClusterConfiguration.open() as config: File "/usr/lib/python2.7/contextlib.py", line 17, in __enter__ return self.gen.next() File "/usr/lib/python2.7/dist-packages/provisioningserver/config.py", line 674, in open with cls.backend.open(filepath) as store: File "/usr/lib/python2.7/contextlib.py", line 17, in __enter__ return self.gen.next() File "/usr/lib/python2.7/dist-packages/provisioningserver/config.py", line 549, in open with RunLock(path).wait(timeout=5.0): File "/usr/lib/python2.7/contextlib.py", line 17, in __enter__ return self.gen.next() File "/usr/lib/python2.7/dist-packages/provisioningserver/utils/fs.py", line 440, in wait raise self.NotAvailable(self.fslock.name) provisioningserver.utils.fs.NotAvailable: /run/lock/maas.L2V0Yy9tYWFzL2NsdXN0ZXJkLmNvbmY=.lock 2015-09-10 14:21:47-0400 [-] Unhandled error in Deferred: 2015-09-10 14:21:47-0400 [-] Unhandled Error Traceback (most recent call last): File "/usr/lib/python2.7/threading.py", line 783, in __bootstrap self.__bootstrap_inner() File "/usr/lib/python2.7/threading.py", line 810, in __bootstrap_inner self.run() File "/usr/lib/python2.7/threading.py", line 763, in run self.__target(*self.__args, **self.__kwargs) --- --- File "/usr/lib/python2.7/dist-packages/twisted/python/threadpool.py", line 191, in _worker result = context.call(ctx, function, *args, **kwargs) File "/usr/lib/python2.7/dist-packages/twisted/python/context.py", line 118, in callWithContext return self.currentContext().callWithContext(ctx, func, *args, **kw) File "/usr/lib/python2.7/dist-packages/twisted/python/context.py", line 81, in callWithContext return func(*args,**kw) File "/usr/lib/python2.7/dist-packages/provisioningserver/utils/twisted.py", line 158, in wrapper return func(*args, **kwargs) File "/usr/lib/python2.7/dist-packages/provisioningserver/rpc/boot_images.py", line 92, in _run_import reload_boot_images() File "/usr/lib/python2.7/dist-packages/provisioningserver/rpc/boot_images.py", line 57, in reload_boot_images CACHED_BOOT_IMAGES = tftppath.list_boot_images(config.tftp_root) File "/usr/lib/python2.7/dist-packages/provisioningserver/boot/tftppath.py", line 266, in list_boot_images extract_image_params(path, metadata) for path in paths)) File "/usr/lib/python2.7/dist-packages/provisioningserver/boot/tftppath.py", line 266, in extract_image_params(path, metadata) for path in paths)) File "/usr/lib/python2.7/dist-packages/provisioningserver/boot/tftppath.py", line 180, in extract_image_params arch, subarch, release, label) File "/usr/lib/python2.7/dist-packages/provisioningserver/drivers/osystem/custom.py", line 58, in get_xinstall_parameters with ClusterConfiguration.open() as config: File "/usr/lib/python2.7/contextlib.py", line 17, in __enter__ return self.gen.next() File "/usr/lib/python2.7/dist-packages/provisioningserver/config.py", line 674, in open with cls.backend.open(filepath) as store: File "/usr/lib/python2.7/contextlib.py", line 17, in __enter__ return self.gen.next() File "/usr/lib/python2.7/dist-packages/provisioningserver/config.py", line 549, in open with RunLock(path).wait(timeout=5.0): File "/usr/lib/python2.7/contextlib.py", line 17, in __enter__ return self.gen.next() File "/usr/lib/python2.7/dist-packages/provisioningserver/utils/fs.py", line 440, in wait raise self.NotAvailable(self.fslock.name) provisioningserver.utils.fs.NotAvailable: /run/lock/maas.L2V0Yy9tYWFzL2NsdXN0ZXJkLmNvbmY=.lock and corresponding tracebacks (timing wise) in regiond.log: 2015-09-10 14:21:51 [-] Error on request (119) general.osinfo: string index out of range Traceback (most recent call last): File "/usr/lib/python2.7/threading.py", line 783, in __bootstrap self.__bootstrap_inner() File "/usr/lib/python2.7/threading.py", line 810, in __bootstrap_inner self.run() File "/usr/lib/python2.7/threading.py", line 763, in run self.__target(*self.__args, **self.__kwargs) --- --- File "/usr/lib/python2.7/dist-packages/twisted/python/threadpool.py", line 191, in _worker result = context.call(ctx, function, *args, **kwargs) File "/usr/lib/python2.7/dist-packages/twisted/python/context.py", line 118, in callWithContext return self.currentContext().callWithContext(ctx, func, *args, **kw) File "/usr/lib/python2.7/dist-packages/twisted/python/context.py", line 81, in callWithContext return func(*args,**kw) File "/usr/lib/python2.7/dist-packages/maasserver/utils/orm.py", line 474, in call_within_transaction return func_outside_txn(*args, **kwargs) File "/usr/lib/python2.7/dist-packages/maasserver/utils/orm.py", line 301, in retrier return func(*args, **kwargs) File "/usr/lib/python2.7/dist-packages/django/db/transaction.py", line 339, in inner return func(*args, **kwargs) File "/usr/lib/python2.7/dist-packages/provisioningserver/utils/twisted.py", line 158, in wrapper return func(*args, **kwargs) File "/usr/lib/python2.7/dist-packages/maasserver/utils/orm.py", line 458, in call_within_transaction return func_within_txn(*args, **kwargs) File "/usr/lib/python2.7/dist-packages/django/db/transaction.py", line 339, in inner return func(*args, **kwargs) File "/usr/lib/python2.7/dist-packages/maasserver/websockets/base.py", line 332, in execute return m(params) File "/usr/lib/python2.7/dist-packages/maasserver/websockets/handlers/general.py", line 60, in osinfo kernels = list_all_usable_hwe_kernels(releases) File "/usr/lib/python2.7/dist-packages/maasserver/utils/osystems.py", line 82, in list_all_usable_hwe_kernels if release_a_newer_than_b(i, release['name'])]) File "/usr/lib/python2.7/dist-packages/maasserver/utils/osystems.py", line 239, in release_a_newer_than_b num_a = get_release_num(a) File "/usr/lib/python2.7/dist-packages/maasserver/utils/osystems.py", line 234, in get_release_num return ord(release[0]) exceptions.IndexError: string index out of range However, these tracebacks in the region log start earlier than the ones in clusterd... by a few seconds at any rate...