I'm not fully understanding what you are asking. Maybe if I give more details about our delivery pipeline that may help.
It looks like this
JobAA > JobA | JobB/C | Job D
JobAA - This is a build job initiated from a Gerrit review trigger, each run of this job creates a unique build output that needs testing
JobA - This is just a prep job for Jobs B and C used to define the parallel test execution and the join
JobB/C - These jobs take the output from JobAA and load onto various hardware platforms and run a verification suite, these tests required dedicated HW resources and can run for long periods of time
JobD - This 'publish' job is configured to run when JobB and JobC complete with a 'Stable' status and reports back verification success to Gerrit
Because of some instability in our hardware test suite (Job B/C) it can be common for the jobs to fail because of issues unrelated to the current build being tested. If we simply rerun that job it may pass the second time at which point we want JobD to run to report successful test back to Gerrit.
Unfortunately it appears that when job B or C fail they are still being taken off the list of pending jobs for the join. Which means a subsequent rebuild of the failing B/C job will show the error displayed above '[Join] Pending does not contain jobC'. If jobA is setup to trigger jobD when build is stable, why is a failing build affecting the pending join?
As mentioned earlier as a workaround we can do a rebuild of jobA which will cause jobB/C to both run and assuming success will trigger jobD. However since jobB/C require limited test HW resources we want to avoid this so we don't delay other instances of this build pipeline that may also be running.
One other note the join is configured using the 'Trigger parameterized build on other projects' option.
This is an issue for Join plugin.