3 ms·
The inotify script likely has a race condition; if the directory is modified while an update is running, it won't pick up the second modification, and will wait
by ambrop7 14y ago
The inotify script likely has a race condition; if the directory is modified while an update is running, it won't pick up the second modification, and will wait in a dirty state until it is modified again.
If anyone wants a race-free solution, you should check out my NCD scripting language [1] which has an integrated command to receive directory change notifications (last example in Blockers section is a race-free solution to this problem).
[1] http://code.google.com/p/badvpn/wiki/NCD http://code.google.com/p/badvpn/wiki/NCD
- nitrogen 14y agoAfter a very brief look, NCD looks very cool. I'm curious about the first complete example. Is it possible to implement a delay of a few seconds before the IP address is reset when the link is lost?
- ambrop7 14y agoI've never seen why that would be useful. Switches and Ethernet cards aren't that unreliable in my experience, and I've plugged cables into a different switch in less than a few seconds :) I think if you really needed that, the nicest way would be to add it as a feature to net.backend.waitlink(). See source [1] of this command, and source of sleep() [2] to see how to use a timer. It may also be possible to hack it up without C-coding using blocker(), spawn(), sleep() and maybe other control commands. [1] http://code.google.com/p/badvpn/source/browse/trunk/ncd/modules/net_backend_waitlink.c http://code.google.com/p/badvpn/source/browse/trunk/ncd/modu... [2] http://code.google.com/p/badvpn/source/browse/trunk/ncd/modules/sleep.c http://code.google.com/p/badvpn/source/browse/trunk/ncd/modu...
- nitrogen 14y agoI've had a situation where an Ethernet connection would occasionally drop link for a very small fraction of a second, which unnecessarily shut down the interface and reset all TCP connections. Maybe a few second delay is too long, but 500ms seems reasonable. Also, maybe I wouldn't want to keep the old address blindly, but trigger a DCHP request if the link is dropped and restored before the timeout. Also, thanks for the pointers into the source code. It looks like I would want to make the change around line 67 of net_backend_waitlink.c. I highly doubt I'll actually get around to doing it though :).
- ambrop7 14y agoSo you really need this, would that mean you may be able to use my language for something? If so, just say, and I can add this little feature, but I wouldn't like spending time for nothing :)
- nitrogen 14y agoI haven't seen this problem recently, so don't worry about it. I appreciate the offer, though. Maybe some day I'll look into adding the feature for my embedded Linux systems, if I ever add Ethernet disconnection detection.
- deleted 14y ago[deleted]