Reset msgs being passed on by delay node in rate limiting mode

[{"id":"48158429.57399c","type":"inject","z":"85a8fc1f.a06b8","name":"","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":620,"y":160,"wires":[["1ffd7bc4.065bc4"]]},{"id":"1ffd7bc4.065bc4","type":"change","z":"85a8fc1f.a06b8","name":"msg.reset and msg.payload","rules":[{"t":"set","p":"reset","pt":"msg","to":"true","tot":"bool"}],"action":"","property":"","from":"","to":"","reg":false,"x":820,"y":160,"wires":[["7bdff658.f26488"]]},{"id":"7bdff658.f26488","type":"delay","z":"85a8fc1f.a06b8","name":"","pauseType":"rate","timeout":"10","timeoutUnits":"seconds","rate":"1","nbRateUnits":"10","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":1060,"y":60,"wires":[["2762aa87.58c776"]]},{"id":"2762aa87.58c776","type":"debug","z":"85a8fc1f.a06b8","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","x":1210,"y":60,"wires":[]},{"id":"28f3b2e9.748d0e","type":"inject","z":"85a8fc1f.a06b8","name":"","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":620,"y":60,"wires":[["7bdff658.f26488"]]},{"id":"db2497a9.8feb68","type":"inject","z":"85a8fc1f.a06b8","name":"","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":620,"y":120,"wires":[["675da129.ae9dc"]]},{"id":"675da129.ae9dc","type":"change","z":"85a8fc1f.a06b8","name":"msg.reset and no payload","rules":[{"t":"set","p":"reset","pt":"msg","to":"true","tot":"bool"},{"t":"delete","p":"payload","pt":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":810,"y":120,"wires":[["7bdff658.f26488"]]}]

I use the delay node in rate limiting mode to slow down the changes I send to a neopixel node

All has worked fine for years until I split the feed to the neopixel node and sent it off to another set of nodes to make a png file representation of my current lights
I then noticed, that sometimes reset messages with msg.reset = true in them were getting thru the delay node - these hadn't upset the neopixel node but did upset my image processing

So, using the above flow in testing, I realised that when I send reset msgs when the delay node buffer is empty - they are being passed on immediately

I think, that messages with msg.reset = true should be treated as node control messages and absorbed in the same way as they are when they are in the buffer and not outputted

FTAOD The simple workaround to add a switch node on the output of the delay node to not pass any message with reset in them works fine

But I think the delay node should filter them out itself

What's the thoughts?

To clarify - are you saying...
if there is nothing currently in the delay stack - and a msg.reset appears - it goes straight through,
But - if there is something in the stack then it doesn't ? (and flushes the stack so then nothing comes out ?)

I.E two different behaviours depending on if something is already being delayed ?

correct - you can use the test flow above to see it

Yes it ought to be consistent with itself. Could you raise an issue please so we can track it. Thanks

1 Like