<!-- 
RSS generated by JIRA (9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66) at Thu Feb 08 06:03:44 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>MongoDB Jira</title>
    <link>https://jira.mongodb.org</link>
    <description>This file is an XML representation of an issue</description>
    <language>en-us</language>    <build-info>
        <version>9.7.1</version>
        <build-number>970001</build-number>
        <build-date>13-04-2023</build-date>
    </build-info>


<item>
            <title>[SERVER-65821] Deadlock during setFCV when there are prepared transactions that have not persisted commit/abort decision</title>
                <link>https://jira.mongodb.org/browse/SERVER-65821</link>
                <project id="10000" key="SERVER">Core Server</project>
                    <description>&lt;p&gt;Here are the steps to reproduce the deadlock:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;Run a cross-shard transaction with two participant shards, shard0 and shard1 where shard0 is the coordinator shard. Pause the TransactionCoordinator thread right before the commit decision is written (i.e. after the transaction has entered the &quot;prepared&quot; state).&lt;/li&gt;
	&lt;li&gt;Run a setFCV command against shard0. Wait until the setFCV thread is blocked waiting to acquire the global S lock (i.e. waiting for prepared transactions that existed before the FCV change to commit or abort).&lt;/li&gt;
	&lt;li&gt;Unpause the TransactionCoordinator thread. The transaction cannot commit since the TransactionCoordinator is blocked waiting to acquire the IX lock for the config.transaction_coordinators collection to write the commit decision.&lt;/li&gt;
	&lt;li&gt;Both the setFCV thread and TransactionCoordinator thread now hang.&lt;/li&gt;
&lt;/ul&gt;
</description>
                <environment></environment>
        <key id="2028940">SERVER-65821</key>
            <summary>Deadlock during setFCV when there are prepared transactions that have not persisted commit/abort decision</summary>
                <type id="1" iconUrl="https://jira.mongodb.org/secure/viewavatar?size=xsmall&amp;avatarId=14703&amp;avatarType=issuetype">Bug</type>
                                            <priority id="2" iconUrl="https://jira.mongodb.org/images/icons/priorities/critical.svg">Critical - P2</priority>
                        <status id="6" iconUrl="https://jira.mongodb.org/images/icons/statuses/closed.png" description="The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.">Closed</status>
                    <statusCategory id="3" key="done" colorName="success"/>
                                    <resolution id="13201">Fixed</resolution>
                                        <assignee username="gregory.noma@mongodb.com">Gregory Noma</assignee>
                                    <reporter username="cheahuychou.mao@mongodb.com">Cheahuychou Mao</reporter>
                        <labels>
                    </labels>
                <created>Wed, 20 Apr 2022 14:14:31 +0000</created>
                <updated>Sun, 29 Oct 2023 21:39:13 +0000</updated>
                            <resolved>Mon, 9 May 2022 19:27:07 +0000</resolved>
                                    <version>6.0.0-rc1</version>
                    <version>5.3.0</version>
                    <version>4.4.0</version>
                    <version>5.0.0</version>
                                    <fixVersion>5.3.2</fixVersion>
                    <fixVersion>6.0.0-rc5</fixVersion>
                    <fixVersion>4.4.15</fixVersion>
                    <fixVersion>5.0.10</fixVersion>
                    <fixVersion>6.1.0-rc0</fixVersion>
                                    <component>Sharding</component>
                                        <votes>0</votes>
                                    <watches>22</watches>
                                                                                                                <comments>
                            <comment id="4587579" author="xgen-internal-githook" created="Wed, 1 Jun 2022 17:57:01 +0000"  >&lt;p&gt;Author:&lt;/p&gt;
{&apos;name&apos;: &apos;Gregory Noma&apos;, &apos;email&apos;: &apos;gregory.noma@gmail.com&apos;, &apos;username&apos;: &apos;gregorynoma&apos;}
&lt;p&gt;Message: &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-65821&quot; title=&quot;Deadlock during setFCV when there are prepared transactions that have not persisted commit/abort decision&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-65821&quot;&gt;&lt;del&gt;SERVER-65821&lt;/del&gt;&lt;/a&gt; Allow prepared transactions to write commit decision across FCV barrier&lt;/p&gt;

