1243 Commits

Author SHA1 Message Date
Michael Davidsaver b568e93eb1 doc 2026-05-24 15:12:54 -07:00
Michael Davidsaver 80a83c4ace doc: discuss GDB and stack traces 2026-05-24 15:08:08 -07:00
Michael Davidsaver abce868dbb cpy3.8 build ml2010, drop 3.13t
Switch source build to 3.14 (not t)
2026-05-24 14:41:43 -07:00
Michael Davidsaver 5353b02a33 ioc: fix single PUT with 'record[block=true, process=true]'
No point to wait for processing, when none will occur.
However, wait as requested when Unset or True.

Somewhere between 409b432dd96b65e8c69d35fe8810081b8ff87a0a
and 93e4d3eef3
the sense of this test was lost.
2026-05-24 14:41:43 -07:00
Sang Woo Kim 7ae3ca84c0 client, server: interpret monitor ackAny percentage as a fraction
A "N%" ackAny was computed as percent*queueSize on the client and
percent*limit on the server, without dividing by 100, then clamped to
the queue size.  Any percentage >= 1% therefore saturated to the full
queue, so ackAny="50%" behaved as 100% and defeated percentage-style
ack control.

Divide the clamped percent by 100 on both the client (clientmon.cpp)
and server (servermon.cpp) parsing paths.

Note: this changes the negotiated ack threshold for existing
percentage ackAny requests.
2026-05-24 14:13:25 -07:00
Sang Woo Kim e5ec952e1d server: report monitor squash count in MonitorStat::nSquash
ServerMonitorControl::stats() assigned mon->nSquash to stat.nQueue,
overwriting the queue depth set just above, and never assigned
stat.nSquash.  Callers of MonitorControlOp::stats() therefore could
not observe the real unsent-queue depth once squashing had occurred,
and never received the squash count in its documented field.

Assign mon->nSquash to stat.nSquash.
2026-05-24 14:13:25 -07:00
Sang Woo Kim de3fb5d915 qsrv: pvaLink getTimeStampTag return remote timeStamp.userTag
pvaLink cached the remote timeStamp.userTag in fld_usertag but never
assigned snap_tag from it (pvalink.h initialises snap_tag to 0 and no
code path updated it), so pvaGetTimeStampTag() always returned 0.
Records reading a user tag through a PVA link lost that metadata.

Assign snap_tag from fld_usertag in the same snapshot block that
derives snap_time from fld_seconds/fld_nanoseconds, defaulting to 0
when the field is absent.
2026-05-24 14:13:25 -07:00
Michael Davidsaver bf571f6eb2 test: check that UTAG is propagated by pvalink 2026-05-24 14:13:25 -07:00
Sang Woo Kim 07c2de1548 qsrv: pvaLink onTypeChange must clear fld_seconds
Add fld_seconds to the clear-list (replacing the duplicate fld_severity).
2026-05-24 14:13:25 -07:00
Sang Woo Kim 33798897fb qsrv: SecurityLogger must restore dbChannel addr.pfield
Missing initialization of SecurityLogger::pchan
prevents restore logic from triggering.

Remove default value so that compiler complains if used
without initialization.
2026-05-24 14:13:25 -07:00
Sang Woo Kim 4f45ffab44 test non-atomic group get must read channel-less Const fields
Add testConstNonAtomicGet(): a non-atomic get of the tst:const group
asserts s.i/s.d/s.s == 14/1.5/"hello". Fails before the fix (all defaults),
passes after.
2026-05-24 14:13:25 -07:00
Michael Davidsaver 46f8c53114 ioc: put fix permissions with non-atomic group
... containing const/structure mappings
2026-05-24 14:13:25 -07:00
Sang Woo Kim 0eebeb8d79 fix(qgroup): non-atomic group get must read channel-less Const fields
A non-atomic group get (record[atomic=false]) gated each field read on
`pDbChannel && leafNode`, so fields with no dbChannel were silently
skipped. MappingInfo::Const fields carry a constant value rather than a
channel, so a non-atomic get returned them at their cloneEmpty() defaults
(0 / 0.0 / ""), while the atomic get and monitor paths return the constant.

