Details
-
Bug
-
Resolution: Fixed
-
Neutral
-
1.0.1
-
None
-
DevX 47
-
3
-
Yes
Description
Description
There is a problem using webhooks on a PaaS customer (The Hartford).
It turns out that there's a use case which provokes webhooks to fail, removing all subscribers and making them unusable until Magnolia is restarted.
Use case
- Create a webhook definition, using Resource Files app, inside any module.
- Add a webhook definition, for example:
name: webhook1 url: https://webhook.site/506b6a1e-b782-4d32-9745-088854f70b0c method: get enabled: true events: - name: p1 eventType: Published
- Triggering the webhook publishing a page, should work, event should be received.
- Add a new event for a different event type, for example Unpublished:
name: webhook1 url: https://webhook.site/506b6a1e-b782-4d32-9745-088854f70b0c method: get enabled: true events: - name: p1 eventType: Published - name: p2 eventType: Unpublished
- There is this exception in the log file:
2023-09-21 11:32:37,201 ERROR info.magnolia.event.SimpleEventBus : Exception caught when dispatching info.magnolia.webhooks.core.WebhookDefinitionChangedEvent with info.magnolia.webhooks.registry.WebhookDefinitionEventHandler eventHandler. java.lang.NullPointerException: null at info.magnolia.webhooks.events.core.SimpleEventSubscribers.unregister(SimpleEventSubscribers.java:51) ~[magnolia-webhooks-events-1.0.1.jar:?] at info.magnolia.webhooks.registry.WebhookDefinitionEventHandler.removeSubscriberFor(WebhookDefinitionEventHandler.java:86) ~[magnolia-webhooks-core-1.0.1.jar:?] at info.magnolia.webhooks.registry.WebhookDefinitionEventHandler.lambda$onChange$2(WebhookDefinitionEventHandler.java:68) ~[magnolia-webhooks-core-1.0.1.jar:?] at java.util.ArrayList.forEach(ArrayList.java:1257) ~[?:1.8.0_231] at info.magnolia.webhooks.registry.WebhookDefinitionEventHandler.onChange(WebhookDefinitionEventHandler.java:68) ~[magnolia-webhooks-core-1.0.1.jar:?] at info.magnolia.webhooks.core.WebhookDefinitionChangedEvent.dispatch(WebhookDefinitionChangedEvent.java:57) ~[magnolia-webhooks-core-1.0.1.jar:?] at info.magnolia.webhooks.core.WebhookDefinitionChangedEvent.dispatch(WebhookDefinitionChangedEvent.java:28) ~[magnolia-webhooks-core-1.0.1.jar:?] at info.magnolia.event.SimpleEventBus.fireEvent(SimpleEventBus.java:75) ~[magnolia-core-6.2.35.jar:?] at info.magnolia.webhooks.registry.WebhookDefinitionRegistry.register(WebhookDefinitionRegistry.java:92) ~[magnolia-webhooks-core-1.0.1.jar:?] at info.magnolia.config.source.yaml.YamlConfigurationSource.loadAndRegister(YamlConfigurationSource.java:143) ~[magnolia-configuration-6.2.35.jar:?] at info.magnolia.config.source.yaml.AbstractFileResourceConfigurationSource.lambda$start$2(AbstractFileResourceConfigurationSource.java:162) ~[magnolia-configuration-6.2.35.jar:?] at info.magnolia.resourceloader.layered.LayeredResourceOrigin$RelayingChangeHandler.onResourceChanged(LayeredResourceOrigin.java:284) [magnolia-resource-loader-6.2.35.jar:?] at info.magnolia.resourceloader.AbstractResourceOrigin.dispatchResourceChange(AbstractResourceOrigin.java:132) [magnolia-resource-loader-6.2.35.jar:?] at info.magnolia.resourceloader.jcr.JcrResourceOrigin$ResourcesObservationListener.onEvent(JcrResourceOrigin.java:360) [magnolia-resource-loader-6.2.35.jar:?] at info.magnolia.cms.util.FilteredEventListener.onEvent(FilteredEventListener.java:86) [magnolia-core-6.2.35.jar:?] at info.magnolia.observation.DeferringEventListener$ObservationBasedDelayedExecutor$1.run(DeferringEventListener.java:102) [magnolia-core-6.2.35.jar:?] at info.magnolia.cms.util.DelayedExecutor$RunnableWrapper.run(DelayedExecutor.java:103) [magnolia-core-6.2.35.jar:?] at EDU.oswego.cs.dl.util.concurrent.ClockDaemon$RunLoop.run(Unknown Source) [concurrent-1.3.4.jar:?] at java.lang.Thread.run(Thread.java:748) [?:1.8.0_231] 2023-09-21 11:32:37,227 INFO agnolia.config.source.yaml.YamlConfigurationSource: Registered definition from YAML file [/admincentral/webhooks/Webhooks_test.yaml]: [webhook] definition [webhook1] with reference id: [admincentral:Webhooks_test] from module [admincentral] at [Webhooks_test] 2023-09-21 11:33:22,808 INFO info.magnolia.module.scheduler.CommandJob : Starting job [asyncCommand1695288802806]... 2023-09-21 11:33:23,975 INFO info.magnolia.module.scheduler.CommandJob : Job executed successfully [asyncCommand1695288802806] 2023-09-21 11:33:23,975 INFO fo.magnolia.webhooks.events.core.EventsQueueWorker: Passing event to subscribers [{ "id": "4d8d8007-ebbc-480e-a9a3-110cf3b7f165", "contentUnpublished": "/travel"}] 2023-09-21 11:33:23,976 INFO fo.magnolia.webhooks.events.core.EventsQueueWorker: Subscribers number [0] 21-Sep-2023 11:34:04.396 INFO [main] org.apache.catalina.core.StandardServer.await A valid shutdown command was received via the shutdown port. Stopping the Server instance. 21-Sep-2023 11:34:04.396 INFO [main] org.apache.coyote.AbstractProtocol.pause Pausing ProtocolHandler ["http-nio-8080"] 21-Sep-2023 11:34:04.400 INFO [main] org.apache.catalina.core.StandardService.stopInternal Stopping service [Catalina] 21-Sep-2023 11:34:06.653 INFO [main] org.atmosphere.util.ForkJoinPool.<init> Using ForkJoinPool java.util.concurrent.ForkJoinPool. Set the org.atmosphere.cpr.broadcaster.maxAsyncWriteThreads to -1 to fully use its power. 21-Sep-2023 11:34:06.654 WARNING [main] org.atmosphere.cpr.DefaultBroadcaster.addAtmosphereResource AtmosphereResource 4654ad83-5e31-48d9-b77a-2fcd7e4162eb is not suspended. If cached messages exists, this may cause unexpected situation. Suspend first
- This provokes that there aren't subscribers at all, so webhooks are triggered, but no event is sent.
Workaround
Restarting Magnolia instance, make them work. And after further research, if you make changes to those webhooks files, this don't happen any more and webhooks still work.
Developer notes
Ensure that null lists are not returned when getting subscribers by type, to be added/removed.
Checklists
Acceptance criteria
Attachments
There are no Sub-Tasks for this issue.