DataDam Vs. Disable Vs. Disable Solver functionality clarification

I thought that disabling a component meant that no data flowed through it, and that no processing was done by that component.

It appears my first assumption was incorrect. Data does flow though it, and rewiring upstream causes re-computation downstream of components like SPLIT and MAPSRF even when the Solver is disabled!

I have had to insert DataDam components everywhere.
(is there a way to create a master button for many DataDam’s such that one click wil pass all data through ALL the linked DataDam components?)

So what does Disable sovler really disable?
What does DISABLE component really disable?

Disabling a component prevents it from computing new data. Disabling the solver prevents all objects from computing new data.

Neither of those two prevent objects from expiring when their data goes stale.

Only the datadam does that.

Thanks for that David. Could you expand a little please.
I am asking about PASSING data through a disabled component.
ie: changing wiring up stream of the disabled component causes recomputation DOWNSTREAM of the disabled component. Why isnt data blocked?

Also, is it possible to change the default setting on a data dam component such that opening the document for the first time does not permit all data dams to pass data?

My goal is to Dam all data until I specifically require that section to be recalcualted, even on opening the document (this is because all the data is read in from an INPUT module upon opening the document)

Data and recomputation are different things. Computation is the whole process or behaviour of the abstract component (which is more than the specific or individual logic of each specific component), data is the content that goes in or comes out. If the component is disabled, the data is not transformed because the individual logic of the specific component is not called, but the component has to be computed anyway because it needs to be reactive to inform successive components. If a disabled component receives that a predecessor component has been changed/expired-and-needs-to-update-its-status, it will be computed, but it does not call its internal individual logic and does not send data out, but it does inform successor components that it has been expired.

You have to run the process manually e.g. with a toogle and Stream Filter/Gate or other process filter, and not use components that work even when the previous components do not send data to it and use a better alternative, which depends on what you actually want to do (and not how).

That shouldn’t happen, if it does it’s a bug.

However a disabled component will expire all downstream objects if it gets an expiration message itself. Then those components will be expired and unless they are also disabled, they will recompute, just without any data from the disabled component. Is that what you’re seeing?

Yeah I agree that makes more sense as the default behaviour for manually triggered dams. Currently cannot be changed though, I’m looking into what it would take to change this but if it looks like I’d have to add a lot of dangerous code with difficult to predict side-effects I probably won’t risk it.

This is undoubtedly what is happening. I have not tested them to see what, if any output they make after the minutes of recomputing, but I guess this begs the question, why would they recompute anything?
If an upstream object goes invalid/disabled, it would seem logical to either hang onto the data they have, or discard the data but NOT recompute anything.
I believe that if I remove the wire from the Components ouotput to the next one downstream, there is no downstream computing (at least I think I have that right) so why is disabling that component any different?

Roger that! I can imagine the Unit tests that must be needed for this codebase.
Perhaps just create a new, similar beta module called DataWall that has this as default. Ill test it for you :slight_smile:

There is a way of disabling/enabling multiple components using metahopper.

You can also use it to activate data dams

Thank you for that suggestion. Can you give me a hint what modules I would need or which item number from that video pertains to this task pls )
I am also not clear if it will be possible to set the start of the Dams BEFORE data has flowed through them to all the downstream modules