Banning tar_read() tar_meta() etc during pipeline execution breaks safe multi-plan workflows [general] #1158
Closed
MilesMcBain
started this conversation in
General
Replies: 1 comment 2 replies
-
Yeah, I think it would be feasible to check the store and use it to make a decision. |
Beta Was this translation helpful? Give feedback.
2 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
Help
Description
Hi Will,
It looks like recent work you undertook to speed up metadata writes (#1055) has had the side effect of breaking our approach to shared-targets among multi-plans.
Pretty much all of our projects use multiple plans with
_targets.yaml
. This is to do with the fact that this aligns with distinct project phases, billing milestones etc. It has worked nicely.We built ourselves some targets factories that smooth over the sharing of data between plans.
tar_external()
reads and stores the data from the provided store into the current store, andtar_external_pointer()
stores a lazy object that points to a target in another store (with a hash that can be used to determine validity). The former is for small stuff you're fine to copy, the latter is for larger stuff.Implementation details are probably not relevant (but see here if you are curious), suffice to say these targets factories make use of
tar_meta()
andtar_read()
to read from the store of another targets plan - i.e. one that is definitely not the same store as the currently running plan.So with the latest version we now see:
I feel like what we are doing is safe. Could the assertions used to block the
tar_read
andtar_meta
et.al. calls be modified to check the current store is different to the supplied store argument? It seems like they are in a position to have that information.Beta Was this translation helpful? Give feedback.
All reactions