I'm implementing HTTP sets via a multithreaded timer for a task. this way, we can do large amounts of sets in a very small amount of time. However, the nature of this implementation requires you return an object array in the qaction building the requests.
See step 1 here
Since this is only used for HTTP sets, you're going to return null when sets aren't happening. This results in a Streamviewer message like this:
We are executing this timer every second for every row in our table which is about 36 of these per second.
To minimize this, I have a condition on the multi threaded timer linked to a toggle button (condition on group doesn't seem to stop these) and another check that will copy disabled to that toggle button every 15s.
Obviously this is more of a workaround and the ideal fix would be to to avoid these error messages entirely. But the qaction has to return something for the HTTP request to go through, so I think there's no way around this.
Has anyone seen this/know a way to disable these multi threaded group errors in the StreamViewer?
To solve this, you could create a new table that's linked to the multithreaded timer, instead of combining it with the already existing table. In that new table you could add rows for every request that must be executed. The multithreaded timer will pick up these rows, perform the HTTP request, and remove the row again. This will avoid the errors that you are seeing now in the stream viewer.
Another way is to implement the HTTP sets completely in the QAction (and run them in parallel). I think that's a good approach in this case since it's not polling, but rather ad-hoc sets that need to happen only now and then. However, then you will not be able to see the requests anymore in the stream viewer. Useful information can still be logged in the element log file though, or a parameter can be put in alarm when something goes wrong.