Mirror the atomic branch's field selection in the non-atomic branch: skip
only Proc/Structure and read every other field, taking the per-field
DBLocker only when a channel is present. getGroupField() already handles
channel-less fields via field.info, so Const fields populate correctly.
2026-05-24 14:13:25 -07:00
Michael Davidsaver 5b5ce4b28f test: testConst() not atomic 2026-05-24 14:13:25 -07:00
Michael Davidsaver 825a8c2ae7 client: RequestFL lock during dtor
pacify valgrind over what is likely a false positive
2026-05-24 14:13:25 -07:00
Michael Davidsaver 7ab3ef0576 client: minor optimization
Don't need to hold RequestFL lock when cloning prototype
2026-05-24 14:13:25 -07:00
Michael Davidsaver 485ff0a9da quiet DRD error reports
testget

Complaint is of race between wait and Context cleanup.
shared_ptr<info_t> probably makes this safe, but
no down-side to explicit shutdown.
2026-05-24 14:13:25 -07:00
Michael Davidsaver 781a96e110 client: query user/host name once on Context creation 2026-05-24 14:13:25 -07:00
Michael Davidsaver 1f7e1b0fab server: minor optimization 2026-05-24 14:13:25 -07:00
Michael Davidsaver 3c0154b413 ioc: avoid enumerating roles for each PUT
Just once on first PUT to each Channel
2026-05-24 14:13:25 -07:00
Michael Davidsaver 78596286d2 ioc: localize local function declarations 2026-05-23 17:16:02 -07:00
Michael Davidsaver 054b3f28c8 server: remove redundant extra bind handling
Made redundant by preceding 'continue' condition
added with 266ee52704
2026-05-23 17:16:02 -07:00
Michael Davidsaver f8d6192983 server: monitor TX check buffer level on each iteration
GH pages / generate (push) Failing after 1s
PVXS EPICS / Native Linux with 3.14 (push) Failing after 1s
PVXS EPICS / Native Linux with 3.15 (push) Failing after 1s
PVXS EPICS / Native Linux with clang ubsan (push) Failing after 1s
PVXS EPICS / Native Linux with clang (push) Failing after 1s
PVXS EPICS / Native Linux (libc++ debug) (push) Failing after 1s
PVXS EPICS / Native Linux (WError) (push) Failing after 1s
PVXS EPICS / Native Linux (c++17) (push) Failing after 1s
PVXS EPICS / Native Linux with libevent stable (push) Failing after 1s
PVXS EPICS / Cross mingw64 DLL (push) Failing after 1s
PVXS EPICS / Cross mingw64 static (push) Failing after 1s
PVXS EPICS / Native Linux with 7.0.2 (push) Failing after 1s
PVXS EPICS / Linux CentOS 7 (push) Failing after 10s
Python / pycp27-cp27m manylinux1_x86_64 (push) Failing after 2s
Spell Check / Spell Check (push) Successful in 8s
PVXS EPICS / Linux fedora latest (push) Failing after 9s
Python / pycp37-cp37m manylinux2010_x86_64 (push) Failing after 1s
Python / pycp310-cp310 manylinux2014_x86_64 (push) Failing after 1s
Python / pycp311-cp311 manylinux2014_x86_64 (push) Failing after 1s
Python / pycp312-cp312 manylinux2014_x86_64 (push) Failing after 1s
Python / pycp313-cp313 manylinux2014_x86_64 (push) Failing after 1s
Python / pycp313-cp313t manylinux2014_x86_64 (push) Failing after 1s
Python / py3.10 win_amd64 (push) Failing after 55s
Python / pycp38-cp38 manylinux2014_x86_64 (push) Failing after 1s
Python / pycp39-cp39 manylinux2014_x86_64 (push) Failing after 1s
Python / py3.11 win_amd64 (push) Failing after 7s
Python / pycp314-cp314 manylinux_2_28_x86_64 (push) Failing after 1s
Python / pycp314-cp314t manylinux_2_28_x86_64 (push) Failing after 1s
GH pages / publish (push) Skipped
Python / py3.12 win_amd64 (push) Failing after 6s
Python / py3.13 win_amd64 (push) Failing after 6s
Python / py3.14 win_amd64 (push) Failing after 5s
Python / py3.8 win_amd64 (push) Failing after 4s
Release artifacts / artifacts (push) Failing after 2m32s
PVXS EPICS / vs2022 DLL (push) Cancelled after 0s
PVXS EPICS / OSX (push) Cancelled after 0s
PVXS EPICS / RTEMS5 (push) Cancelled after 0s
PVXS EPICS / vs2022 static (push) Cancelled after 0s
Python / py3.11 macosx_11_0_universal2 (push) Cancelled after 0s
Python / py3.10 macosx_11_0_universal2 (push) Cancelled after 0s
Python / py3.12 macosx_11_0_universal2 (push) Cancelled after 0s
Python / py3.13 macosx_11_0_universal2 (push) Cancelled after 0s
Python / py3.14 macosx_11_0_universal2 (push) Cancelled after 0s
Python / py3.8 macosx_11_0_universal2 (push) Cancelled after 0s
Python / py3.9 macosx_11_0_universal2 (push) Cancelled after 0s
Python / combine (push) Cancelled after 0s
2026-05-16 17:55:40 -07:00
Andrew Johnson 3d854e492c Run our cfg/CONFIG files when INSTALL_LOCATION set 2026-04-20 04:30:53 -07:00
Jure Varlec 1d481d5be1 doc: show how to create arrays of NTScalar 2026-04-02 07:25:44 -07:00
Michael Davidsaver 6f7942e4af doc 2026-02-27 08:19:09 +00:00
Michael Davidsaver 9d448164fa testpvalink: more parser coverage 2026-02-27 08:16:23 +00:00
Michael Davidsaver 484960a1b8 test helpers use posix regex on RTEMS
GCC circa RTEMS 4.9 and 5 seems to crash with some regular expressions.
2026-02-27 08:16:23 +00:00
Michael Davidsaver 3a777e1022 shared_array: mark additional methods noexcept 2026-02-27 08:16:23 +00:00
Michael Davidsaver 5ee956d047 default for Source::List::dynamic 2026-02-27 08:16:23 +00:00
Michael Davidsaver 52186e3587 test cancel of PUT 2026-02-27 08:16:23 +00:00
Michael Davidsaver 1e9a22f9a4 test ackAny 2026-02-27 08:16:23 +00:00
Michael Davidsaver ef40c21d8d test server-side disconnect 2026-02-27 08:16:23 +00:00
Michael Davidsaver 1d182cb031 test iocsh functions 2026-02-27 08:16:23 +00:00
Michael Davidsaver ef7ef0f158 ioc: promote DBE_ALARM only to also fetch value
When a client subscribes to DBE_ALARM only, also
fetch the value associated with the alarm state change.

