Time Nick Message 18:56 MTDiscord sfan5, Krock i commited on #14793 regarding your changes. Cumulating all comments i think i found the best solution to have std::variant, c++ std::function and parserData use 🙂 Now we have a common proper interface for all in pure C++ and optional std::string,bool third arg 18:56 ShadowBot https://github.com/minetest/minetest/issues/14793 -- refacto: rework the GUI element handler function by nerzhul 19:32 MTDiscord What makes LBMs not 100% reliable? 19:38 MTDiscord That's an interesting question, but probably the wrong one. What would cause them to be 100% reliable? Nothing else in MT is. While we use some components, like SQLite, that are designed to offer that kind of transactional reliability, not only are they not relevant here, but we generally defeat those reliability mechanisms in the interest of performance. 19:38 MTDiscord You'd think that it should be possible to 100% reliably perform some action on load since, if something crashes before it completes, it would just run again next load anyway, but 🤷 the fact that we allow some leakage is at least consistent with our overall approach to reliability anyway. 19:40 MTDiscord As for specific causes, somebody would probably have to investigate which is seriously annoying to do because (1) the problem is quite rare, happening some 0.001% of the time or something, and (2) it's hard to tell when something has loaded but LBMs have not run because the problem of detecting things that are loaded is basically the same as for setting up LBMs, so whatever we do has a problematic chance of failing exactly where LBMs 19:40 MTDiscord fail. 19:41 MTDiscord If you're looking for hypotheses, couple things to check would be race conditions between blocks becoming loaded/unloaded and LBMs actually being scheduled/ran, and resource use limitations, possibly intentional, like the way we abort ABM runs if they would exceed a time limit, or we delete entities or node timers if there are too many in any mapblock. 20:00 sfan5 I don't think there's any reliability problem with LBMs 20:07 MTDiscord https://cdn.discordapp.com/attachments/747163566800633906/1258514530342797454/iu.png?ex=6688527e&is=668700fe&hm=9b45ed470de0f1d3cfb4b54c3a8d10aea1a70e8a4a7df32e641ddb641a849fce& 20:07 MTDiscord Maybe that's the real answer to ExeVirus' question 🤔 22:29 MTDiscord Yep, could be the answer. The question is, how to test.... LBMs happen when a block is loaded, correct? So I could set a consistent distance, and teleport via script at the exact time blocks come unloaded... Then have an LBM that is just a counter, and ensure the counter is always some multiple of the expected count. If the count is not a multiple (i.e. less) then something was unreliable 22:31 MTDiscord And to test under heavy load is trivial, just spawn a 500 mob fight like I already am for the entity performance improvement testing 23:51 MTDiscord The problem is that I've never seen anyone identify the conditions that aggravate it, and it might not be just generic "heavy load", but specific situations like having a lot of mapgen running, or having a lot of external background load outside of MT, or disk latency vs CPU load, etc.