You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
"sled add" could use a guard against attempting to add a previously-used sled that has not been clean slated #11671
I'm not sure what would happen if you tried to add a sled that had not been clean slated, but I don't think it would be good. We should make sure this somehow fails gracefully and in a way that can be observed by the user.
I'm not clear how bad it would be to insert a non-clean-slated but expunged sled, possibly from another rack, into a rack.
I did just test this on berlin by:
starting with all four sleds in the rack
removing sled 17 from TQ, waiting for that to become committed
power cycling the sled
expunging the sled from the control plane
re-adding the sled
The TQ config has been Committing for almost 10 minutes now. (Is this stuck forever? Is there a way out of this?) The sled is reporting this in the sled agent log:
271FVPY0 # grep -v 'failed to sample kstat target' $(svcs -L sled-agent) | looker -lwarn -o long
[ Dec 28 00:00:03 Enabled. ]
[ Dec 28 00:00:42 Executing start method ("ctrun -l child -o noorphan,regent /opt/oxide/sled-agent/sled-agent run /opt/oxide/sled-agent/pkg/config.toml &"). ]
[ Dec 28 00:00:43 Method "start" exited with status 0. ]
note: configured to log to "/dev/stdout"
Dec 28 00:00:45.579 INFO tofino monitor online, unit: tofino-monitor
1986-12-28 00:00:46.616Z WARN SledAgent/665 (DebugCollector-worker) on 271FVPY0: Not configuring DumpSlicePath("/devices/pci@0,0/pci1de,fff9@1,3/pci1344,3100@0/blkdev@w00A075013280E319,0:e") as it appears to contain a dump we cannot yet send to a U.2 debug zvol
file = sled-agent/config-reconciler/src/debug_collector/worker.rs:815
1986-12-28 00:00:46.627Z ERRO SledAgent/665 (DebugCollector-worker) on 271FVPY0: Archiving skipped: no archival destination available
file = sled-agent/config-reconciler/src/debug_collector/worker.rs:893
1986-12-28 00:00:48.361Z WARN SledAgent/665 (DdmReconciler) on 271FVPY0: failed to enable stats
error = Error Response: status: 500 Internal Server Error; headers: {"content-type": "application/json", "x-request-id": "65497f1e-de35-4a5b-8236-451e59176b88", "content-length": "124", "date": "Sun, 28 Dec 1986 00:00:48 GMT"}; value: Error { error_code: Some("Internal"), message: "Internal Server Error", request_id: "65497f1e-de35-4a5b-8236-451e59176b88" }
file = sled-agent/src/ddm_reconciler.rs:206
1986-12-28 00:00:56.302Z WARN SledAgent/665 (trust-quorum) on 271FVPY0: Received Expunged message for newer epoch. Recording expungement in persistent state.
baseboard_id = 913-0000019:271FVPY0
epoch = 11
file = trust-quorum/protocol/src/node.rs:530
from = 913-0000019:BRM42220082
platform_id = BaseboardId { part_number: "913-0000019", serial_number: "271FVPY0" }
received_epoch = 12
1986-12-28 00:00:56.303Z WARN SledAgent/665 (trust-quorum) on 271FVPY0: expunged
baseboard_id = 913-0000019:271FVPY0
file = trust-quorum/protocol/src/node.rs:413
from = 913-0000019:BRM44220007
platform_id = BaseboardId { part_number: "913-0000019", serial_number: "271FVPY0" }
1986-12-28 00:00:56.303Z WARN SledAgent/665 (trust-quorum) on 271FVPY0: expunged
baseboard_id = 913-0000019:271FVPY0
file = trust-quorum/protocol/src/node.rs:413
from = 913-0000019:BRM42220011
platform_id = BaseboardId { part_number: "913-0000019", serial_number: "271FVPY0" }
1986-12-28 00:02:56.301Z WARN SledAgent/665 (ConfigReconcilerTask) on 271FVPY0: Disk adoption failed
disk_identity = DiskIdentity { vendor: "1b96", model: "WUS4C6432DSP3X3", serial: "A079E665" }
error = Failed to adopt disk containing zpool 89a7bcc8-8505-4857-b711-507670fdc5fc: KeyManager error: Failed to retrieve secret: Timeout retrieving secret: Timeout retrieving secret
file = sled-agent/config-reconciler/src/reconciler_task/external_disks.rs:620
1986-12-28 00:04:56.302Z WARN SledAgent/665 (ConfigReconcilerTask) on 271FVPY0: Disk adoption failed
disk_identity = DiskIdentity { vendor: "1b96", model: "WUS4C6432DSP3X3", serial: "A079DF02" }
error = Failed to adopt disk containing zpool b6fe6ca1-4d9e-4a47-9c2a-ac64a90f921a: KeyManager error: Failed to retrieve secret: Timeout retrieving secret: Timeout retrieving secret
file = sled-agent/config-reconciler/src/reconciler_task/external_disks.rs:620
1986-12-28 00:05:46.655Z WARN SledAgent/665 (DebugCollector-worker) on 271FVPY0: Not configuring DumpSlicePath("/devices/pci@0,0/pci1de,fff9@1,3/pci1344,3100@0/blkdev@w00A075013280E319,0:e") as it appears to contain a dump we cannot yet send to a U.2 debug zvol
file = sled-agent/config-reconciler/src/debug_collector/worker.rs:815
1986-12-28 00:05:46.665Z ERRO SledAgent/665 (DebugCollector-worker) on 271FVPY0: Archiving skipped: no archival destination available
file = sled-agent/config-reconciler/src/debug_collector/worker.rs:893
1986-12-28 00:06:56.303Z WARN SledAgent/665 (ConfigReconcilerTask) on 271FVPY0: Disk adoption failed
disk_identity = DiskIdentity { vendor: "1b96", model: "WUS4C6432DSP3X3", serial: "A079E3AD" }
error = Failed to adopt disk containing zpool 5ad076b1-0ea8-4b72-b41c-ee1526700f66: KeyManager error: Failed to retrieve secret: Timeout retrieving secret: Timeout retrieving secret
file = sled-agent/config-reconciler/src/reconciler_task/external_disks.rs:620
1986-12-28 00:08:06.366Z WARN SledAgent/665 (trust-quorum) on 271FVPY0: prepare
baseboard_id = 913-0000019:271FVPY0
file = trust-quorum/protocol/src/node.rs:413
from = 913-0000019:BRM42220082
platform_id = BaseboardId { part_number: "913-0000019", serial_number: "271FVPY0" }
1986-12-28 00:08:56.305Z WARN SledAgent/665 (ConfigReconcilerTask) on 271FVPY0: Disk adoption failed
disk_identity = DiskIdentity { vendor: "1b96", model: "WUS4C6432DSP3X3", serial: "A079DF08" }
error = Failed to adopt disk containing zpool 8d6185ff-f66e-4946-ab86-1bfa28f7f80b: KeyManager error: Failed to retrieve secret: Timeout retrieving secret: Timeout retrieving secret
file = sled-agent/config-reconciler/src/reconciler_task/external_disks.rs:620
1986-12-28 00:09:05.238Z ERRO SledAgent/665 (trust-quorum) on 271FVPY0: PrepareAndCommit attempted on expunged node
baseboard_id = 913-0000019:271FVPY0
expunged_epoch = 12
expunging_node = 913-0000019:BRM42220082
file = trust-quorum/protocol/src/node.rs:232
platform_id = BaseboardId { part_number: "913-0000019", serial_number: "271FVPY0" }
1986-12-28 00:09:05.265Z WARN SledAgent/665 (trust-quorum) on 271FVPY0: get_share
baseboard_id = 913-0000019:271FVPY0
file = trust-quorum/protocol/src/node.rs:413
from = 913-0000019:BRM42220082
platform_id = BaseboardId { part_number: "913-0000019", serial_number: "271FVPY0" }
1986-12-28 00:09:05.266Z WARN SledAgent/665 (trust-quorum) on 271FVPY0: get_share
baseboard_id = 913-0000019:271FVPY0
file = trust-quorum/protocol/src/node.rs:413
from = 913-0000019:BRM42220011
platform_id = BaseboardId { part_number: "913-0000019", serial_number: "271FVPY0" }
1986-12-28 00:09:05.271Z WARN SledAgent/665 (trust-quorum) on 271FVPY0: get_share
baseboard_id = 913-0000019:271FVPY0
file = trust-quorum/protocol/src/node.rs:413
from = 913-0000019:BRM44220007
platform_id = BaseboardId { part_number: "913-0000019", serial_number: "271FVPY0" }
1986-12-28 00:09:53.411Z ERRO SledAgent/665 (trust-quorum) on 271FVPY0: PrepareAndCommit attempted on expunged node
baseboard_id = 913-0000019:271FVPY0
expunged_epoch = 12
expunging_node = 913-0000019:BRM42220082
file = trust-quorum/protocol/src/node.rs:232
platform_id = BaseboardId { part_number: "913-0000019", serial_number: "271FVPY0" }
1986-12-28 00:09:53.679Z ERRO SledAgent/665 (trust-quorum) on 271FVPY0: PrepareAndCommit attempted on expunged node
baseboard_id = 913-0000019:271FVPY0
expunged_epoch = 12
expunging_node = 913-0000019:BRM42220082
file = trust-quorum/protocol/src/node.rs:232
platform_id = BaseboardId { part_number: "913-0000019", serial_number: "271FVPY0" }
1986-12-28 00:10:05.066Z ERRO SledAgent/665 (trust-quorum) on 271FVPY0: PrepareAndCommit attempted on expunged node
baseboard_id = 913-0000019:271FVPY0
expunged_epoch = 12
expunging_node = 913-0000019:BRM42220082
file = trust-quorum/protocol/src/node.rs:232
platform_id = BaseboardId { part_number: "913-0000019", serial_number: "271FVPY0" }
1986-12-28 00:10:46.694Z WARN SledAgent/665 (DebugCollector-worker) on 271FVPY0: Not configuring DumpSlicePath("/devices/pci@0,0/pci1de,fff9@1,3/pci1344,3100@0/blkdev@w00A075013280E319,0:e") as it appears to contain a dump we cannot yet send to a U.2 debug zvol
file = sled-agent/config-reconciler/src/debug_collector/worker.rs:815
1986-12-28 00:10:46.704Z ERRO SledAgent/665 (DebugCollector-worker) on 271FVPY0: Archiving skipped: no archival destination available
file = sled-agent/config-reconciler/src/debug_collector/worker.rs:893
1986-12-28 00:10:53.515Z ERRO SledAgent/665 (trust-quorum) on 271FVPY0: PrepareAndCommit attempted on expunged node
baseboard_id = 913-0000019:271FVPY0
expunged_epoch = 12
expunging_node = 913-0000019:BRM42220082
file = trust-quorum/protocol/src/node.rs:232
platform_id = BaseboardId { part_number: "913-0000019", serial_number: "271FVPY0" }
1986-12-28 00:10:53.581Z ERRO SledAgent/665 (trust-quorum) on 271FVPY0: PrepareAndCommit attempted on expunged node
baseboard_id = 913-0000019:271FVPY0
expunged_epoch = 12
expunging_node = 913-0000019:BRM42220082
file = trust-quorum/protocol/src/node.rs:232
platform_id = BaseboardId { part_number: "913-0000019", serial_number: "271FVPY0" }
1986-12-28 00:10:56.306Z WARN SledAgent/665 (ConfigReconcilerTask) on 271FVPY0: Disk adoption failed
disk_identity = DiskIdentity { vendor: "1b96", model: "WUS4C6432DSP3X3", serial: "A079E3D2" }
error = Failed to adopt disk containing zpool 1234012c-4f44-4b93-8218-4166bb55f775: KeyManager error: Failed to retrieve secret: Timeout retrieving secret: Timeout retrieving secret
file = sled-agent/config-reconciler/src/reconciler_task/external_disks.rs:620
1986-12-28 00:11:05.164Z ERRO SledAgent/665 (trust-quorum) on 271FVPY0: PrepareAndCommit attempted on expunged node
baseboard_id = 913-0000019:271FVPY0
expunged_epoch = 12
expunging_node = 913-0000019:BRM42220082
file = trust-quorum/protocol/src/node.rs:232
platform_id = BaseboardId { part_number: "913-0000019", serial_number: "271FVPY0" }
1986-12-28 00:11:53.470Z ERRO SledAgent/665 (trust-quorum) on 271FVPY0: PrepareAndCommit attempted on expunged node
baseboard_id = 913-0000019:271FVPY0
expunged_epoch = 12
expunging_node = 913-0000019:BRM42220082
file = trust-quorum/protocol/src/node.rs:232
platform_id = BaseboardId { part_number: "913-0000019", serial_number: "271FVPY0" }
1986-12-28 00:11:53.515Z ERRO SledAgent/665 (trust-quorum) on 271FVPY0: PrepareAndCommit attempted on expunged node
baseboard_id = 913-0000019:271FVPY0
expunged_epoch = 12
expunging_node = 913-0000019:BRM42220082
file = trust-quorum/protocol/src/node.rs:232
platform_id = BaseboardId { part_number: "913-0000019", serial_number: "271FVPY0" }
1986-12-28 00:12:05.021Z ERRO SledAgent/665 (trust-quorum) on 271FVPY0: PrepareAndCommit attempted on expunged node
baseboard_id = 913-0000019:271FVPY0
expunged_epoch = 12
expunging_node = 913-0000019:BRM42220082
file = trust-quorum/protocol/src/node.rs:232
platform_id = BaseboardId { part_number: "913-0000019", serial_number: "271FVPY0" }
1986-12-28 00:12:53.485Z ERRO SledAgent/665 (trust-quorum) on 271FVPY0: PrepareAndCommit attempted on expunged node
baseboard_id = 913-0000019:271FVPY0
expunged_epoch = 12
expunging_node = 913-0000019:BRM42220082
file = trust-quorum/protocol/src/node.rs:232
platform_id = BaseboardId { part_number: "913-0000019", serial_number: "271FVPY0" }
1986-12-28 00:12:53.593Z ERRO SledAgent/665 (trust-quorum) on 271FVPY0: PrepareAndCommit attempted on expunged node
baseboard_id = 913-0000019:271FVPY0
expunged_epoch = 12
expunging_node = 913-0000019:BRM42220082
file = trust-quorum/protocol/src/node.rs:232
platform_id = BaseboardId { part_number: "913-0000019", serial_number: "271FVPY0" }
1986-12-28 00:12:56.307Z WARN SledAgent/665 (ConfigReconcilerTask) on 271FVPY0: Disk adoption failed
disk_identity = DiskIdentity { vendor: "1b96", model: "WUS4C6432DSP3X3", serial: "A079DDE7" }
error = Failed to adopt disk containing zpool 848f40a4-f53b-43a5-a6c9-8721c96cc6ca: KeyManager error: Failed to retrieve secret: Timeout retrieving secret: Timeout retrieving secret
file = sled-agent/config-reconciler/src/reconciler_task/external_disks.rs:620
1986-12-28 00:13:05.167Z ERRO SledAgent/665 (trust-quorum) on 271FVPY0: PrepareAndCommit attempted on expunged node
baseboard_id = 913-0000019:271FVPY0
expunged_epoch = 12
expunging_node = 913-0000019:BRM42220082
file = trust-quorum/protocol/src/node.rs:232
platform_id = BaseboardId { part_number: "913-0000019", serial_number: "271FVPY0" }
1986-12-28 00:13:53.564Z ERRO SledAgent/665 (trust-quorum) on 271FVPY0: PrepareAndCommit attempted on expunged node
baseboard_id = 913-0000019:271FVPY0
expunged_epoch = 12
expunging_node = 913-0000019:BRM42220082
file = trust-quorum/protocol/src/node.rs:232
platform_id = BaseboardId { part_number: "913-0000019", serial_number: "271FVPY0" }
1986-12-28 00:13:53.600Z ERRO SledAgent/665 (trust-quorum) on 271FVPY0: PrepareAndCommit attempted on expunged node
baseboard_id = 913-0000019:271FVPY0
expunged_epoch = 12
expunging_node = 913-0000019:BRM42220082
file = trust-quorum/protocol/src/node.rs:232
platform_id = BaseboardId { part_number: "913-0000019", serial_number: "271FVPY0" }
1986-12-28 00:14:05.045Z ERRO SledAgent/665 (trust-quorum) on 271FVPY0: PrepareAndCommit attempted on expunged node
baseboard_id = 913-0000019:271FVPY0
expunged_epoch = 12
expunging_node = 913-0000019:BRM42220082
file = trust-quorum/protocol/src/node.rs:232
platform_id = BaseboardId { part_number: "913-0000019", serial_number: "271FVPY0" }
1986-12-28 00:14:53.428Z ERRO SledAgent/665 (trust-quorum) on 271FVPY0: PrepareAndCommit attempted on expunged node
baseboard_id = 913-0000019:271FVPY0
expunged_epoch = 12
expunging_node = 913-0000019:BRM42220082
file = trust-quorum/protocol/src/node.rs:232
platform_id = BaseboardId { part_number: "913-0000019", serial_number: "271FVPY0" }
1986-12-28 00:14:53.491Z ERRO SledAgent/665 (trust-quorum) on 271FVPY0: PrepareAndCommit attempted on expunged node
baseboard_id = 913-0000019:271FVPY0
expunged_epoch = 12
expunging_node = 913-0000019:BRM42220082
file = trust-quorum/protocol/src/node.rs:232
platform_id = BaseboardId { part_number: "913-0000019", serial_number: "271FVPY0" }
1986-12-28 00:14:56.308Z WARN SledAgent/665 (ConfigReconcilerTask) on 271FVPY0: Disk adoption failed
disk_identity = DiskIdentity { vendor: "1b96", model: "WUS4C6432DSP3X3", serial: "A079DDCC" }
error = Failed to adopt disk containing zpool 266b4961-011b-419a-a65b-730cef657981: KeyManager error: Failed to retrieve secret: Timeout retrieving secret: Timeout retrieving secret
file = sled-agent/config-reconciler/src/reconciler_task/external_disks.rs:620
1986-12-28 00:15:05.064Z ERRO SledAgent/665 (trust-quorum) on 271FVPY0: PrepareAndCommit attempted on expunged node
baseboard_id = 913-0000019:271FVPY0
expunged_epoch = 12
expunging_node = 913-0000019:BRM42220082
file = trust-quorum/protocol/src/node.rs:232
platform_id = BaseboardId { part_number: "913-0000019", serial_number: "271FVPY0" }
1986-12-28 00:15:46.731Z WARN SledAgent/665 (DebugCollector-worker) on 271FVPY0: Not configuring DumpSlicePath("/devices/pci@0,0/pci1de,fff9@1,3/pci1344,3100@0/blkdev@w00A075013280E319,0:e") as it appears to contain a dump we cannot yet send to a U.2 debug zvol
file = sled-agent/config-reconciler/src/debug_collector/worker.rs:815
1986-12-28 00:15:46.745Z ERRO SledAgent/665 (DebugCollector-worker) on 271FVPY0: Archiving skipped: no archival destination available
file = sled-agent/config-reconciler/src/debug_collector/worker.rs:893
1986-12-28 00:15:53.414Z ERRO SledAgent/665 (trust-quorum) on 271FVPY0: PrepareAndCommit attempted on expunged node
baseboard_id = 913-0000019:271FVPY0
expunged_epoch = 12
expunging_node = 913-0000019:BRM42220082
file = trust-quorum/protocol/src/node.rs:232
platform_id = BaseboardId { part_number: "913-0000019", serial_number: "271FVPY0" }
1986-12-28 00:15:53.435Z ERRO SledAgent/665 (trust-quorum) on 271FVPY0: PrepareAndCommit attempted on expunged node
baseboard_id = 913-0000019:271FVPY0
expunged_epoch = 12
expunging_node = 913-0000019:BRM42220082
file = trust-quorum/protocol/src/node.rs:232
platform_id = BaseboardId { part_number: "913-0000019", serial_number: "271FVPY0" }
1986-12-28 00:16:05.062Z ERRO SledAgent/665 (trust-quorum) on 271FVPY0: PrepareAndCommit attempted on expunged node
baseboard_id = 913-0000019:271FVPY0
expunged_epoch = 12
expunging_node = 913-0000019:BRM42220082
file = trust-quorum/protocol/src/node.rs:232
platform_id = BaseboardId { part_number: "913-0000019", serial_number: "271FVPY0" }
1986-12-28 00:16:53.542Z ERRO SledAgent/665 (trust-quorum) on 271FVPY0: PrepareAndCommit attempted on expunged node
baseboard_id = 913-0000019:271FVPY0
expunged_epoch = 12
expunging_node = 913-0000019:BRM42220082
file = trust-quorum/protocol/src/node.rs:232
platform_id = BaseboardId { part_number: "913-0000019", serial_number: "271FVPY0" }
1986-12-28 00:16:53.569Z ERRO SledAgent/665 (trust-quorum) on 271FVPY0: PrepareAndCommit attempted on expunged node
baseboard_id = 913-0000019:271FVPY0
expunged_epoch = 12
expunging_node = 913-0000019:BRM42220082
file = trust-quorum/protocol/src/node.rs:232
platform_id = BaseboardId { part_number: "913-0000019", serial_number: "271FVPY0" }
1986-12-28 00:16:56.308Z WARN SledAgent/665 (ConfigReconcilerTask) on 271FVPY0: Disk adoption failed
disk_identity = DiskIdentity { vendor: "1b96", model: "WUS4C6432DSP3X3", serial: "A079E567" }
error = Failed to adopt disk containing zpool c903a9a4-f935-476b-83f5-38b3df04ac81: KeyManager error: Failed to retrieve secret: Timeout retrieving secret: Timeout retrieving secret
file = sled-agent/config-reconciler/src/reconciler_task/external_disks.rs:620
1986-12-28 00:17:05.052Z ERRO SledAgent/665 (trust-quorum) on 271FVPY0: PrepareAndCommit attempted on expunged node
baseboard_id = 913-0000019:271FVPY0
expunged_epoch = 12
expunging_node = 913-0000019:BRM42220082
file = trust-quorum/protocol/src/node.rs:232
platform_id = BaseboardId { part_number: "913-0000019", serial_number: "271FVPY0" }
1986-12-28 00:17:53.403Z ERRO SledAgent/665 (trust-quorum) on 271FVPY0: PrepareAndCommit attempted on expunged node
baseboard_id = 913-0000019:271FVPY0
expunged_epoch = 12
expunging_node = 913-0000019:BRM42220082
file = trust-quorum/protocol/src/node.rs:232
platform_id = BaseboardId { part_number: "913-0000019", serial_number: "271FVPY0" }
1986-12-28 00:17:53.464Z ERRO SledAgent/665 (trust-quorum) on 271FVPY0: PrepareAndCommit attempted on expunged node
baseboard_id = 913-0000019:271FVPY0
expunged_epoch = 12
expunging_node = 913-0000019:BRM42220082
file = trust-quorum/protocol/src/node.rs:232
platform_id = BaseboardId { part_number: "913-0000019", serial_number: "271FVPY0" }
1986-12-28 00:18:05.021Z ERRO SledAgent/665 (trust-quorum) on 271FVPY0: PrepareAndCommit attempted on expunged node
baseboard_id = 913-0000019:271FVPY0
expunged_epoch = 12
expunging_node = 913-0000019:BRM42220082
file = trust-quorum/protocol/src/node.rs:232
platform_id = BaseboardId { part_number: "913-0000019", serial_number: "271FVPY0" }
The sled brought up its old underlay IP:
271FVPY0 # ipadm
ADDROBJ TYPE STATE ADDR
lo0/v4 static ok 127.0.0.1/8
lo0/v6 static ok ::1/128
cxgbe0/ll addrconf ok fe80::aa40:25ff:fe04:28d7%cxgbe0/10
cxgbe1/ll addrconf ok fe80::aa40:25ff:fe04:28df%cxgbe1/10
bootstrap0/ll addrconf ok fe80::8:20ff:fe52:9e91%bootstrap0/10
bootstrap0/bootstrap6 static ok fdb0:a840:2504:28d7::1/64
underlay0/ll addrconf ok fe80::8:20ff:fee0:5883%underlay0/10
underlay0/sled6 static ok fdcc:7057:faf9:125::1/64
[berlin]root@oxz_switch1:~# omdb db sleds -F decommissioned
note: database URL not specified. Will search DNS.
note: (override with --db-url or OMDB_DB_URL)
note: using DNS from system config (typically /etc/resolv.conf)
note: (if this is not right, use --dns-server to specify an alternate DNS server)
note: using database URL postgresql://root@[fdcc:7057:faf9:102::11]:32221,[fdcc:7057:faf9:101::3]:32221,[fdcc:7057:faf9:102::3]:32221,[fdcc:7057:faf9:103::3]:32221,[fdcc:7057:faf9:101::11]:32221/omicron?sslmode=disable
note: database schema version matches expected (311.0.0)
SERIAL IP ROLE POLICY STATE BP AVAIL ID
271FVPY0 [fdcc:7057:faf9:122::1]:12345 - expunged decommissioned decommissioned 05d3df4e-66e1-4c24-8618-f4467bad4ed5
271FVPY0 [fdcc:7057:faf9:125::1]:12345 - expunged decommissioned decommissioned 1c5aff87-2a5f-4de5-9b45-d45b9d0c3d41
271FVPY0 [fdcc:7057:faf9:121::1]:12345 - expunged decommissioned decommissioned 1d54d23c-2133-4050-ab14-fad8a2fcfd2c
271FVPY0 [fdcc:7057:faf9:123::1]:12345 - expunged decommissioned decommissioned a8b2f303-8588-471c-916b-16a5a5306d81
271FVPY0 [fdcc:7057:faf9:104::1]:12345 - expunged decommissioned decommissioned af2c58b7-e6d3-4805-8969-7715fd108a8b
271FVPY0 [fdcc:7057:faf9:124::1]:12345 - expunged decommissioned decommissioned f9627989-91f1-4f64-99fa-d0b55ea81f44
(I was doing a bunch of expunge/add testing here.)
[berlin]root@oxz_switch1:~# ping fdcc:7057:faf9:125::1
fdcc:7057:faf9:125::1 is alive
That seems bad. (What if this IP were in use by a sled in this rack?) Is its boostrap IP unique? At least it's not able to unlock its local storage and start control plane components.
I guessed maybe the live-but-not-working sled was holding up the TQ change, but having let it sit overnight and then powered off the sled, it's still stuck Committing.
That seems bad. (What if this IP were in use by a sled in this rack?)
No argument that it seems bad, but I don't think the IP can be in use - we never reuse sled subnet reservations (at least today, which means we have a hard cap on how many sleds can added to a rack over its lifetime):
3. I guessed maybe the live-but-not-working sled was holding up the TQ change, but having let it sit overnight and then powered off the sled, it's still stuck Committing.
@andrewjstone would know for sure, but I think you're going to be stuck in committing until either:
that sled shows up and is able to participate
you send a new configuration that removes that sled
because the sled you're trying to add has to participate in order for the current epoch (which adds it) to commit?
4. > That seems bad. (What if this IP were in use by a sled in this rack?)
No argument that it seems bad, but I don't think the IP can be in use - we never reuse sled subnet reservations (at least today, which means we have a hard cap on how many sleds can added to a rack over its lifetime): https://github.com/oxidecomputer/omicron/blob/40b22e54b97a8592f61595cda46e81279e14cf6a/nexus/db-queries/src/db/datastore/rack.rs#L386-L392
I think this is still a risk (probably small) if it comes from another rack.
I guessed maybe the live-but-not-working sled was holding up the TQ change, but having let it sit overnight and then powered off the sled, it's still stuck Committing.
@andrewjstone would know for sure, but I think you're going to be stuck in committing until either:
* that sled shows up and is able to participate
* you send a new configuration that removes that sled
because the sled you're trying to add has to participate in order for the current epoch (which adds it) to commit?
Ah, that makes sense. I did successfully remove it from TQ and that epoch committed.
Since the sled knows it's been expunged from another TQ, I wonder if it could communicate this to Nexus and have Nexus abandon the attempt to add it in that case?
I'm also not sure how any of this works if the sled was not aware that it had been expunged.
Sorry for not commenting earlier. I've been digging into the larger problem of why the sled-agent is running once a sled has been expunged and rebooted. I think #11684 should fix it.
Since the sled knows it's been expunged from another TQ, I wonder if it could communicate this to Nexus and have Nexus abandon the attempt to add it in that case?
Sled-agent really shouldn't be running after an expunge and reboot. So it can't talk to Nexus at all. We may be able to get it's status via omdb nexus trust-quorum proxy-status but that's not great from a customer perspective.
I tested this on voxel. I started with a 4 node cluster, then removed g2 from the trust quorum. I waited for it to commit.
Then I logged into g2, which I had not yet rebooted, and checked the status of sled-agent with the new bootstrap API endpoint and the ipadm state, and rebooted:
root@g2:~# ipadm
ADDROBJ TYPE STATE ADDR
lo0/v4 static ok 127.0.0.1/8
vioif2/v4 dhcp ok 192.168.1.70/24
lo0/v6 static ok ::1/128
vioif0/ll addrconf ok fe80::aa40:25ff:fe00:5%vioif0/10
vioif1/ll addrconf ok fe80::aa40:25ff:fe00:6%vioif1/10
bootstrap0/ll addrconf ok fe80::8:20ff:fe1b:c7a3%bootstrap0/10
bootstrap0/bootstrap6 static ok fdb0:a840:2500:5::1/64
underlay0/ll addrconf ok fe80::8:20ff:fe61:1698%underlay0/10
underlay0/sled6 static ok fd47:65d2:3fea:103::1/64
underlay0/internaldns2 static ok fd47:65d2:3fea:3::2/64
root@g2:~# curl http://[fdb0:a840:2500:5::1]:8080/sled-agent-start-status
{"state":"started","sled_id":"e2f15c01-cd2f-42de-b2fa-3da5aaec8425"}root@g2:~# reboot
reboot: Halting 10 zones.
reboot: Completing system halt.
updating /platform/i86pc/amd64/boot_archive (CPIO)
Connection to 192.168.1.70 closed by remote host.
I then logged back in and did the same thing. The gate held and eventually the state transitioned to expunged. I added some spaces for clarity.
➜ voxel git:(main) target/release/voxel host login g2
[voxel] ssh root@192.168.1.70 (g2 global zone)
The illumos Project helios-3.0.23976 May 2026
root@g2:~# ipadm show-addr -p -o addr 2>/dev/null
127.0.0.1/8
192.168.1.70/24
::1/128
fe80::aa40:25ff:fe00:5%vioif0/10
fe80::aa40:25ff:fe00:6%vioif1/10
fe80::8:20ff:fe3a:ce32%bootstrap0/10
fdb0:a840:2500:5::1/64
root@g2:~# curl http://[fdb0:a840:2500:5::1]:8080/sled-agent-start-status
{"state":"waiting_for_rack_unlock","connected_peers":[],"latest_committed_epoch":1}
root@g2:~# curl http://[fdb0:a840:2500:5::1]:8080/sled-agent-start-status
{"state":"waiting_for_rack_unlock","connected_peers":[],"latest_committed_epoch":1}
root@g2:~# curl http://[fdb0:a840:2500:5::1]:8080/sled-agent-start-status
{"state":"expunged","epoch":2,"from":{"part_number":"913-0000019","serial_number":"2FAKE003"}}
root@g2:~# curl http://[fdb0:a840:2500:5::1]:8080/sled-agent-start-status
{"state":"expunged","epoch":2,"from":{"part_number":"913-0000019","serial_number":"2FAKE003"}}
root@g2:~# ipadm
ADDROBJ TYPE STATE ADDR
lo0/v4 static ok 127.0.0.1/8
vioif2/v4 dhcp ok 192.168.1.70/24
lo0/v6 static ok ::1/128
vioif0/ll addrconf ok fe80::aa40:25ff:fe00:5%vioif0/10
vioif1/ll addrconf ok fe80::aa40:25ff:fe00:6%vioif1/10
bootstrap0/ll addrconf ok fe80::8:20ff:fe3a:ce32%bootstrap0/10
bootstrap0/bootstrap6 static ok fdb0:a840:2500:5::1/64
Activity
davepacheco commentedon Nov 3, 2026
I'm not clear how bad it would be to insert a non-clean-slated but expunged sled, possibly from another rack, into a rack.
I did just test this on
berlinby:committedThe TQ config has been
Committingfor almost 10 minutes now. (Is this stuck forever? Is there a way out of this?) The sled is reporting this in the sled agent log:The sled brought up its old underlay IP:
(I was doing a bunch of expunge/add testing here.)
That seems bad. (What if this IP were in use by a sled in this rack?) Is its boostrap IP unique? At least it's not able to unlock its local storage and start control plane components.
davepacheco commentedon Nov 3, 2026
I guessed maybe the live-but-not-working sled was holding up the TQ change, but having let it sit overnight and then powered off the sled, it's still stuck
Committing.jgallagher commentedon Nov 3, 2026
No argument that it seems bad, but I don't think the IP can be in use - we never reuse sled subnet reservations (at least today, which means we have a hard cap on how many sleds can added to a rack over its lifetime):
omicron/nexus/db-queries/src/db/datastore/rack.rs
Lines 386 to 392 in 40b22e5
Yes; bootstrap addrs are derived from the NIC's MAC:
omicron/sled-hardware/src/underlay.rs
Lines 110 to 120 in 40b22e5
jgallagher commentedon Nov 3, 2026
@andrewjstone would know for sure, but I think you're going to be stuck in committing until either:
because the sled you're trying to add has to participate in order for the current epoch (which adds it) to commit?
davepacheco commentedon Nov 3, 2026
I think this is still a risk (probably small) if it comes from another rack.
Ah, that makes sense. I did successfully remove it from TQ and that epoch committed.
Since the sled knows it's been expunged from another TQ, I wonder if it could communicate this to Nexus and have Nexus abandon the attempt to add it in that case?
I'm also not sure how any of this works if the sled was not aware that it had been expunged.
Gate sled-agent startup on trust quorum unlock
andrewjstone commentedon Nov 3, 2026
Sorry for not commenting earlier. I've been digging into the larger problem of why the sled-agent is running once a sled has been expunged and rebooted. I think #11684 should fix it.
Sled-agent really shouldn't be running after an expunge and reboot. So it can't talk to Nexus at all. We may be able to get it's status via
omdb nexus trust-quorum proxy-statusbut that's not great from a customer perspective.andrewjstone commentedon Nov 3, 2026
I tested this on voxel. I started with a 4 node cluster, then removed
g2from the trust quorum. I waited for it to commit.Then I logged into
g2, which I had not yet rebooted, and checked the status of sled-agent with the new bootstrap API endpoint and the ipadm state, and rebooted:I then logged back in and did the same thing. The gate held and eventually the state transitioned to
expunged. I added some spaces for clarity.andrewjstone commentedon Nov 3, 2026
I realized that the testing I posted above was for #11684