&lt;p&gt;(cherry picked from commit 5f15e515c617fca69a4a6dc4be741c19e2d07aa8)&lt;br/&gt;
(cherry picked from commit 1c3268ae7fd8ffd678c20d5f2ac977be2a2c982f)&lt;br/&gt;
Branch: v4.4&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/mongo/commit/f8b07d496fe3f8559c2ce505c2bd2787b58342ab&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo/commit/f8b07d496fe3f8559c2ce505c2bd2787b58342ab&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="4576178" author="xgen-internal-githook" created="Thu, 26 May 2022 19:08:40 +0000"  >&lt;p&gt;Author:&lt;/p&gt;
{&apos;name&apos;: &apos;Gregory Noma&apos;, &apos;email&apos;: &apos;gregory.noma@gmail.com&apos;, &apos;username&apos;: &apos;gregorynoma&apos;}
&lt;p&gt;Message: &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-65821&quot; title=&quot;Deadlock during setFCV when there are prepared transactions that have not persisted commit/abort decision&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-65821&quot;&gt;&lt;del&gt;SERVER-65821&lt;/del&gt;&lt;/a&gt; Allow prepared transactions to write commit decision across FCV barrier&lt;/p&gt;

&lt;p&gt;(cherry picked from commit 5f15e515c617fca69a4a6dc4be741c19e2d07aa8)&lt;br/&gt;
(cherry picked from commit 1c3268ae7fd8ffd678c20d5f2ac977be2a2c982f)&lt;br/&gt;
Branch: v5.0&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/mongo/commit/1afb8d3b1efd8b02f3d09af822f9a54a8c9f6f3d&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo/commit/1afb8d3b1efd8b02f3d09af822f9a54a8c9f6f3d&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="4538370" author="xgen-internal-githook" created="Tue, 10 May 2022 14:47:25 +0000"  >&lt;p&gt;Author:&lt;/p&gt;
{&apos;name&apos;: &apos;Gregory Noma&apos;, &apos;email&apos;: &apos;gregory.noma@gmail.com&apos;, &apos;username&apos;: &apos;gregorynoma&apos;}
&lt;p&gt;Message: &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-65821&quot; title=&quot;Deadlock during setFCV when there are prepared transactions that have not persisted commit/abort decision&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-65821&quot;&gt;&lt;del&gt;SERVER-65821&lt;/del&gt;&lt;/a&gt; Allow prepared transactions to write commit decision across FCV barrier&lt;/p&gt;

&lt;p&gt;(cherry picked from commit 5f15e515c617fca69a4a6dc4be741c19e2d07aa8)&lt;br/&gt;
Branch: v5.3&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/mongo/commit/007846ad9c22495af276034c6d855572947e2742&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo/commit/007846ad9c22495af276034c6d855572947e2742&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="4538346" author="xgen-internal-githook" created="Tue, 10 May 2022 14:41:39 +0000"  >&lt;p&gt;Author:&lt;/p&gt;
{&apos;name&apos;: &apos;Gregory Noma&apos;, &apos;email&apos;: &apos;gregory.noma@gmail.com&apos;, &apos;username&apos;: &apos;gregorynoma&apos;}
&lt;p&gt;Message: &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-65821&quot; title=&quot;Deadlock during setFCV when there are prepared transactions that have not persisted commit/abort decision&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-65821&quot;&gt;&lt;del&gt;SERVER-65821&lt;/del&gt;&lt;/a&gt; Allow prepared transactions to write commit decision across FCV barrier&lt;/p&gt;

