<!-- 
RSS generated by JIRA (8.20.10#820010-sha1:ace47f9899e9ee25d7157d59aa17ab06aee30d3d) at Wed Feb 07 20:02:04 UTC 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>OpenDaylight JIRA</title>
    <link>https://jira.opendaylight.org</link>
    <description>This file is an XML representation of an issue</description>
    <language>en-us</language>    <build-info>
        <version>8.20.10</version>
        <build-number>820010</build-number>
        <build-date>22-06-2022</build-date>
    </build-info>


<item>
            <title>[INFRAUTILS-23] Remove Executors.newSingleThreadExecutor() and replace users with SpecialExecutors.newBoundedSingleThreadExecutor()</title>
                <link>https://jira.opendaylight.org/browse/INFRAUTILS-23</link>
                <project id="10129" key="INFRAUTILS">infrautils</project>
                    <description>&lt;p&gt;motivated by &lt;a href=&quot;https://jira.opendaylight.org/browse/GENIUS-97&quot; title=&quot;IdPoolListener OOM&quot; class=&quot;issue-link&quot; data-issue-key=&quot;GENIUS-97&quot;&gt;&lt;del&gt;GENIUS-97&lt;/del&gt;&lt;/a&gt; :&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://lists.opendaylight.org/pipermail/infrautils-dev/2017-November/000487.html&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://lists.opendaylight.org/pipermail/infrautils-dev/2017-November/000487.html&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now that &lt;a href=&quot;https://git.opendaylight.org/gerrit/#/c/63805/&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://git.opendaylight.org/gerrit/#/c/63805/&lt;/a&gt; has gone in, let us after all use org.opendaylight.yangtools.util.concurrent.SpecialExecutors&apos;s newBoundedSingleThreadExecutor everywhere in genius / netvirt / SFC &lt;img class=&quot;emoticon&quot; src=&quot;https://jira.opendaylight.org/images/icons/emoticons/help_16.png&quot; height=&quot;16&quot; width=&quot;16&quot; align=&quot;absmiddle&quot; alt=&quot;&quot; border=&quot;0&quot;/&gt; instead of org.opendaylight.infrautils.utils.concurrent.Executors.newSingleThreadExecutor() introduced in &lt;a href=&quot;https://git.opendaylight.org/gerrit/#/c/55251/&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://git.opendaylight.org/gerrit/#/c/55251/&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Then remove the newSingleThreadExecutor method, but keep the Executors class around and write JavaDoc to point surprised existing users to SpecialExecutors with an explanation copy/pasted from my infrautils-dev list thread why it&apos;s very important to use maximumQueueSize.&lt;/p&gt;

&lt;p&gt;Wondering what a sensible maximumQueueSize e.g. for async DTCL is... thoughts, anyone?&lt;/p&gt;

&lt;p&gt;PS: In an ideal world I would have wanted to move SpecialExecutors from yangtools to infrautils, but that won&apos;t be possible due to &lt;a href=&quot;https://jira.opendaylight.org/secure/ViewProfile.jspa?name=rovarga&quot; class=&quot;user-hover&quot; rel=&quot;rovarga&quot;&gt;rovarga&lt;/a&gt; refusal to let yangtools depend on infrautils. &lt;a href=&quot;https://jira.opendaylight.org/secure/ViewProfile.jspa?name=tpantelis&quot; class=&quot;user-hover&quot; rel=&quot;tpantelis&quot;&gt;tpantelis&lt;/a&gt; is happy to contribute SpecialExecutors to infrautils, but I think a fork is a shame to be avoid, if at all possible. Only if anywhere in infrautils we needed to use a newBoundedSingleThreadExecutor then this would be justified.&lt;/p&gt;</description>
                <environment></environment>
        <key id="28697">INFRAUTILS-23</key>
            <summary>Remove Executors.newSingleThreadExecutor() and replace users with SpecialExecutors.newBoundedSingleThreadExecutor()</summary>
                <type id="10100" iconUrl="https://jira.opendaylight.org/secure/viewavatar?size=xsmall&amp;avatarId=10310&amp;avatarType=issuetype">Improvement</type>
                                            <priority id="2" iconUrl="https://jira.opendaylight.org/images/icons/priorities/critical.svg">High</priority>
                        <status id="10003" iconUrl="https://jira.opendaylight.org/images/icons/status_generic.gif" description="">Confirmed</status>
                    <statusCategory id="2" key="new" colorName="blue-gray"/>
                                    <resolution id="-1">Unresolved</resolution>
                                        <assignee username="-1">Unassigned</assignee>
                                    <reporter username="vorburger">Michael Vorburger</reporter>
                        <labels>
                    </labels>
                <created>Sat, 4 Nov 2017 01:29:45 +0000</created>
                <updated>Tue, 5 Oct 2021 20:47:30 +0000</updated>
                                                                            <component>utils, incl. inject</component>
                        <due></due>
                            <votes>0</votes>
                                    <watches>1</watches>
                                                                                                                <comments>
                            <comment id="59914" author="tpantelis" created="Sat, 4 Nov 2017 01:55:08 +0000"  >&lt;p&gt;If you&apos;re going to bound the queue then you have to handle rejected tasks. Most likely you don&apos;t want to drop tasks so use CallerRunsPolicy or ODL&apos;s WaitInQueueExecutionHandler - both put back pressure on the producer which might allow the system to recover gracefully. SpecialExecutors.newBoundedSingleThreadExecutor uses AbortPolicy. We can use SpecialExecutors.newBlockingBoundedCachedThreadPool (which uses CallerRunsPolicy) with 1 thread but I think it would be useful to add a newBlockingBoundedSingleThreadExecutor to Executors using either CountingRejectedExecutionHandler&apos;s newCallerRunsPolicy or newCallerWaitsPolicy. &lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10000">
                    <name>Blocks</name>
                                            <outwardlinks description="blocks">
                                        <issuelink>
            <issuekey id="28694">GENIUS-97</issuekey>
        </issuelink>
                            </outwardlinks>
                                                        </issuelinktype>
                    </issuelinks>
                <attachments>
                    </attachments>
                <subtasks>
                    </subtasks>
                <customfields>
                                                                            <customfield id="customfield_11400" key="com.atlassian.jira.plugins.jira-development-integration-plugin:devsummary">
                        <customfieldname>Development</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                <customfield id="customfield_10000" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>0|i0379r:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                </customfields>
    </item>
</channel>
</rss>