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
> On 17.02.2009 21:30 Jeff Hill wrote:
> > FWIW: The CA client does not connect via TCP through the CA server when
> > it’s a local channel, and instead the db_xxxx functions are called
> > directly. A local channel is one that is hosted within the same IOC as
> > the client library context. Therefore, at least rsrv_init and rsrv_run
> > need not complete prior to connecting a local channel. As Andrew
> > mentioned, the dbCa facility would definitely need to be running first,
> > however.
> >
> > Jeff
> >
> >> -----Original Message-----
> >> From: [email protected]
> >> [mailto:[email protected]] On Behalf Of Andrew Johnson
> >> Sent: Monday, February 16, 2009 9:37 AM
> >> To: [email protected]; [email protected]
> >> Subject: Re: Local CA out links broken during PINI
> >>
> >> Hi Ben,
> >>
> >> On Monday 16 February 2009 05:07:12 Benjamin Franksen wrote:
> >>> it seems that CA output links do not work at all during PINI processing
> >>
> >> if
> >>
> >>> the target record is on the same IOC.
> >>>
> >>> I think this is a bug, as I could not find any note on this behaviour
> >>> in the Developer's Guide.
> >>
> >> Please consider the task of bringing up an IOC, i.e. what iocInit does.
> >> Here
> >> are some lines from iocInit, in order of execution:
> >>
> >> initialProcess();
> >>
> >> /* Start CA server threads */
> >> rsrv_init();
> >> ...
> >> /* Enable scan tasks and some driver support functions. */
> >> scanRun();
> >> dbCaRun();
> >> ...
> >> rsrv_run();
> >>
> >> The CA server has not even been initialized when the initialProcess()
> >> (i.e. PINI processing) takes place, and the dbCa link task which manages
> >> CA links is not running at that point either. PINI has to happen before
> >> we release the scan threads or allow CA links to connect because they
> >> can initiate record processing.
> >>
> >> We can't allow external CA clients to connect before the PINI processing
> >> is done because they might interfere with that initialization, and I
> >> suspect it
> >> would be hard to add a separate path to the server to allow internal CA
> >> clients to connect in advance of the external ones.
> >>
> >> I agree that the documentation does not discuss PINI much, but [despite
> >> being
> >> slightly out-dated by R3.14.10] section 7.4 of the AppDevGuide does make
> >> clear that initialProcess() happens before rsrv_init().
> >>
> >> - Andrew
--
The best FOSS code is written to be read by other humans -- Harold Welte
- Replies:
- Re: Local CA out links broken during PINI Ralph Lange
- References:
- Re: Local CA out links broken during PINI Ralph Lange
- Navigate by Date:
- Prev:
Re: Local CA out links broken during PINI Ralph Lange
- Next:
Re: Ideas for Codeathon Andrew Johnson
- Index:
2002
2003
2004
2005
2006
2007
2008
<2009>
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
- Navigate by Thread:
- Prev:
Re: Local CA out links broken during PINI Ralph Lange
- Next:
Re: Local CA out links broken during PINI Ralph Lange
- Index:
2002
2003
2004
2005
2006
2007
2008
<2009>
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
|