&lt;p&gt;(cherry picked from commit 5f15e515c617fca69a4a6dc4be741c19e2d07aa8)&lt;br/&gt;
Branch: v6.0&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/mongo/commit/d9acfef2b9bd2f3715906596bbf566e6023d8a64&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo/commit/d9acfef2b9bd2f3715906596bbf566e6023d8a64&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="4536648" author="gregory.noma" created="Mon, 9 May 2022 20:51:02 +0000"  >&lt;p&gt;The solution we&apos;ve implemented for now is to have a new global lock resource, &lt;a href=&quot;https://github.com/mongodb/mongo/blob/32e2e0d1385f6e47f829ff70b9fce95b3873a54f/src/mongo/db/concurrency/lock_manager_defs.h#L316-L319&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;&lt;tt&gt;resourceIdFeatureCompatibilityVersion&lt;/tt&gt;&lt;/a&gt;, which &lt;a href=&quot;https://github.com/mongodb/mongo/blob/32e2e0d1385f6e47f829ff70b9fce95b3873a54f/src/mongo/db/concurrency/d_concurrency.cpp#L154-L157&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;gets implicitly acquired in &lt;tt&gt;MODE_IX&lt;/tt&gt; when acquiring a global lock in &lt;tt&gt;MODE_IX&lt;/tt&gt; or &lt;tt&gt;MODE_X&lt;/tt&gt;&lt;/a&gt;. The &lt;tt&gt;setFCV&lt;/tt&gt; command &lt;a href=&quot;https://github.com/mongodb/mongo/blob/32e2e0d1385f6e47f829ff70b9fce95b3873a54f/src/mongo/db/commands/set_feature_compatibility_version_command.cpp#L551-L559&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;acquires this new resource in &lt;tt&gt;MODE_S&lt;/tt&gt; as a barrier&lt;/a&gt;, rather than using the global lock for this purpose. Then &lt;a href=&quot;https://github.com/mongodb/mongo/blob/32e2e0d1385f6e47f829ff70b9fce95b3873a54f/src/mongo/db/storage/control/journal_flusher.cpp#L101-L102&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;the journal flusher opts out of conflicting with &lt;tt&gt;setFCV&lt;/tt&gt;&lt;/a&gt;, as does &lt;a href=&quot;https://github.com/mongodb/mongo/blob/32e2e0d1385f6e47f829ff70b9fce95b3873a54f/src/mongo/db/s/transaction_coordinator_util.cpp#L356-L364&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;the transaction coordinator when writing the commit decision&lt;/a&gt;. This allows the transaction to commit and subsequently allows the &lt;tt&gt;setFCV&lt;/tt&gt; to complete.&lt;/p&gt;

