Commit Graph

890 Commits

Author SHA1 Message Date
Michael Davidsaver 1e36675be5 qsrv: import softMain.cpp from Base circa 7.0.7 2023-05-09 22:24:19 -07:00
Michael Davidsaver 36dabddc1f ioc: documentation 2023-05-09 22:24:19 -07:00
Michael Davidsaver afafa09547 ioc: revise qsrv 2 prototype
ioc: check for mis-matched onStartSubscription()/onDisableSubscription()

ioc: fix subscription lifetime

ioc: catch exceptions in dbEvent callbacks

ioc: avoid unnecessary virtual

ioc: minor

ioc: fix qsrv -S

ioc: qsrvGroupSourceInit() catch+log

ioc: runOnServer avoid std::function

ioc: cleanup and simplifications.

Avoid some redundant std::map lookups.
Make Group partially const to prevent implicit ctor.

ioc: avoid typedefs only used once

ioc: overhaul Group::show().  shows triggers

ioc: MappingType

ioc: pvxsgl -> pvxgl

ioc: separate group config singleton from server singleton

ioc: remove unnecessary forward declarations

ioc: restructure pvxsInitHook

ioc: qsrv runtime disable by default

ioc: compat w/ older Base

ioc: link pvxsIoc w/ DB libs

ioc: Channel proper detection of invalid PV

ioc: no need to keep vector<dbCommon*> around

ioc: fix initial group update for mappings w/o dbChannel

ioc: redo testing

split out group tests, only run with Base >= 7.0

ioc: minor

ioc: loc_bad_alloc

ioc: avoid symbol/DTYP clash with pva2pva

ioc: test record alias in group json

ioc: test put failure when SPC_NOMOD and DISP=1

ioc: test channel filters

ioc: unnecessary capture

ioc: avoid sharing Value between multiple subscriptions

It is possible to create two subscriptions through the same channel.

ioc: group subscription include queueSize

ioc: eliminate unused atomicMonitor

ioc: consolidate GroupSource::get()

avoid some indirection

ioc: pvRequest override of atomicPutGet

ioc: fix group non-atomic put

ioc: test asTrap hooks

ioc: test putOrder also sets field order

ioc: simplify GroupConfigProcessor::loadConfigFiles()

Also ensure that groupMapMutex is held

ioc: testqgroup cover JSON def.

ioc: dbLoadGroup() use macros

ioc: pvxsl() take integer argument

