<!-- 
RSS generated by JIRA (9.4.2#940002-sha1:46d1a51de284217efdcb32434eab47a99af2938b) at Mon Feb 12 10:03:24 CET 2024

It is possible to restrict the fields that are returned in this document by specifying the 'field' parameter in your request.
For example, to request only the issue key and summary append 'field=key&field=summary' to the URL of your request.
-->
<rss version="0.92" >
<channel>
    <title>Magnolia - Issue tracker</title>
    <link>https://jira.magnolia-cms.com</link>
    <description>This file is an XML representation of an issue</description>
    <language>en-uk</language>    <build-info>
        <version>9.4.2</version>
        <build-number>940002</build-number>
        <build-date>19-01-2023</build-date>
    </build-info>


<item>
            <title>[MGNLHOOK-353] Add more tracing / investigate Webhooks 1.0.1 not sending events</title>
                <link>https://jira.magnolia-cms.com/browse/MGNLHOOK-353</link>
                <project id="17487" key="MGNLHOOK">Magnolia Webhooks</project>
                    <description>&lt;h2&gt;&lt;a name=&quot;Description&quot;&gt;&lt;/a&gt;Description&lt;/h2&gt;

&lt;p&gt;There is a problem using webhooks on a PaaS customer (The Hartford).&lt;/p&gt;

&lt;p&gt;It turns out that there&apos;s a use case which provokes webhooks to fail, removing all subscribers and making them unusable until Magnolia is restarted.&lt;/p&gt;
&lt;h2&gt;&lt;a name=&quot;Usecase&quot;&gt;&lt;/a&gt;Use case&lt;/h2&gt;
&lt;ul&gt;
	&lt;li&gt;Create a webhook definition, using Resource Files app, inside any module.&lt;/li&gt;
	&lt;li&gt;Add a webhook definition, for example:&lt;/li&gt;
&lt;/ul&gt;


&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;
name: webhook1
url: https:&lt;span class=&quot;code-comment&quot;&gt;//webhook.site/506b6a1e-b782-4d32-9745-088854f70b0c
&lt;/span&gt;method: get
enabled: &lt;span class=&quot;code-keyword&quot;&gt;true&lt;/span&gt;

events:
&#160; - name: p1
&#160; &#160; eventType: Published &lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;ul&gt;
	&lt;li&gt;Triggering the webhook publishing a page, should work, event should be received.&lt;/li&gt;
	&lt;li&gt;Add a new event for a different event type, for example Unpublished:&lt;/li&gt;
&lt;/ul&gt;


&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;
name: webhook1
url: https:&lt;span class=&quot;code-comment&quot;&gt;//webhook.site/506b6a1e-b782-4d32-9745-088854f70b0c
&lt;/span&gt;method: get
enabled: &lt;span class=&quot;code-keyword&quot;&gt;true&lt;/span&gt;

events:
&#160; - name: p1
&#160; &#160; eventType: Published 
  - name: p2
&#160; &#160; eventType: Unpublished&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;ul&gt;
	&lt;li&gt;There is this exception in the log file:&lt;/li&gt;
&lt;/ul&gt;


&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;
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: &lt;span class=&quot;code-keyword&quot;&gt;null&lt;/span&gt;
	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.&lt;span class=&quot;code-object&quot;&gt;Thread&lt;/span&gt;.run(&lt;span class=&quot;code-object&quot;&gt;Thread&lt;/span&gt;.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 [{ &lt;span class=&quot;code-quote&quot;&gt;&quot;id&quot;&lt;/span&gt;: &lt;span class=&quot;code-quote&quot;&gt;&quot;4d8d8007-ebbc-480e-a9a3-110cf3b7f165&quot;&lt;/span&gt;, &lt;span class=&quot;code-quote&quot;&gt;&quot;contentUnpublished&quot;&lt;/span&gt;: &lt;span class=&quot;code-quote&quot;&gt;&quot;/travel&quot;&lt;/span&gt;}]
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 [&lt;span class=&quot;code-quote&quot;&gt;&quot;http-nio-8080&quot;&lt;/span&gt;]
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.&amp;lt;init&amp;gt; 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, &lt;span class=&quot;code-keyword&quot;&gt;this&lt;/span&gt; may cause unexpected situation. Suspend first &lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;ul&gt;
	&lt;li&gt;This provokes that there aren&apos;t subscribers at all, so webhooks are triggered, but no event is sent.&lt;/li&gt;
&lt;/ul&gt;


&lt;h2&gt;&lt;a name=&quot;Workaround&quot;&gt;&lt;/a&gt;Workaround&lt;/h2&gt;

&lt;p&gt;Restarting Magnolia instance, make them work. And after further research, if you make changes to those webhooks files, this don&apos;t happen any more and webhooks still work.&lt;/p&gt;
&lt;h2&gt;&lt;a name=&quot;Developernotes&quot;&gt;&lt;/a&gt;Developer notes&lt;/h2&gt;

&lt;p&gt;Ensure that null lists are not returned when getting subscribers by type, to be added/removed.&lt;/p&gt;

&lt;p&gt;&#160;&lt;/p&gt;</description>
                <environment></environment>
        <key id="139216">MGNLHOOK-353</key>
            <summary>Add more tracing / investigate Webhooks 1.0.1 not sending events</summary>
                <type id="1" iconUrl="https://jira.magnolia-cms.com/secure/viewavatar?size=xsmall&amp;avatarId=10883&amp;avatarType=issuetype">Bug</type>
                                            <priority id="6" iconUrl="https://jira.magnolia-cms.com/images/icons/priorities/neutral.gif">Neutral</priority>
                        <status id="6" iconUrl="https://jira.magnolia-cms.com/images/icons/statuses/closed.png" description="The issue is considered finished, the resolution is correct. Issues which are not closed can be reopened.">Closed</status>
                    <statusCategory id="3" key="done" colorName="success"/>
                                    <resolution id="1">Fixed</resolution>
                                        <assignee username="jbenito">Javier Benito</assignee>
                                    <reporter username="jbenito">Javier Benito</reporter>
                        <labels>
                    </labels>
                <created>Thu, 21 Sep 2023 10:33:32 +0200</created>
                <updated>Fri, 29 Sep 2023 07:13:15 +0200</updated>
                            <resolved>Fri, 29 Sep 2023 07:13:15 +0200</resolved>
                                    <version>1.0.1</version>
                                    <fixVersion>1.0.2</fixVersion>
                                        <due></due>
                            <votes>0</votes>
                                    <watches>1</watches>
                                                                    <aggregateprogress percentage="100">
                                    <originalProgress>
                                                    <row percentage="0" backgroundColor="#89afd7"/>
                                                    <row percentage="100" backgroundColor="transparent"/>
                                            </originalProgress>
                                                    <currentProgress>
                                                    <row percentage="100" backgroundColor="#51a825"/>
                                                    <row percentage="0" backgroundColor="#ec8e00"/>
                                            </currentProgress>
                            </aggregateprogress>
                                                                                                    <aggregatetimespent seconds="3600">1h</aggregatetimespent>
                                            <attachments>
                    </attachments>
                <subtasks>
                            <subtask id="139252">MGNLHOOK-358</subtask>
                            <subtask id="139253">MGNLHOOK-359</subtask>
                            <subtask id="139254">MGNLHOOK-360</subtask>
                            <subtask id="139255">MGNLHOOK-361</subtask>
                    </subtasks>
                <customfields>
                                                                            <customfield id="customfield_14166" key="com.okapya.jira.checklist:checklist">
                        <customfieldname>Acceptance criteria</customfieldname>
                        <customfieldvalues>
                            
        <checklist>
        <![CDATA[
                            




                
                                    <div class="o-completion" style="display: flex; flex-shrink: 0;"><span  class="aui-lozenge aui-lozenge-complete" style="font-size: 12px; font-weight: normal; display: flex; flex-direction: row; align-items: center;" ><span style="padding-right: 4px; vertical-align: middle;"><svg width="15" height="15" viewBox="0 0 15 15" xmlns="http://www.w3.org/2000/svg" fill="white"><path clip-rule="evenodd" d="m10.41037,3.42544l-7.86501,0c-0.72395,0 -1.31084,0.58688 -1.31084,1.31084l0,7.86508c0,0.7239 0.58689,1.3108 1.31084,1.3108l7.86501,0c0.724,0 1.3109,-0.5869 1.3109,-1.3108l0,-7.86508c0,-0.72396 -0.5869,-1.31084 -1.3109,-1.31084zm-7.86501,-0.65542c-1.08593,0 -1.96626,0.88032 -1.96626,1.96626l0,7.86508c0,1.0859 0.88033,1.9662 1.96626,1.9662l7.86501,0c1.086,0 1.9663,-0.8803 1.9663,-1.9662l0,-7.86508c0,-1.08594 -0.8803,-1.96626 -1.9663,-1.96626l-7.86501,0z" fill-rule="evenodd"/><path d="m5.09049,10.18526l-1.82767,-1.82766l-0.78479,0.78479l2.61246,2.61246l5.38758,-5.38754l-0.78483,-0.78479l-4.60275,4.60274z"/></svg></span><span>Empty</span></span></div>
                        ]]>
    </checklist>


                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                    <customfield id="customfield_14730" key="com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes">
                        <customfieldname>Approved</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="17305"><![CDATA[Yes]]></customfieldvalue>
    
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                    <customfield id="customfield_10111" key="com.atlassian.jira.toolkit:reporterdomain">
                        <customfieldname>Company</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>magnolia-cms.com</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                            <customfield id="customfield_12730" key="com.atlassian.jira.plugins.jira-development-integration-plugin:devsummary">
                        <customfieldname>Development</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_14151" key="com.atlassian.jira.toolkit:message">
                        <customfieldname>Docu info</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                            <customfield id="customfield_10246" key="com.pyxis.greenhopper.jira:gh-epic-link">
                        <customfieldname>Epic Link</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>MGNLHOOK-230</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    <customfield id="customfield_10061" key="com.atlassian.jira.toolkit:lastusercommented">
                        <customfieldname>Last comm is not jira-dev</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>true</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10071" key="com.atlassian.jira.toolkit:lastupdaterorcommenter">
                        <customfieldname>Last participant</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>oanh.thai</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_13136" key="com.atlassian.jira.toolkit:LastCommentDate">
                        <customfieldname>Last public comment date</customfieldname>
                        <customfieldvalues>
                            20 weeks, 4 days ago
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                            <customfield id="customfield_10020" key="com.atlassian.jira.toolkit:attachments">
                        <customfieldname>Number of attachments</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>0.0</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10150" key="com.atlassian.jira.toolkit:comments">
                        <customfieldname>Number of comments</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>0.0</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        <customfield id="customfield_10011" key="com.atlassian.jira.toolkit:participants">
                        <customfieldname>Participants</customfieldname>
                        <customfieldvalues>
                                        <customfieldvalue>jbenito</customfieldvalue>
    
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                    <customfield id="customfield_10833" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>0|hzztvm:60o4425w0j</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10244" key="com.pyxis.greenhopper.jira:gh-global-rank">
                        <customfieldname>Rank (Obsolete)</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>9223372036854775807</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                        <customfield id="customfield_10245" key="com.pyxis.greenhopper.jira:gh-sprint">
                        <customfieldname>Sprint</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue id="1829">DevX 47</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                            <customfield id="customfield_10242" key="com.atlassian.jira.plugin.system.customfieldtypes:float">
                        <customfieldname>Story Points</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>3.0</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                            <customfield id="customfield_12430" key="com.atlassian.teams:rm-teams-custom-field-team">
                        <customfieldname>Team</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue><![CDATA[26]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                            <customfield id="customfield_14145" key="com.intenso.jira.issue-templates:issue-templates-customfield">
                        <customfieldname>Template</customfieldname>
                        <customfieldvalues>
                            

    <customfieldvalue>Bug template</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                <customfield id="customfield_15131" key="com.onresolve.jira.groovy.groovyrunner:scripted-field">
                        <customfieldname>Time in Discovery</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>77</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10032" key="com.atlassian.jira.ext.charting:timeinstatus">
                        <customfieldname>Time in Status</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                            <customfield id="customfield_13933" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                        <customfieldname>Urgency (resolution)</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="15724"><![CDATA[Normal]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                <customfield id="customfield_14630" key="com.atlassian.jira.plugin.system.customfieldtypes:datetime">
                        <customfieldname>Work Started</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>Thu, 21 Sep 2023 12:16:01 +0200</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                    </customfields>
    </item>
</channel>
</rss>