2002 2003 2004 2005 2006 2007 2008 <2009> 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 | Index | 2002 2003 2004 2005 2006 2007 2008 <2009> 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 |
<== Date ==> | <== Thread ==> |
---|
Subject: | Re: Local CA out links broken during PINI |
From: | Ralph Lange <[email protected]> |
To: | Andrew Johnson <[email protected]> |
Cc: | EPICS Core Talk <[email protected]> |
Date: | Fri, 20 Feb 2009 10:51:43 +0100 |
Good points. I didn't think about external CA links, though.As nowadays using CA/CP links is the only way to link records without forcing them into the same lock set, it's a pity that this doesn't work for PINI processing.
Idea: Why not introduce an additional PINI sweep, and change the PINI field to be a three-option choice? "NO", "YES", "UP": NO and YES yield the classical behaviour, while "UP" puts the record into the second PINI phase, that runs *after* the CA client and server are started (I.e., when the IOC is UP). Should be compatible, shouldn't break existing stuff, allows CA/CP in PINI processing.
For the Redundant IOC , it has the interesting side effect that you can select if the record should be processed at boot time, or after the IOC has become active. (If the IOC switches back and forth between active and inactive, would UP records be processed whenever it gets active? Do we need to distinguish between "Once UP" and "Whenever UP"?)
Ralph On 18.02.2009 16:59 Andrew Johnson wrote:
On Wednesday 18 February 2009 06:56:57 Ralph Lange wrote:This sounds like a fix could be feasible and/or an issue on Andrew's list, doesn't it?Unfortunately I just realized that doing so would break the Redundant IOC interface. Those xxxRun() calls are in iocRun() whereas the initialProcess() call is in iocBuild(), so in a redundant IOC the PINI processing happens at start-up but the CA links don't get connected until the redundancy executive says "go" (which could be weeks or even months later). I'm not sure if the initialProcess() call could/should be moved, but doing so would change the meaning of some of our initHooks.The other thing that worries me is that I think the act of connecting up the CA links probably also enables any CP or CPP input links to start processing, so it's possible that they could pre-empt the PINI processing (especially if they're pointing at an external IOC which is already running).- Andrew