&lt;p&gt;However, going forward we would like to come up with a more permanent solution to this issue. One potential idea is to combine the transaction participant and transaction coordinator on the coordinating shard. A change would also need to be made to the journal flusher. Potentially instead of necessarily being its own thread, any operation that currently needs to wait for the journal flusher to run could instead pick up the work using its own resources.&lt;/p&gt;</comment>
                            <comment id="4536386" author="xgen-internal-githook" created="Mon, 9 May 2022 19:25:04 +0000"  >&lt;p&gt;Author:&lt;/p&gt;
{&apos;name&apos;: &apos;Gregory Noma&apos;, &apos;email&apos;: &apos;gregory.noma@gmail.com&apos;, &apos;username&apos;: &apos;gregorynoma&apos;}
&lt;p&gt;Message: &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-65821&quot; title=&quot;Deadlock during setFCV when there are prepared transactions that have not persisted commit/abort decision&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-65821&quot;&gt;&lt;del&gt;SERVER-65821&lt;/del&gt;&lt;/a&gt; Allow prepared transactions to write commit decision across FCV barrier&lt;br/&gt;
Branch: master&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/mongo/commit/5f15e515c617fca69a4a6dc4be741c19e2d07aa8&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo/commit/5f15e515c617fca69a4a6dc4be741c19e2d07aa8&lt;/a&gt;&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10420">
                    <name>Backports</name>
                                            <outwardlinks description="backported by">
                                                        </outwardlinks>
                                                        </issuelinktype>
                            <issuelinktype id="10520">
                    <name>Problem/Incident</name>
                                            <outwardlinks description="causes">
                                        <issuelink>
            <issuekey id="2296641">SERVER-75205</issuekey>
        </issuelink>
                            </outwardlinks>
                                                        </issuelinktype>
                            <issuelinktype id="10012">
                    <name>Related</name>
                                            <outwardlinks description="related to">
                                        <issuelink>
            <issuekey id="2053634">SERVER-66719</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="2039532">SERVER-66213</issuekey>
        </issuelink>
                            </outwardlinks>
                                                                <inwardlinks description="is related to">
                                        <issuelink>
            <issuekey id="1897937">SERVER-60682</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="1769596">SERVER-57476</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="2043274">SERVER-66340</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="2043275">SERVER-66341</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="2043276">SERVER-66342</issuekey>
        </issuelink>
                            </inwardlinks>
                                    </issuelinktype>
                    </issuelinks>
                <attachments>
                    </attachments>
                <subtasks>
                    </subtasks>
                <customfields>
                                                <customfield id="customfield_10050" key="com.atlassian.jira.toolkit:comments">
                        <customfieldname># Replies</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>6.0</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_18555" key="com.onresolve.jira.groovy.groovyrunner:scripted-field">
                        <customfieldname># of Sprints</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>2.0</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                <customfield id="customfield_12450" key="com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes">
                        <customfieldname>Backport Requested</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="23470"><![CDATA[v6.0]]></customfieldvalue>
    <customfieldvalue key="23140"><![CDATA[v5.3]]></customfieldvalue>
    <customfieldvalue key="21777"><![CDATA[v5.0]]></customfieldvalue>
    <customfieldvalue key="18953"><![CDATA[v4.4]]></customfieldvalue>
    
                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10011" key="com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons">
                        <customfieldname>Backwards Compatibility</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="10038"><![CDATA[Fully Compatible]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                    <customfield id="customfield_13552" key="com.go2group.jira.plugin.crm:crm_generic_field">
                        <customfieldname>Case</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue><![CDATA[[5006R00001igxrNQAQ]]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                            <customfield id="customfield_10055" key="com.atlassian.jira.ext.charting:firstresponsedate">
                        <customfieldname>Date of 1st Reply</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>Wed, 20 Apr 2022 23:37:53 +0000</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10052" key="com.atlassian.jira.toolkit:dayslastcommented">
                        <customfieldname>Days since reply</customfieldname>
                        <customfieldvalues>
                                        1 year, 36 weeks ago
    
                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_18254" key="com.onresolve.jira.groovy.groovyrunner:scripted-field">
                        <customfieldname>Dependencies</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue><![CDATA[]]></customfieldvalue>


                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_15850" key="com.atlassian.jira.plugins.jira-development-integration-plugin:devsummary">
                        <customfieldname>Development</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                                                                                                        <customfield id="customfield_17050" key="com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons">
                        <customfieldname>Downstream Team Attention</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="16941"><![CDATA[Not Needed]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                <customfield id="customfield_10057" key="com.atlassian.jira.toolkit:lastusercommented">
                        <customfieldname>Last comment by Customer</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>true</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                            <customfield id="customfield_10056" key="com.atlassian.jira.toolkit:lastupdaterorcommenter">
                        <customfieldname>Last commenter</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>luke.bonanomi@mongodb.com</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_11151" key="com.atlassian.jira.toolkit:LastCommentDate">
                        <customfieldname>Last public comment date</customfieldname>
                        <customfieldvalues>
                            1 year, 36 weeks ago
                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_16465" key="com.onresolve.jira.groovy.groovyrunner:scripted-field">
                        <customfieldname>Linked BF Score</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>169.0</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                        <customfield id="customfield_10032" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                        <customfieldname>Operating System</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="10026"><![CDATA[ALL]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                <customfield id="customfield_10051" key="com.atlassian.jira.toolkit:participants">
                        <customfieldname>Participants</customfieldname>
                        <customfieldvalues>
                                        <customfieldvalue>cheahuychou.mao@mongodb.com</customfieldvalue>
            <customfieldvalue>xgen-internal-githook</customfieldvalue>
            <customfieldvalue>gregory.noma@mongodb.com</customfieldvalue>
    
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                        <customfield id="customfield_14254" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Product Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>1|i0ruuf:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                <customfield id="customfield_12550" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>2|hr2544:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10558" key="com.pyxis.greenhopper.jira:gh-global-rank">
                        <customfieldname>Rank (Obsolete)</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>9223372036854775807</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                            <customfield id="customfield_23361" key="com.onresolve.jira.groovy.groovyrunner:scripted-field">
                        <customfieldname>Requested By</customfieldname>
                        <customfieldvalues>
                                

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                            <customfield id="customfield_22250" key="com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons">
                        <customfieldname>Special Downgrade Instructions Required</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="23343"><![CDATA[Not Needed]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10557" key="com.pyxis.greenhopper.jira:gh-sprint">
                        <customfieldname>Sprint</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue id="5979">Execution Team 2022-05-02</customfieldvalue>
    <customfieldvalue id="5980">Execution Team 2022-05-16</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                        <customfield id="customfield_10053" key="com.atlassian.jira.ext.charting:timeinstatus">
                        <customfieldname>Time In Status</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                        <customfield id="customfield_22870" key="com.onresolve.jira.groovy.groovyrunner:scripted-field">
                        <customfieldname>Triagers</customfieldname>
                        <customfieldvalues>
                                

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                    <customfield id="customfield_14350" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>serverRank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>1|i0rgzr:</customfieldvalue>

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