[OpenNMS/opennms] dca94f: NMS-20203: Kafka sink consumer manager tracks unst...
OpenNMS Machine User via opennms-cvs <[email protected]>
| Newsgroups | gmane.network.opennms.cvs |
|---|---|
| Message-ID | <OpenNMS/opennms/push/refs/heads/merge-foundation/foundation-2025-to-release-36.x/[email protected]> |
Branch: refs/heads/merge-foundation/foundation-2025-to-release-36.x
Home: https://github.com/OpenNMS/opennms
Commit: dca94f0b60895aa68011417d9003793ca3cd8f05
https://github.com/OpenNMS/opennms/commit/dca94f0b60895aa68011417d9003793ca3cd8f05
Author: Marshall Massengill <[email protected]>
Date: 2026-08-13 (Thu, 13 Aug 2026)
Changed paths:
M core/ipc/sink/kafka/itests/src/test/java/org/opennms/core/ipc/sink/kafka/itests/HeartbeatSinkIT.java
M core/ipc/sink/kafka/server/src/main/java/org/opennms/core/ipc/sink/kafka/server/KafkaMessageConsumerManager.java
Log Message:
-----------
NMS-20203: Kafka sink consumer manager tracks unstarted consumers, leaking live ones on reload (#8778)
* NMS-20203: track the Kafka sink consumer that was actually started
startConsumingForModule() started one KafkaConsumerRunner per thread but
added a second, never-started one to the tracking list. stopConsumingForModule()
therefore called shutdown() on runners that had never subscribed, where
wakeup() has no poll to interrupt, while the running consumers never saw
closed=true.
The consequence is not just a leak. The orphaned consumers stay in the Kafka
group and keep receiving partition assignments, but their SinkModule key is no
longer registered, so AbstractMessageConsumerManager.dispatch() finds no
consumer and drops the record while auto-commit advances the offset. A
telemetryd or Sentinel adapter reload silently loses telemetry in proportion to
the partitions those consumers hold, compounding with each reload.
The unstarted duplicates never subscribe, so throughput is unaffected, but each
one holds 2 file descriptors and 6 JMX MBeans that are never released. The MBean
registration pins the object graph, so they survive GC.
Present since HZN-963 (2016).
* NMS-20203: stop the sink consumers when the manager shuts down
shutdown() called executor.shutdown(), which lets running tasks finish. The
KafkaConsumerRunner loop only exits once closed is set, so nothing ever ended
it and the consumers polled on past teardown of the Spring context or the
blueprint bundle, holding their group membership and their threads.
Shut the runners down first, then bound the wait on the executor and fall back
to shutdownNow(). The runners wake from a 100ms poll, so the timeout is only a
backstop.
* NMS-20203: drain the starter threads before stopping the sink consumers
shutdown() stopped the runners and cleared consumerRunnersByModule while
startupExecutor was still live, so a startup task landing in that window
registered consumers that nothing was left to stop. It also submitted to
an executor that was about to be shut down, which rejected the remaining
runners mid-loop and left the already-started ones untracked. Shutting the
starters down first and waiting for the in-flight task closes both.
Also share one AdminClient across the group-membership polls in the IT
rather than opening one per poll, and tolerate the transient
describeConsumerGroups failures that happen before the broker has elected
a coordinator for the group.
Commit: 41988e1228ef2bafada24776d72809e789fe2e49
https://github.com/OpenNMS/opennms/commit/41988e1228ef2bafada24776d72809e789fe2e49
Author: Dino <[email protected]>
Date: 2026-08-13 (Thu, 13 Aug 2026)
Changed paths:
M opennms-webapp-rest/src/main/webapp/WEB-INF/menu/menu-template-default.json
M opennms-webapp-rest/src/main/webapp/WEB-INF/menu/menu-template.json
M smoke-test/src/test/java/org/opennms/smoketest/MenuHeaderIT.java
M ui/package.json
M ui/packages/onms-ui/src/components/OnmsListbox.vue
M ui/pnpm-lock.yaml
A ui/src/components/AdhocGraphs/AdhocChart.vue
A ui/src/components/AdhocGraphs/AdhocChartToolbar.vue
A ui/src/components/AdhocGraphs/AdhocGraphBuilder.vue
A ui/src/components/AdhocGraphs/ExpressionEditor.vue
A ui/src/components/AdhocGraphs/RrdDefinitionDialog.vue
A ui/src/components/AdhocGraphs/SelectionColumn.vue
A ui/src/components/AdhocGraphs/SeriesTable.vue
A ui/src/components/AdhocGraphs/utils/adhocColors.ts
A ui/src/components/AdhocGraphs/utils/adhocQuery.ts
A ui/src/components/AdhocGraphs/utils/adhocUrlState.ts
A ui/src/components/AdhocGraphs/utils/jexlToRpn.ts
A ui/src/components/AdhocGraphs/utils/rrdGraphDefinition.ts
M ui/src/components/Configuration/ConfigurationHelper.ts
M ui/src/components/Resources/GraphDataTable.vue
M ui/src/components/Resources/TimeControls.vue
A ui/src/components/Resources/utils/graphExport.ts
A ui/src/components/Resources/utils/timeRangeOptions.ts
A ui/src/composables/useClipboard.ts
M ui/src/composables/useDownload.ts
A ui/src/containers/AdhocGraphs.vue
M ui/src/main/router/index.ts
M ui/src/services/index.ts
M ui/src/services/resourceService.ts
A ui/src/stores/adhocGraphStore.ts
A ui/src/types/adhocGraph.ts
M ui/src/types/index.ts
A ui/tests/components/AdhocGraphs/AdhocGraphBuilder.test.ts
A ui/tests/components/AdhocGraphs/RrdDefinitionDialog.test.ts
A ui/tests/components/AdhocGraphs/adhocColors.test.ts
A ui/tests/components/AdhocGraphs/adhocQuery.test.ts
A ui/tests/components/AdhocGraphs/adhocUrlState.test.ts
A ui/tests/components/AdhocGraphs/jexlToRpn.test.ts
A ui/tests/components/AdhocGraphs/rrdGraphDefinition.test.ts
A ui/tests/components/Resources/GraphDataTable.test.ts
A ui/tests/components/Resources/timeRangeOptions.test.ts
A ui/tests/composables/useClipboard.test.ts
M ui/tests/onms-ui/OnmsListbox.test.ts
M ui/tests/onms-ui/OnmsTabs.test.ts
A ui/tests/stores/adhocGraphStore.test.ts
Log Message:
-----------
NMS-20208: Replace adhoc graphs workflow (#8784)
* WIP adhoc graphs SPA
Also contains fixes for:
* The time-picker had broken durations for 7 of 12 choices
* The Data tab in the Vue graphs was backwards, and lacked a real
timestamp (was HH:MM)
* OnmsTabs.test.ts was flakey and failed about 1 time in 3
* Relative time selections should be actually relative
Commit: f360a3718bad1ef1ef4f308a0a383ebdcd1b736a
https://github.com/OpenNMS/opennms/commit/f360a3718bad1ef1ef4f308a0a383ebdcd1b736a
Author: CI/CD System <[email protected]>
Date: 2026-08-13 (Thu, 13 Aug 2026)
Changed paths:
M core/ipc/sink/kafka/itests/src/test/java/org/opennms/core/ipc/sink/kafka/itests/HeartbeatSinkIT.java
M core/ipc/sink/kafka/server/src/main/java/org/opennms/core/ipc/sink/kafka/server/KafkaMessageConsumerManager.java
Log Message:
-----------
Merge remote-tracking branch 'origin/foundation-2024' into foundation-2025
Commit: 4a08db5818b938a02911b288725adf5ccf030738
https://github.com/OpenNMS/opennms/commit/4a08db5818b938a02911b288725adf5ccf030738
Author: Marshall Massengill <[email protected]>
Date: 2026-08-13 (Thu, 13 Aug 2026)
Changed paths:
M core/web-assets/src/main/assets/js/apps/notifications/index.js
M docs/modules/operation/pages/deep-dive/notifications/introduction.adoc
M docs/modules/operation/pages/quick-start/notifications.adoc
M opennms-base-assembly/src/main/filtered/etc/notificationCommands.xml
M opennms-services/src/main/java/org/opennms/netmgt/notifd/BrowserNotificationStrategy.java
M opennms-services/src/main/java/org/opennms/netmgt/notifd/browser/BrowserNotificationMessage.java
M opennms-webapp/src/main/java/org/opennms/web/notification/NotificationStreamServlet.java
M opennms-webapp/src/main/webapp/WEB-INF/applicationContext-spring-security.xml
M opennms-webapp/src/main/webapp/WEB-INF/web.xml
M opennms-webapp/src/main/webapp/account/selfService/index.jsp
A opennms-webapp/src/main/webapp/includes/notification-optin.jsp
A opennms-webapp/src/main/webapp/notification-sw.js
M opennms-webapp/src/main/webapp/notification/index.jsp
M smoke-test/src/main/resources/opennms-overlay/etc/notificationCommands.xml
M smoke-test/src/test/java/org/opennms/smoketest/NotificationsPageIT.java
M smoke-test/src/test/java/org/opennms/smoketest/UserIT.java
Log Message:
-----------
NMS-20200: Fix browser notifications in Firefox and on Chrome (#8769)
* NMS-20200: Fix browser notifications in Firefox and on Chrome for Android
The browser notification command has been broken in Firefox since Firefox 72 and
has never worked on Chrome for Android. Both failures were silent.
Firefox rejects Notification.requestPermission() without transient user
activation, and the client called it from a jQuery ready handler on page load, so
a user who had not already granted permission had no way to grant it. The prompt
now hangs off an explicit opt-in control, rendered by
includes/notification-optin.jsp on the Notifications and account self-service
pages, which also reports the blocked, unsupported and insecure-origin cases.
Chrome for Android throws from the page-scoped Notification constructor and
requires ServiceWorkerRegistration.showNotification(). notification-sw.js is
served from the webapp root so its scope covers the context; it registers no
fetch handler and so never intercepts or caches application requests. The
page-scoped constructor is kept as a fallback for browsers without service worker
support.
Also in this path:
* NotificationStreamServlet built its payload with JSONObject.append(), wrapping
every value in an array. It rendered only because JavaScript coerces a
single-element array to its string.
* Clicking a notification did nothing. The browser command now passes noticeid,
resolved from the notification parameter map, and a click opens the notice.
Notifd passes 0 for test triggers and -1 for resolution notices, neither of
which has a notice page, so those fall back to the outstanding notice list.
* Reconnect was a flat 1s retry from every open tab for the duration of an
OpenNMS restart, and now backs off with jitter to 30s.
* Dropped an unused net.sf.json import.
Two constructs are avoided deliberately in the client: .find() on a jQuery object
and the Promise global. The corejs transform rewrites both, into an
Array.prototype.find helper and a broken Promise reference, each of which throws
at runtime while building and linting cleanly.
worker-src 'self' is named explicitly in the CSP. It was already permitted
through the child-src/script-src fallback chain, but relying on that risks a
browser falling back to default-src 'none'.
Notification APIs are secure-context only, so none of this functions over plain
HTTP regardless of the above.
* NMS-20200: Handle Safari's callback-only requestPermission()
Safari gained the promise form of Notification.requestPermission() late; older
versions are callback-only and return undefined, so calling .then() on the result
threw inside the click handler and the opt-in silently did nothing. Accept either
shape, guarding against browsers that honour both from invoking the callback
twice.
* NMS-20200: Address review findings on the browser notification client
Guard connect() on an existing socket and check in each handler that the
socket is still the current one. A socket dropped by disconnect() still
delivers its close, which would otherwise clear the reference to a newer
socket and schedule a further connect, leaving one open and unreachable.
Fall back to an "OpenNMS" title when head is absent, which is what a
command with no -subject produces once org.json drops the null key.
Commit: 7c0e180c6a99b0c0cdae46eebf77f5250381f1e7
https://github.com/OpenNMS/opennms/commit/7c0e180c6a99b0c0cdae46eebf77f5250381f1e7
Author: CI/CD System <[email protected]>
Date: 2026-08-13 (Thu, 13 Aug 2026)
Changed paths:
M core/ipc/sink/kafka/itests/src/test/java/org/opennms/core/ipc/sink/kafka/itests/HeartbeatSinkIT.java
M core/ipc/sink/kafka/server/src/main/java/org/opennms/core/ipc/sink/kafka/server/KafkaMessageConsumerManager.java
Log Message:
-----------
Merge remote-tracking branch 'origin/foundation-2025' into release-36.x
Compare: https://github.com/OpenNMS/opennms/compare/485fc29585dc...7c0e180c6a99
To unsubscribe from these emails, change your notification settings at https://github.com/OpenNMS/opennms/settings/notifications
_______________________________________________
Please read the OpenNMS Mailing List FAQ:
http://www.opennms.org/wiki/index.php?page=MailingListFaq
opennms-cvs mailing list
To *unsubscribe* or change your subscription options, see the bottom of this page:
https://lists.sourceforge.net/lists/listinfo/opennms-cvs