ioc: display.form and info(Q:form

ioc: "NO_ALARM" -> ""

ioc: use dbServer

at least for informational callbacks.

ioc: consolidate createRequestAndSubscriptionHandlers()

ioc: eliminate ChannelAndLock

properties dbChannel doesn't need a separate DBManyLock

ioc: test that putOrder also controls field order

ioc: MappingType -> MappingInfo

Handle info(Q:time:tag
Add +type:"const"

ioc: cleanup includes

ioc: test dbNotifyCancel()

ioc: inline checkForTrailingCommentsAtEnd()
2023-05-09 22:24:05 -07:00
george-mcintyre 832c76d6e4 ioc: Add long long tests 2023-05-09 10:17:32 -07:00
george-mcintyre 26dbe50f83 ioc: Clear link field before doing group put test 2023-05-09 10:17:32 -07:00
george-mcintyre 019784bd3a ioc: Update group and single subscriptions to bind contexts to subscription not client connection 2023-05-09 10:17:32 -07:00
Michael Davidsaver d2dcad708c ioc: update testioc.cpp 2023-05-09 10:17:32 -07:00
Michael Davidsaver ff004fb5a5 ioc: extend coverage.sh to ioc/ 2023-05-09 10:17:32 -07:00
Michael Davidsaver cf4b568e64 testPlan(): select isolated network configuration for QSRV 2023-05-09 10:17:32 -07:00
George McIntyre 93e4d3eef3 ioc: qsrv 2 prototype 2023-05-09 10:17:32 -07:00
Michael Davidsaver e7a0775d76 server: Add extra call() to Server::stop()
Not a full solution, though should prevent test1000
from occasionally leaving evbase workers dangling

> not ok 1001 - Instance leak ServerGPRConnect : 217
> not ok 1002 - Instance leak SharedPVImpl : 984
> not ok 1003 - Instance leak StructTop : 1202
> not ok 1004 - Instance leak UDPListener : 2
> not ok 1005 - Instance leak evbase : 2
> not ok 1006 - Instance leak evbaseRunning : 2
2023-05-09 10:17:32 -07:00
Michael Davidsaver c197ad6a1b doc: clarify compatibility and NT* helpers 2023-05-08 10:31:04 -07:00
Michael Davidsaver 6e92a1a3cb NTEnum add display.description 2023-05-08 10:05:24 -07:00
Michael Davidsaver 20e0fa8ca5 client: re-define the meaning of poke() 2023-04-17 15:54:29 -05:00
Michael Davidsaver dd2f076b4a client: only advance search bucket during normal search 2023-04-17 15:54:29 -05:00
Michael Davidsaver fe5a35eb02 client: only reschedule searchTimer on expiry 2023-04-14 10:14:30 -07:00
Thomas Ives 07713faff4 fix: schedule initial search use separate event from the generic work queue
By using `tcp_loop.dispatch` to schedule the initial search for a
channel, we are placing the callback into the same work queue that is
used by e.g. `MonitorBuilder::exec` to schedule the call to
`Channel::build`.  In situations where lots of channels are being
created simultaneously this can result in lots of single channel search
requests being sent because the work queue alternates between calls to
build a channel and the initial search.

In this commit we instead use a dedicated `evevent` to schedule the
initial search to allow the `initialSearchBucket` to be filled before we
send the initial search request. We delay the initial search by 10 ms to
give more time for the bucket to be filled.  See
github.com/mdavidsaver/pvxs/pull/39 for a discussion of how this delay
was chosen.
2023-04-14 10:14:30 -07:00
Thomas Ives 7ae659678f fix: do not re-search for other channels when doing initial channel search
When creating a large number of Channels at once, we can end up calling
`ContextImpl::poke(true)` many times in quick succession.  This results
in a flood of UDP broadcasts where we are searching for channels that we
only just sent out the initial search request for.

This can easily lead to packets getting lost and us not receiving a
reply for some Channels.  Moreover, as we keep resending search requests
for Channels, we reschedule them further and further in the future (as
`nSearch` is increased).  After the dust settles and we stop poking,
this can result in a wait of several seconds before a Channel which we
have not found is searched for again.

In this commit we avoid this issue by using a separate bucket to hold
channels waiting for their initial search request.  Rather than poking
`tickSearch` to do the initial search and also resend requests for
outstanding channels, we schedule a call to new call `tickSearch` which
will only send the initial search requests.  As such, we will avoid
rebroadcasting search requests for channels we have only just searched
for.

We have prompted the `discover` bool to an enum to distinguish between
the now three different situations `tickSearch` can be called in.
2023-04-14 10:14:30 -07:00
Michael Davidsaver ad9ba0f085 Add NTScalar::form 2023-04-14 10:14:30 -07:00
Michael Davidsaver 5897fe273e fix intermittent of testsock
Switch to blocking socket, with poll()ing for expected RX failures.
2023-04-14 10:14:30 -07:00
Michael Davidsaver c8f28f373a bundle: OSX use -rpath for bundled libevent 2023-04-10 08:52:44 -07:00
Michael Davidsaver 6b63e14140 cmake: skip CMAKE_DEBUG_POSTFIX 2023-04-10 08:47:17 -07:00
Michael Davidsaver 08dd88b4da update bundled libevent 2023-04-10 08:47:17 -07:00
Michael Davidsaver 0fdfeb72d1 Add testudpfwd 2023-04-10 08:47:15 -07:00
Michael Davidsaver 266ee52704 server: bind both wildcard for UDP
When possible, bind both ipv4 and ipv6 wildcard addresses
for UDP.  Even when only binding ipv6 address for TCP (Linux)
2023-04-10 08:44:37 -07:00
Michael Davidsaver b31a354915 improve localhost multicast forwarding
On Linux (at least) packets received through the LO
may have non-LO origin addresses...
2023-04-10 08:44:37 -07:00
Michael Davidsaver fa4294a975 pvxmonitor option to show queueSize 2023-04-06 11:45:41 -07:00
Michael Davidsaver c373da671b server: fix default monitor queueSize to 4 2023-04-06 11:45:41 -07:00
Michael Davidsaver 25780f9506 1.1.4
PVXS Python / win64 3.10 (push) Failing after 1s
PVXS Python / win64 3.5 (push) Failing after 1s
PVXS Python / win64 3.6 (push) Failing after 1s
PVXS Python / win64 3.7 (push) Failing after 1s
PVXS Python / win64 3.8 (push) Failing after 1s
PVXS Python / win64 3.9 (push) Failing after 1s
PVXS EPICS / Native Linux with 3.14 (push) Failing after 2s
PVXS EPICS / Native Linux with 3.15 (push) Failing after 2s
PVXS EPICS / Native Linux with clang (push) Failing after 3s
PVXS EPICS / Native Linux (WError) (push) Failing after 2s
PVXS EPICS / Native Linux (c++17) (push) Failing after 2s
PVXS EPICS / Native Linux with libevent stable (push) Failing after 2s
PVXS EPICS / Cross mingw64 DLL (push) Failing after 2s
PVXS EPICS / Cross mingw64 static (push) Failing after 2s
PVXS EPICS / Native Linux with 7.0.2 (push) Failing after 2s
PVXS EPICS / Linux centos 7 (push) Failing after 2s
PVXS EPICS / Linux fedora 34 (push) Failing after 2s
PVXS Python / linux64 test (push) Failing after 1s
PVXS Python / linux 2.7 i686 (push) Failing after 7s
PVXS Python / linux 2.7u i686 (push) Failing after 8s
PVXS Python / linux 3.5 i686 (push) Failing after 8s
PVXS Python / linux 3.6 i686 (push) Failing after 7s
PVXS Python / linux 3.7 i686 (push) Failing after 7s
PVXS Python / linux 3.9 i686 (push) Failing after 7s
PVXS Python / linux 3.8 i686 (push) Failing after 9s
PVXS Python / linux 2.7 amd64 (push) Failing after 7s
PVXS Python / linux 2.7u amd64 (push) Failing after 7s
PVXS Python / linux 3.5 amd64 (push) Failing after 7s
PVXS Python / linux 3.6 amd64 (push) Failing after 7s
PVXS Python / linux 3.7 amd64 (push) Failing after 7s
PVXS Python / linux 3.8 amd64 (push) Failing after 7s
PVXS Python / linux 3.9 amd64 (push) Failing after 7s
PVXS Python / linux 3.10 amd64 (push) Failing after 7s
PVXS EPICS / OSX (push) Cancelled after 0s
PVXS EPICS / RTEMS5 (push) Cancelled after 0s
PVXS EPICS / vs2019 DLL (push) Cancelled after 0s
PVXS EPICS / vs2019 static (push) Cancelled after 0s
PVXS Python / osx 2.7 intel (push) Cancelled after 0s
PVXS Python / osx 3.10 intel (push) Cancelled after 0s
PVXS Python / osx 3.6 intel (push) Cancelled after 0s
PVXS Python / osx 3.7 intel (push) Cancelled after 0s
PVXS Python / osx 3.8 intel (push) Cancelled after 0s
PVXS Python / osx 3.9 intel (push) Cancelled after 0s
1.1.4
2023-04-03 09:30:24 -07:00
Michael Davidsaver be71a99865 reset event_set_log_callback() during test cleanup 2023-04-03 09:30:24 -07:00
Michael Davidsaver 3e95f502a4 1.1.4a1 2023-04-03 07:35:30 -07:00
Michael Davidsaver 9449059d8b expose wrappers for some evutil as expert API 2023-04-02 20:21:53 -07:00
Michael Davidsaver a012b9ffe0 testStrEq() better diff 2023-03-28 15:21:39 -07:00
Michael Davidsaver c25c6766e5 typo 2023-03-28 15:21:39 -07:00
Michael Davidsaver 303bc61079 apply loc_bad_alloc to owned_ptr
Distinguish location of owned_ptr failure
2023-03-28 15:21:39 -07:00
Michael Davidsaver d692d7da2c loc_bad_alloc 2023-03-28 15:21:34 -07:00
Michael Davidsaver 46fe3f921b msvc build compat
Sometimes /wd4800 gets interpreted as a path.
No idea why only sometimes...
2023-03-26 18:19:16 -07:00
Michael Davidsaver 8cde51f169 GHA update 2023-03-26 18:14:26 -07:00
Michael Davidsaver 92fb0a4afa client: fix delta sync of Compound
cf. cc5d382930
2023-03-26 18:14:21 -07:00
Michael Davidsaver f6d2e402bc 1.1.3
PVXS Python / win64 3.10 (push) Failing after 1s
PVXS Python / win64 3.5 (push) Failing after 1s
PVXS Python / win64 3.6 (push) Failing after 1s
PVXS Python / win64 3.7 (push) Failing after 1s
PVXS Python / win64 3.8 (push) Failing after 1s
PVXS Python / win64 3.9 (push) Failing after 1s
PVXS EPICS / Linux centos 7 (push) Failing after 2s
PVXS EPICS / Linux fedora 34 (push) Failing after 2s
PVXS Python / linux64 test (push) Failing after 2s
PVXS Python / linux 2.7 i686 (push) Failing after 7s
PVXS Python / linux 2.7u i686 (push) Failing after 8s
PVXS Python / linux 3.5 i686 (push) Failing after 7s
PVXS Python / linux 3.6 i686 (push) Failing after 7s
PVXS Python / linux 3.7 i686 (push) Failing after 7s
PVXS Python / linux 3.8 i686 (push) Failing after 7s
PVXS Python / linux 3.9 i686 (push) Failing after 8s
PVXS Python / linux 2.7 amd64 (push) Failing after 8s
PVXS Python / linux 2.7u amd64 (push) Failing after 7s
PVXS Python / linux 3.5 amd64 (push) Failing after 7s
PVXS Python / linux 3.6 amd64 (push) Failing after 7s
PVXS Python / linux 3.7 amd64 (push) Failing after 7s
PVXS Python / linux 3.8 amd64 (push) Failing after 7s
PVXS Python / linux 3.9 amd64 (push) Failing after 7s
PVXS Python / linux 3.10 amd64 (push) Failing after 7s
PVXS EPICS / Native Linux with 3.14 (push) Cancelled after 0s
PVXS EPICS / Native Linux with 3.15 (push) Cancelled after 0s
PVXS EPICS / Native Linux with clang (push) Cancelled after 0s
PVXS EPICS / OSX (push) Cancelled after 0s
PVXS EPICS / Native Linux (WError) (push) Cancelled after 0s
PVXS EPICS / Native Linux (c++17) (push) Cancelled after 0s
PVXS EPICS / RTEMS5 (push) Cancelled after 0s
PVXS EPICS / Native Linux with libevent stable (push) Cancelled after 0s
PVXS EPICS / Cross mingw64 DLL (push) Cancelled after 0s
PVXS EPICS / Cross mingw64 static (push) Cancelled after 0s
PVXS EPICS / vs2019 DLL (push) Cancelled after 0s
PVXS EPICS / vs2019 static (push) Cancelled after 0s
PVXS Python / osx 2.7 intel (push) Cancelled after 0s
PVXS Python / osx 3.10 intel (push) Cancelled after 0s
PVXS Python / osx 3.6 intel (push) Cancelled after 0s
PVXS Python / osx 3.7 intel (push) Cancelled after 0s
PVXS Python / osx 3.8 intel (push) Cancelled after 0s
PVXS Python / osx 3.9 intel (push) Cancelled after 0s
1.1.3
2023-03-22 08:35:27 -07:00
Michael Davidsaver 798a1548b8 1.1.3a1 2023-03-22 08:18:38 -07:00
Michael Davidsaver 7d16ab3a62 fix unsigned handling
caused unwanted sign extension.
2023-03-21 08:27:40 -07:00
Michael Davidsaver a0e4d62787 doc 2023-03-20 09:41:41 -07:00
Michael Davidsaver abeb78a9cd fix TypeDef(const Value& val) for Union/UnionA/StructA 2023-03-20 09:41:41 -07:00
Michael Davidsaver 36e537e479 appease -Wnoexcept 2023-03-20 09:41:41 -07:00
Michael Davidsaver 6f770d0ea3 final-ize some derived types 2023-03-20 09:41:41 -07:00
Michael Davidsaver fedbec649b server: rework cleanup of connection, channel, and operation 2023-03-20 09:41:41 -07:00
Michael Davidsaver 9c546f0ed4 update release notes 2023-02-13 07:45:55 -08:00
Peter Milne 449244090d spelling fix
On branch master
	modified:   documentation/index.rst
2023-02-13 07:44:44 -08:00
Michael Davidsaver df60d5ae57 doc 2023-02-13 07:44:44 -08:00