Fix ERROR_CLUSTER_NODE_UP (0X000013C0) – Node is Up
This error means the cluster node is already online, but something is triggering a false alert. We'll fix the root causes: stale state, service glitches, or network timing.
Cause #1: Stale Cluster Node State – The Most Common Culprit
I see this all the time. A node gets rebooted or disconnected, and when it comes back, the cluster database still thinks the node is in a transient state from before. The error 0X000013C0 pops up as an informational event, but it can flood your event logs or break monitoring tools that flag any error code.
Here's the fix. Open PowerShell as Administrator on any node in the cluster. Run this command:
Get-ClusterNode | Select-Object Name, State, NodeInstance
You'll see output like:
Name State NodeInstance
---- ----- ------------
NodeA Down 12345
NodeB Up 56789
If a node shows Up but still throws the error, the cluster database has a stale entry. Force a state refresh:
Suspend-ClusterNode -Name NodeB -Drain
Resume-ClusterNode -Name NodeB
What to expect: After Resume, the node will go through a quorum check. You should see the event log stop repeating the error. Wait 30 seconds and check the cluster manager – the node should show Up without warnings.
If that doesn't clear it, try a full node reset. On the problem node itself, from an elevated PowerShell:
Stop-Service -Name ClusSvc
Start-Service -Name ClusSvc
Start-Sleep -Seconds 10
Get-ClusterNode
After restarting the service, the node rejoins the cluster fresh. The error should vanish.
Cause #2: Cluster Service Stuck in a Loop
Sometimes the Cluster Service (ClusSvc) gets hung during a node transition, especially after a forced shutdown. The service reports the node as up, but internal state machines don't align. This is common on Server 2019 and 2022 when you have aggressive power management or third-party backup agents that freeze the service.
Check the cluster log for repeating patterns. Run this on the affected node:
Get-ClusterLog -Node NodeB -Destination C:\ClusterLogs
Open the generated .log file (usually C:\ClusterLogs\Cluster.log) and look for lines containing 0x13C0 or NODE_UP. You'll see something like:
000015F4.00000ABC::2025/04/09-10:23:45.123 INFO [NCM] Node NodeB is UP (0x13c0)
If that line appears every few seconds, the service is stuck in a loop. The fix: stop the cluster service, clear the cached node state, and restart.
Here's the exact sequence. On the problem node, run these commands one at a time:
Stop-Service -Name ClusSvc -ForceRemove-Item -Path "HKLM:\Cluster\Nodes\*" -Recurse -Force– this clears stale node entries from the registry cache. Warning: Only do this if the node is the one throwing the error and you have quorum on other nodes.Start-Service -Name ClusSvc
What to expect: After the service starts, the node will re-discover the cluster. It might take 20–30 seconds. Then check the event log – the error should stop. If you still see it, move to cause #3.
Cause #3: Network Heartbeat Timing Issues
This one tricks a lot of people. The error shows up when a node is actually up, but the cluster's heartbeat network between nodes has intermittent delays. The cluster sees the node as up, then a heartbeat packet drops, and the error fires. It's not a real node failure – it's a network timing glitch.
You'll know it's this cause if you see the error paired with EVENT_ID 1135 (Node removed from cluster) in the System log, and the node re-joins quickly. The fix is to adjust the heartbeat timeout or fix the network.
First, check the current heartbeat settings on any node:
Get-ClusterParameter -Name CrossSubnetDelay, CrossSubnetThreshold
Default values are CrossSubnetDelay=1000 (1 second) and CrossSubnetThreshold=5. If you're on a slow network (10 Mbps, VPN, or high-latency WAN), these are too tight. Increase the delay to 2000 and threshold to 10:
(Get-Cluster).CrossSubnetDelay = 2000
(Get-Cluster).CrossSubnetThreshold = 10
What to expect: The cluster nodes will have a 2-second heartbeat interval and allow 10 missed heartbeats before declaring a problem. This gives flaky networks more time. After changing these values, restart the cluster service on all nodes for the change to take effect:
Restart-Service -Name ClusSvc -Force
If you're on a single subnet (not cross-subnet), use SameSubnetDelay and SameSubnetThreshold instead. The fix is the same logic.
Also, check your network adapter settings. Disable TCP offloading on the heartbeat adapter:
Disable-NetAdapterChecksumOffload -Name "Heartbeat" -TcpIPv4 -UdpIPv4
Replace "Heartbeat" with the actual adapter name used for cluster communication. This stops the NIC from batching packets, which can cause heartbeat delays.
Quick-Reference Summary Table
| Cause | Symptom | Fix | Time to Fix |
|---|---|---|---|
| Stale cluster node state | Node is up but error repeats after reboot | Suspend-ClusterNode + Resume-ClusterNode or restart ClusSvc | 5 minutes |
| Cluster service stuck in loop | Error appears every few seconds in log | Stop service, clear registry cache, restart service | 10 minutes |
| Heartbeat timing issue | Error paired with EVENT_ID 1135 | Increase CrossSubnetDelay and CrossSubnetThreshold, disable TCP offloading | 15 minutes |
If none of these work, run a full cluster validation (Test-Cluster) to check for hardware or configuration faults. But 9 times out of 10, it's one of the three causes above. Start with cause #1 – it's the quickest and solves most cases.
Was this solution helpful?