Repository navigation
v2.3.0 - #54
Merged
Merged
v2.3.0#54
Conversation
slominskir
approved these changes
Oct 4, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Bumps
VERSIONto 2.3.0. Merging this releases v2.3.0: the CD workflow, limited tomainby #53, tags the release, attaches the war and publishes the Docker image. Pushing this branch didn't start a CD run.The upgrade notes below are for pasting into the GitHub release.
Upgrade notes
This release hardens the WebSocket monitor,
/cagetand/healthcheck. It fixes several ways PVs could get stuck after IOC, network or gateway disruptions, and adds detection of PVs that freeze anyway.Action needed when upgrading
/healthcheck: use/epics2web/healthcheck?strict=true. The default/healthchecknow answers 200 whenever the server is up, even if PVs are disconnected. That's so a load balancer doesn't take every instance out when an IOC goes down. Strict mode answers 503 when a PV that was connected has stayed disconnected past the grace period./epics2web/healthcheck.Behaviour changes
epics2web.jsreconnects.info) messages are never dropped./cagetvalidates requests:jsonpcallback that isn't a JavaScript name such asa.b_c;/healthcheckreports more accurately:statefield;CONNECTING, but don't fail strict mode;frozen,frozen_minutesandfrozen_reason;?frozen=trueanswers 503 when any PV is frozen.JSESSIONIDcookie, except for WebSocket handshakes.-Infinityis now reported with its sign.Frozen PV detection (new, report-only)
epics2web now looks for PVs whose monitor has stopped working while the IOC still serves them. It gives suspicious PVs a short-lived subscription in a second, independent CA context, which opens its own connection to each IOC or gateway and probes at most 20 PVs at a time.
WARNING ... PV <name> is frozen: <reason>./healthcheck.It doesn't change the default or strict healthcheck responses.
New settings (environment variables, all optional)
WEBSOCKET_PING_INTERVAL_SECONDSWEBSOCKET_TIMEOUT_SECONDSWEBSOCKET_SEND_TIMEOUT_SECONDSHEALTHCHECK_GRACE_SECONDS/healthchecklists itFROZEN_CHECK_SECONDSFROZEN_PV_CHECKtruefalseturns frozen PV detection offFixes
/cagetno longer races monitors of the same PV, which could leave a monitor stuck so that every client of that PV got no updates (/cagetcreates and destroys channels with no coordination with monitors #29);/cagetrequests (/cagetcreates and destroys channels with no coordination with monitors #29);/healthcheckmeasures disconnects correctly (Healthcheck flags a PV by time since its last value change, not since it disconnected #28).Known issue
Suggested rollout
Test first: deploy to a test instance, and check WEDM screens, the console and
/cagetusers.One production instance at a time: with two instances behind a load balancer, upgrade one, compare the two for a few days, then upgrade the other.
Keep any periodic Tomcat restart for now, and watch for:
is frozenwarnings, especially around IOC and network maintenance;forcing disconnectmessages naming epics2web hosts in gateway logs, which should stop with this release;If none of these show up over a few maintenance windows, the periodic restart can go.
🤖 Generated with Claude Code