Open S-S-X opened 3 years ago
Possibly another, but not verified, similar node timer issue after jump. Switching station were removed and placed again before I was able to verify issue. However as player reported that network starter working after digging and placing switching station again it most probably was also because of missing node timer.
There was 6 isolated networks within ship, only one of those networks failed.
Do i get this right: only some nodetimers did not get copiedmoved properly? O_o
I'm not sure how that can happen, the nodetimer-move logic is pretty atomic and straightforward, only thing that could be is that the node-id/name wasn't in the collected node-with-nodetimers-list but this isn't the case here... (engine-bug possibly?)
Maybe there's something wrong with the node timers (or how they are being used?), the other day I had to restart a luacontroller on my tree farm because it had stopped, and I had the same thing happen to a different one a while ago...
Do i get this right: only some nodetimers did not get copiedmoved properly? O_o
Yes, exactly. Verified with inspector that one of switching stations did not have nodetimer at all while all other 5 switching stations had nodetimers running. Also jumped thing was fleet ship with 3 engines.
Maybe there's something wrong with the node timers (or how they are being used?), the other day I had to restart a luacontroller on my tree farm because it had stopped
Yeah sounds like it could be something else with nodetimers, only suspected jumpdrive because nodetimer happened to be missing right after jump. And then shortly after got that other report for network not working after jumped. Personally I've not yet noticed any stationary thing missing timers and most things I have are either stationary on not jumped for some time, not really enough samples for good statistics.
Btw, was pandorabox still using so called lightweight interrupts for luacs? That is nodetimer while other option (default) is globalstep.
If luacontroller_lightweight_interrupts
is set then it is lightweight interrupt with nodetimer.
Btw, was pandorabox still using so called lightweight interrupts for luacs? That is nodetimer while other option (default) is globalstep. If
luacontroller_lightweight_interrupts
is set then it is lightweight interrupt with nodetimer.
Yes, and it's actually two settings: https://github.com/pandorabox-io/pandorabox.io/blob/master/minetest.conf#L109-L114
Recent (relevant) discussion on the mt discord:
From Warr1024:
One of the harder parts about node timers is that you need a chain of events to trigger them. An ABM is something you can just register standalone and it "just works", but with a node timer you need to make sure that you always have a timer event pending any time you're going to need one, or the node will just sit there dead I've ended up having "patrol ABMs" for nodes whose job is just to make sure that node timers are already pending.
Happened again, right after jump two switching stations missing nodetimer. Both broken switching stations have few things in common:
There was also third network within engine area where 2 broken switching stations are but fully contained withing engine area and not crossing any borders, that one works correctly.
This might have something to do with technic network reset during jump, still weird thing is that nodetimer is missing.
Zlo after jump sometimes i need to dig switch stations so ship regain power Zlo not always i think it depend on lag couse when is fewer player i dont occur that effect but i didnt find anny pattern Zlo SX double ship (fleetcontroller with power module and habbit module (both switchstation is in habbit module)
I dig the cable under switching station after I jump scout to charging position. After placing cable again, charging starts. Need to do this every time. The switching station is in a corner of the r1 scout.
I dig the cable under switching station after I jump scout to charging position. After placing cable again, charging starts. Need to do this every time. The switching station is in a corner of the r1 scout.
@SwissalpS I believe this might be different issue but might be caused by same thing which is network reset during jump. Would be interesting to see if in your case switching station does still have nodetimer running. Good thing is that you can consistently reproduce it 😄
a workaround for this may just be to use some kind of "sentinel" abm's that trigger the nodetimers again, but then we are at suqare 1 again and still have an abm in place...
Another workaround would be (in this special case) just to kick off all technic:switching_station
nodetimers after a jump in a minetest.after
function.
Figuring out the root-cause for this is gonna be interesting :confounded:
@SwissalpS i'm having trouble reproducing this in singleplayer, did it look like this?
@BuckarooBanzay
I jump scout to charging position
@SwissalpS can confirm but I think keyword here is "charging position" which means that probably switching station is outside of jd and reason why I believe that issue is bit different: no switching station so nothing to reset.
there is a switching station on jd and on network that feeds the charge. Your image is similar to my situation only that r1 does not have solars on it. The connection point is behind the switching station (furthest away, on your screenshot)
After jump again but this time it was also SCI missing nodetimer. Same switching stations as before too missing nodetimers. SCI was not there before.
Seems like 1hit found a related issue:
<1hit> well, this is not good: after jumping, the luac loses any inflight interrupts. Ok. I added a mesecon strobe to a pin driven by a delay and an inverter gate (so that its faster than a blinky plant). But after jumping, the inverter is locked. False in and False out. :(
<1hit> I guess I'll try blinky plant.
<i_am_me> yeah lucs have... a little issue when moving
<1hit> The interrupt schedule is supposed to be in the node's meta; this is why they disabled the IID (IID interrupts used a global and not node meta).
<1hit> Wierd that jumping would break it.
not sure this is related: jd does not always send jump confirmation when triggered by digiline. It has done that for as long as I can remember. Have overflown my history of jd code and all (that 'work') have some kind of fallback mechanism even if just keep trying to jump until jump into self error triggers next target to be set.
Well it is definitely supposed to always send a message back... 🤔 https://github.com/mt-mods/jumpdrive/blob/c543e62d46bfcd5154dcb01ba09b1ad4f68923c2/digiline.lua#L91-L109
Self-contained injectors (which also use nodetimers since https://github.com/mt-mods/technic/commit/fa0c79ec3112a22dc1f805f0c72981ee77c47748) seem to be affected as well, they sometimes cease to work after jumping until they are manually disabled and reenabled again via formspec.
I tested this today a bit and it looks like the minetest.get_node_timer():set()
function gets called on every relevant node (switching stations, sci, etc) but some of the nodetimers are still missing afterwards :confused: looks like an engine issue or maybe an area-not-loaded-issue, haven't tested it that far...
One of fleet ship switch node timers gone missing during jump and not moved as it should. Quarries were stuck at "finished" state, this state tells that everything was most probably working correctly before jump and node timer disappeared during jump.
There was 6 isolated networks within ship, only one of those networks failed.
This could be problem in technic mod too but adding issue here as I suspect that something unusual happened during jump and caused node timer failure / skipped node timer restart.
edit. Added SCI and that also lost nodetimer after jump.
Other reported: LuaC lost interrupts, not-gate stuck and not responding.
Does not seem to depend on any mod/node specific behavior.
Instead problem is affecting everything that uses nodetimers. For example these nodes have been losing timers, some are able to restart timers without direct player interaction and therefore problem is not detected as often with some nodes:
Some devices just have functionality to restart lost nodetimers without player interaction, autocrafters for example will do that when inventory contents change. Lua controllers can receive digiline or mesecons signals and depending on how code is written can also restart missing timer.