-
Notifications
You must be signed in to change notification settings - Fork 68
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Empty or invalid .../containerd/daemon/io.containerd.grpc.v1.introspection/uuid
file created occasionally
#322
Comments
[lmbarros] This has attached https://jel.ly.fish/e28ad781-ab1e-459d-b017-935900ccd76c |
In rare cases (believed to be caused by a non-atomic file creation and writing operation in containerd), we end up with an empty file at /mnt/data/docker/containerd/daemon/io.containerd.grpc.v1.introspection/uuid. This causes `ctr version` (and hence the health check) to fail. See balena-os/balena-engine#322 This PR addresses this issue in two ways: 1. Before running `ctr version`, we check if the uuid file exists and is empty. If so, we remove it. (The subsequent execution of `ctr version` by the healthcheck will create the file again.) 2. After running `ctr version`, we check if the uuid file was really created and is not empty. In both cases, when an empty uuid file is detected, we log the event and create a "breadcrumb" file at `/mnt/data/engine-healthcheck/` to help us confirm our hypothesis about the root cause. Signed-off-by: Leandro Motta Barros <[email protected]> Change-type: patch
In rare cases (believed to be caused by a non-atomic file creation and writing operation in containerd), we end up with an empty file at /mnt/data/docker/containerd/daemon/io.containerd.grpc.v1.introspection/uuid. This causes `ctr version` (and hence the health check) to fail. See balena-os/balena-engine#322 This PR addresses this issue in two ways: 1. Before running `ctr version`, we check if the uuid file exists and is empty. If so, we remove it. (The subsequent execution of `ctr version` by the healthcheck will create the file again.) 2. After running `ctr version`, we check if the uuid file was really created and is not empty. In both cases, when an empty uuid file is detected, we log the event and create a "breadcrumb" file at `/mnt/data/engine-healthcheck/` to help us confirm our hypothesis about the root cause. Signed-off-by: Leandro Motta Barros <[email protected]> Change-type: patch
In rare cases (believed to be caused by a non-atomic file creation and writing operation in containerd), we end up with an empty file at /mnt/data/docker/containerd/daemon/io.containerd.grpc.v1.introspection/uuid. This causes `ctr version` (and hence the health check) to fail. See balena-os/balena-engine#322 This commit addresses this issue in two ways: 1. Before running `ctr version`, we check if the uuid file exists and is empty. If so, we remove it. (The subsequent execution of `ctr version` by the healthcheck will create the file again.) 2. After running `ctr version`, we check if the uuid file was really created and is not empty. In both cases, when an empty uuid file is detected, we log the event and create a "breadcrumb" file at `/mnt/data/engine-healthcheck/` to help us confirm our hypothesis about the root cause. Signed-off-by: Leandro Motta Barros <[email protected]> Change-type: patch
In rare cases (believed to be caused by a non-atomic file creation and writing operation in containerd), we end up with an empty file at `/mnt/data/docker/containerd/daemon/io.containerd.grpc.v1.introspection/uuid`. This causes `ctr version` (and hence the health check) to fail. See balena-os/balena-engine#322 This commit addresses this issue in two ways: 1. Before running `ctr version`, we check if the uuid file exists and is empty. If so, we remove it. (The subsequent execution of `ctr version` by the healthcheck will create the file again.) 2. After running `ctr version`, we check if the uuid file was really created and is not empty. In both cases, when an empty uuid file is detected, we log the event to help us confirm our hypothesis about the root cause. Signed-off-by: Leandro Motta Barros <[email protected]> Change-type: patch
In rare cases (believed to be caused by a non-atomic file creation and writing operation in containerd), we end up with an empty file at `/mnt/data/docker/containerd/daemon/io.containerd.grpc.v1.introspection/uuid`. This causes `ctr version` (and hence the health check) to fail. See balena-os/balena-engine#322 This commit addresses this issue in two ways: 1. Before running `ctr version`, we check if the uuid file exists and is empty. If so, we remove it. (The subsequent execution of `ctr version` by the healthcheck will create the file again.) 2. After running `ctr version`, we check if the uuid file was really created and is not empty. In both cases, when an empty uuid file is detected, we log the event to help us confirm our hypothesis about the root cause. Signed-off-by: Leandro Motta Barros <[email protected]> Change-type: patch
In rare cases (believed to be caused by a non-atomic file creation and writing operation in containerd), we end up with an empty file at `/mnt/data/docker/containerd/daemon/io.containerd.grpc.v1.introspection/uuid`. This causes `ctr version` (and hence the health check) to fail. See balena-os/balena-engine#322 This commit addresses this issue in two ways: 1. Before running `ctr version`, we check if the uuid file exists and is empty. If so, we remove it. (The subsequent execution of `ctr version` by the healthcheck will create the file again.) 2. After running `ctr version`, we check if the uuid file was really created and is not empty. In both cases, when an empty uuid file is detected, we log the event to help us confirm our hypothesis about the root cause. Signed-off-by: Leandro Motta Barros <[email protected]> Change-type: patch
In rare cases (believed to be caused by a non-atomic file creation and writing operation in containerd), we end up with an empty file at `/mnt/data/docker/containerd/daemon/io.containerd.grpc.v1.introspection/uuid`. This causes `ctr version` (and hence the health check) to fail. See balena-os/balena-engine#322 This commit addresses this issue in two ways: 1. Before running `ctr version`, we check if the uuid file exists and is empty. If so, we remove it. (The subsequent execution of `ctr version` by the healthcheck will create the file again.) 2. After running `ctr version`, we check if the uuid file was really created and is not empty. In both cases, when an empty uuid file is detected, we log the event to help us confirm our hypothesis about the root cause. Signed-off-by: Leandro Motta Barros <[email protected]> Change-type: patch
In rare cases (believed to be caused by a non-atomic file creation and writing operation in containerd), we end up with an empty file at `/mnt/data/docker/containerd/daemon/io.containerd.grpc.v1.introspection/uuid`. This causes `ctr version` (and hence the health check) to fail. See balena-os/balena-engine#322 This commit addresses this issue in two ways: 1. Before running `ctr version`, we check if the uuid file exists and is empty. If so, we remove it. (The subsequent execution of `ctr version` by the healthcheck will create the file again.) 2. After running `ctr version`, we check if the uuid file was really created and is not empty. In both cases, when an empty uuid file is detected, we log the event to help us confirm our hypothesis about the root cause. Signed-off-by: Leandro Motta Barros <[email protected]> Change-type: patch
In rare cases (believed to be caused by a non-atomic file creation and writing operation in containerd), we end up with an empty file at `/mnt/data/docker/containerd/daemon/io.containerd.grpc.v1.introspection/uuid`. This causes `ctr version` (and hence the health check) to fail. See balena-os/balena-engine#322 This commit addresses this issue in two ways: 1. Before running `ctr version`, we check if the uuid file exists and is empty. If so, we remove it. (The subsequent execution of `ctr version` by the healthcheck will create the file again.) 2. After running `ctr version`, we check if the uuid file was really created and is not empty. In both cases, when an empty uuid file is detected, we log the event to help us confirm our hypothesis about the root cause. Signed-off-by: Leandro Motta Barros <[email protected]> Change-type: patch
Saw a variation of this today, in two different devices. In both cases the uuid file was created, but with invalid contents. Interestingly, in both cases the contents of the file were the same:
|
Answers to questions posed about the devices referenced above, where the UUID file was created but with invalid contents:
According to Balena dashboard they were created Nov 2022 and Jan 2023. It should reflect real commission date. Many other devices from this fleet were commissioned in the same time interval.
I cannot be 100% sure as we do not track them, but I would say that any OS updates attempts before that are very unlikely. But there probably were a supervisor update to 14.13.14 some time before mentioned OS update.
I noticed repeated supervisor restarts only just before running OS updates. I was hoping that OS update could fix it as well. |
Same user reported a device with the same symptoms (same invalid contents in the |
.../containerd/daemon/io.containerd.grpc.v1.introspection/uuid
file created occasionally.../containerd/daemon/io.containerd.grpc.v1.introspection/uuid
file created occasionally
Well, all zeros actually... somehow I missed that. Not so interesting then. |
We have detected one more way in which the uuid file used by containerd can get corrupted. This time, the file is not empty, but doesn't contain a valid UUID either. This commit thus extends the existing workaround to also handle this case. See balena-os/balena-engine#322 Signed-off-by: Leandro Motta Barros <[email protected]> Change-type: patch
PR with work around for invalid uuid files: balena-os/meta-balena#3409 . Needs more testing. |
We have detected one more way in which the uuid file used by containerd can get corrupted. This time, the file is not empty, but doesn't contain a valid UUID either. This commit thus extends the existing workaround to also handle this case. See balena-os/balena-engine#322 Signed-off-by: Leandro Motta Barros <[email protected]> Change-type: patch
We have detected one more way in which the uuid file used by containerd can get corrupted. This time, the file is not empty, but doesn't contain a valid UUID either. This commit thus extends the existing workaround to also handle this case. See balena-os/balena-engine#322 Signed-off-by: Leandro Motta Barros <[email protected]> Change-type: patch
We have detected one more way in which the uuid file used by containerd can get corrupted. This time, the file is not empty, but doesn't contain a valid UUID either. This commit thus extends the existing workaround to also handle this case. See balena-os/balena-engine#322 Signed-off-by: Leandro Motta Barros <[email protected]> Change-type: patch
We have detected one more way in which the uuid file used by containerd can get corrupted. This time, the file is not empty, but doesn't contain a valid UUID either. This commit thus extends the existing workaround to also handle this case. See balena-os/balena-engine#322 Signed-off-by: Leandro Motta Barros <[email protected]> Change-type: patch
We have detected one more way in which the uuid file used by containerd can get corrupted. This time, the file is not empty, but doesn't contain a valid UUID either. This commit thus extends the existing workaround to also handle this case. See balena-os/balena-engine#322 Signed-off-by: Leandro Motta Barros <[email protected]> Change-type: patch
We have detected one more way in which the uuid file used by containerd can get corrupted. This time, the file is not empty, but doesn't contain a valid UUID either. This commit thus extends the existing workaround to also handle this case. See balena-os/balena-engine#322 Signed-off-by: Leandro Motta Barros <[email protected]> Change-type: patch
We have detected one more way in which the uuid file used by containerd can get corrupted. This time, the file is not empty, but doesn't contain a valid UUID either. This commit thus extends the existing workaround to also handle this case. See balena-os/balena-engine#322 Signed-off-by: Leandro Motta Barros <[email protected]> Change-type: patch
In some rare cases, the
/mnt/data/docker/containerd/daemon/io.containerd.grpc.v1.introspection/uuid
created by containerd is empty (instead of containing an UUID). This causes some containerd operations to fail. Notably, the following command (which happens to be part of the current balenaEngine health check)will fail with
The text was updated successfully, but these errors were encountered: