# Agenda for Lmod Zoom Mtg 2022-05-03 - Print message when unloading a module that wasn't loaded (Issue #576) - How TCL break and LmodBreak is handled in Lmod - Q&A ## Attendees - Robert McLay (TACC, US) - Kenneth Hoste (HPC-UGent, Belgium) - Kurt Lust (Univ. of Antwerp, Belgium - LUMI User Support Team) - Matthew Cawood (TACC, US) - Ward Poelmans (Vrije Universiteit Brussel, Belgium) - Mikael Öhman (Chalmers University of Technology, Sweden) - Bennet Fauber (Univ. of Michigan, US) ## Notes ### Print message when unloading module that wasn't loaded - see https://github.com/TACC/Lmod/issues/576 - "warning" message will be printed, but exit code will remain zero - was implemented on request by Spack developers - not included in an Lmod release yet - Kenneth will try to run EasyBuild test suite on top of Lmod that includes this change - EasyBuild already sets $LMOD_QUIET, so won't be affected by this - and it probably doesn't unload modules anyway (especially none that are not loaded) ### How Tcl break and LmodBreak is handled in Lmod - slides available at https://github.com/TACC/Lmod/blob/master/my_docs/22/lmod_zoom_mtg_2022_05_03/presentation.pdf - `break` statement outside of a loop in Tcl is an error (and we'll take advantage of that) - when a break statement is hit, *none* of the changes specified by that module file get applied (and *only* that module will not be loaded) - top of FrameStk is (in some sense) buffer of changes that are made by module file which is being loaded - if break happens, all those changes are ignored by kicking out the top of the stack (see `M.LmodBreak` function) ## Q&A - Robert has not found time yet to look into problem reported by Bennet via Lmod-users mailing list - see https://sourceforge.net/p/lmod/mailman/message/37648391/ - Lmod is producing traceback 3/5 times?! - traceback are even not consistent - using Lmod 8.6.x on top of Lua 5.3 (RHEL8) - looping over hash tables in Lua 5.3 happens in random order of keys (way more than Lua 5.1 did), which could be relevant here... - problem is happening on bare `module avail` or `module spider`, also with `module spider foo` - Bennet should try the `check_module_tree_syntax` tool (module file linter) - traceback suggests towards loop being triggered - could be related to having a module file that is changing `$MODULEPATH` with location of module file being loaded - Mikael's issue (https://github.com/TACC/Lmod/issues/575) - no answer yet on this... - looks like Lmod will need to have AI capabilities? - LmodError vs LmodWarning - LmodError: totally cancels whole `module` command - LmodWarning prints a warning and does non-zero exit - LmodBreak: stops processing module being loaded, doesn't apply changes, cancels rest of module command ## Next meeting - Tue June 7th 2022 at 09:30 US Central (14:30 UTC) - topic: explaining how `module load` is processed by Lmod, stepping through the codebase - future topics: how module name is converted into an internal object in Lmod codebase