Hi Mark,
I think I know what’s happening.
If your Python code registers multiple callbacks for any given variable (which it sounds like it does, in the case of the separate action callbacks), then when a new codec is received (which, as you note, happens when you open an event file), only the most-recently-registered callback for each variable will remain active. This is a bug that should be trivial to fix, but it will require a change in C++ code, so you’ll need to update to a new MWorks build to take advantage of it.
To work around the issue, you could register the separate action callbacks by code, rather than by name. That is, replace
conduit.register_callback_for_name(name, cb)
with
conduit.register_callback_for_code(conduit.reverse_codec[name], cb)
Alternatively, if you’re registering callbacks on most variables just to track their values, you could handle that with a single callback registered via conduit.register_callback_for_all_events
, or you could use a CachingIPCClientConduit.
Cheers,
Chris