eg. used by an alarm manager
2026-02-27 08:16:23 +00:00
Michael Davidsaver 70547d1481 testtype: extend 2026-02-27 08:16:23 +00:00
Michael Davidsaver d9a87aa786 testPartialXCode 2026-02-27 08:16:23 +00:00
mdavidsaver 55a8faf007 Clarify SharedPV::post()
For SharedPV::post(), mention Value::cloneEmpty()
2026-02-27 08:14:29 +00:00
Jure Varlec c3f63fcbe8 doc: add ticker example to the docs 2026-02-27 08:14:29 +00:00
Jure Varlec bf51e44b7b doc: explain type requirements for post()
Currently, the user learns that `SharedPV::post()` requires the posted
value to be created from the same type instance as the value given to
`SharedPV::open()` only when they try to do it differently and are
presented with an error message. This is an attempt to document this
requirement.
2026-02-27 08:14:29 +00:00
Michael Davidsaver 525c711ee5 server: reduce log spam from beacon tx
Demote repeated beacon TX failure to debug.
Upgrade first success after previous failure.
Track per destination.
2026-02-11 12:08:52 -08:00
Michael Davidsaver 2d96c9b7d7 doc 2026-02-11 12:07:04 -08:00
Michael Davidsaver d0ee5b2ab6 1.5.1
Python / py3.10 win_amd64 (push) Failing after 4s
Python / py3.11 win_amd64 (push) Failing after 4s
Python / py3.12 win_amd64 (push) Failing after 4s
Python / py3.13 win_amd64 (push) Failing after 4s
Python / py3.14 win_amd64 (push) Failing after 4s
Python / py3.8 win_amd64 (push) Failing after 4s
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 ubsan (push) Failing after 2s
PVXS EPICS / Native Linux with clang (push) Failing after 2s
PVXS EPICS / Native Linux (libc++ debug) (push) Failing after 2s
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
GH pages / generate (push) Failing after 2s
PVXS EPICS / Linux fedora latest (push) Failing after 8s
PVXS EPICS / Linux CentOS 7 (push) Failing after 11s
Python / pycp37-cp37m manylinux2010_x86_64 (push) Failing after 2s
Python / pycp27-cp27m manylinux1_x86_64 (push) Failing after 2s
Spell Check / Spell Check (push) Successful in 9s
Python / pycp310-cp310 manylinux2014_x86_64 (push) Failing after 2s
Python / pycp311-cp311 manylinux2014_x86_64 (push) Failing after 2s
Python / pycp312-cp312 manylinux2014_x86_64 (push) Failing after 2s
Python / pycp313-cp313 manylinux2014_x86_64 (push) Failing after 2s
Python / pycp313-cp313t manylinux2014_x86_64 (push) Failing after 2s
Python / pycp38-cp38 manylinux2014_x86_64 (push) Failing after 2s
Python / pycp39-cp39 manylinux2014_x86_64 (push) Failing after 1s
Python / pycp314-cp314 manylinux_2_28_x86_64 (push) Failing after 1s
Python / pycp314-cp314t manylinux_2_28_x86_64 (push) Failing after 1s
GH pages / publish (push) Skipped
Release artifacts / artifacts (push) Failing after 2m22s
Python / py3.11 macosx_11_0_universal2 (push) Cancelled after 0s
Python / py3.12 macosx_11_0_universal2 (push) Cancelled after 0s
Python / py3.13 macosx_11_0_universal2 (push) Cancelled after 0s
Python / py3.14 macosx_11_0_universal2 (push) Cancelled after 0s
Python / py3.8 macosx_11_0_universal2 (push) Cancelled after 0s
Python / py3.9 macosx_11_0_universal2 (push) Cancelled after 0s
PVXS EPICS / OSX (push) Cancelled after 0s
PVXS EPICS / RTEMS5 (push) Cancelled after 0s
PVXS EPICS / vs2022 DLL (push) Cancelled after 0s
PVXS EPICS / vs2022 static (push) Cancelled after 0s
Python / py3.10 macosx_11_0_universal2 (push) Cancelled after 0s
Python / combine (push) Cancelled after 0s
1.5.1
2026-02-11 07:20:03 -08:00
Michael Davidsaver 49b73c1069 1.5.1a1 2026-02-09 18:34:14 -08:00
Michael Davidsaver e4293c795a pkg_resources removal 2026-02-09 18:02:00 -08:00
Michael Davidsaver 19a3441c88 doc: toc reorg 2026-02-01 15:46:40 -08:00
Michael Davidsaver a6f75c1015 doc: client operation exceptions 2026-02-01 15:46:40 -08:00
Michael Davidsaver 98737e2c94 doc: unittest.h 2026-02-01 15:46:40 -08:00
Michael Davidsaver b7c2d1b2c4 doc: shared_array 2026-02-01 15:46:40 -08:00
Michael Davidsaver a4259c7376 doc: reorganize netconfig 2026-01-28 17:01:49 -08:00