EPICS Controls Argonne National Laboratory

Experimental Physics and
Industrial Control System

1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  <20162017  2018  2019  2020  2021  2022  2023  2024  Index 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  <20162017  2018  2019  2020  2021  2022  2023  2024 
<== Date ==> <== Thread ==>

Subject: Re: Simultaneous Channel access
From: Marty Kraimer <[email protected]>
To: [email protected]
Date: Mon, 5 Dec 2016 15:24:27 -0500
On 12/05/2016 08:45 AM, [email protected] wrote:

Hello,

 

I have an issue with Epics V4 PvaClientChannel, working in a Java environment on the v4.2.2 jars.

 

I’m developing a client application, and in normal operations, it all works fine - I can create a PvaClientChannel to the server, make PvaClientGet requests, and PvaClientRPC calls.

 

The problem occurs when I try to do more than one of these at once. For example, if the server is taking a long time to process the PvaClientRPC call, if on another Thread I attempt to do a PvaClientGet or another PvaClientRPC call, it times out when connecting to the channel in the PvaClientChannel.waitConnect(timeout) call.

 

I’ve tried everything I can think of – using the async call to PvaClientRPC.request(),



creating a new PvaClient object for each call (instead of using PvaClient.get(“pva”),


pvaClient is designed so that a process has a single instance of PvaClient.
Thus the only way the single instance of PvaClient should be obtained is via
PvaClient pvaClient = PvaClient.get(providerNames);
where providerNames can be any of
"pva"
"ca"
"pva ca"

A bug in pvaClientJava allows a process to create multiple instances of PvaClient.
Making the constructor private will fix the bug.
pvaClientCPP does this so it does not have the bug.


going back to using the ‘older’ Channel and ChannelRPC async way of doing things, but I still get the same problem.

 

The problem isn’t in the server because if I create a separate application to do the second Get or RPC call whilst the first is still waiting, then the server processes it fine.

 

The way I am creating the channels for each call is

 

PvaClientchannel pvaChannel = PvaClient.get(“pva”).createChannel(“mydevice”,”pva”);

pvaChannel.issueConnect();

Status status = pvaChannel.waitConnect(5);

 


This looks like it should work just fine so I do not understand what is wrong.


Is there another way to do this that allows multiple simultaneous channel access?

 

Please help!




How are you creating your threads?
Is it possible for you to create each thread via arguments  that include (PvaClient pvaClient,  PvaClientchannel pvaCllientChannel,...)

Then you can create the single instance of pvaClient and an instance of a connected pvaCllientChannel for each thread.
And only then let each thread start issuing channelGet and channelRPC requests.

If this is possible what happens?

Marty


 

Thanks,

 

Matt

 

-- 

This e-mail and any attachments may contain confidential, copyright and or privileged material, and are for the use of the intended addressee only. If you are not the intended addressee or an authorised recipient of the addressee please notify us of receipt by returning the e-mail and do not use, copy, retain, distribute or disclose the information in or attached to the e-mail.
Any opinions expressed within this e-mail are those of the individual and not necessarily of Diamond Light Source Ltd.
Diamond Light Source Ltd. cannot guarantee that this e-mail or any attachments are free from viruses and we cannot accept liability for any damage which you may sustain as a result of software viruses which may be transmitted in or with the message.
Diamond Light Source Limited (company no. 4375679). Registered in England and Wales with its registered office at Diamond House, Harwell Science and Innovation Campus, Didcot, Oxfordshire, OX11 0DE, United Kingdom
 



References:
Simultaneous Channel access matthew.taylor

Navigate by Date:
Prev: Re: IOC segfaults with epicsMutexLock (pmutexNode=0x0) Blaz Kranjc
Next: Epics V4 Questions - New to Epics 4 Madden, Timothy J.
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  <20162017  2018  2019  2020  2021  2022  2023  2024 
Navigate by Thread:
Prev: Simultaneous Channel access matthew.taylor
Next: RE: Simultaneous Channel access matthew.taylor
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  <20162017  2018  2019  2020  2021  2022  2023  2024 
ANJ, 06 Dec 2016 Valid HTML 4.01! · Home · News · About · Base · Modules · Extensions · Distributions · Download ·
· Search · EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing ·