You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
There are two related problems on display. A difference in behavior between pvAccessCPP and PVXS libraries which I didn't account for when updating P4P. Also, a different in how pvAccessCPP worked vs. how it was documented.
Even with pvAccessCPP there are situation where makeChannel() could be called with a PV name without a previous call to testChannel() with that name. eg. this is how the "magic" _server channel name is implemented. Still, was mostly hidden by how pvAccessCPP handled multiple Providers.
PVXS makes this explicit by requiring the implementations of Source.onCreate() handle direct connection without a previous search.
However, P4P does not correctly account for this. makeChannel() needs to be allowed to return None to indicate disinterest. (PVXS will then try the next provider)
Description
Only one
DynamicProvider
is really supported, the second one is dispatched incorrectly.To reproduce
Run the following server:
Then run
pvget foo
Observed behaviour
bar
is also called, raising an assertion error:Expected behaviour
Only
foo
channel is called.Stopgap solution
The text was updated successfully, but these errors were encountered: