diff --git a/packages/node_modules/@node-red/runtime/lib/api/comms.js b/packages/node_modules/@node-red/runtime/lib/api/comms.js index 8b673f043..9fa749094 100644 --- a/packages/node_modules/@node-red/runtime/lib/api/comms.js +++ b/packages/node_modules/@node-red/runtime/lib/api/comms.js @@ -56,9 +56,14 @@ function handleStatusEvent(event) { let retain = true; if (event.status.ephemeral === true) { retain = false; - status._retainedStatus = retained["status/" + event.id] || {}; + status._retainedStatus = retained["status/" + event.id]; } publish("status/" + event.id, status, retain); + if (status._retainedStatus) { + // publish will delete the retained status if retain is false + // Need to keep this status to restore ephemeral statuses + retained["status/" + event.id] = status._retainedStatus; + } } } function handleRuntimeEvent(event) {