<!-- 
RSS generated by JIRA (9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66) at Thu Feb 08 04:54:19 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-40200] Address &quot;query_exec&quot; dependency on &quot;transaction&quot; library.</title>
                <link>https://jira.mongodb.org/browse/SERVER-40200</link>
                <project id="10000" key="SERVER">Core Server</project>
                    <description>&lt;p&gt;Planned changes to the TransactionHistoryIterator will require it to call into the query_lib&apos;s getExecutorFind() function. However, query_lib already has a dependency on the transaction library, so this call would create a dependency cycle.&lt;/p&gt;

&lt;p&gt;It looks like this dependency is the result of UpdateStage::assertDocStillBelongsToNode(). Is there some way we can break that dependency so that the transaction library can safely depend on query_lib?&lt;/p&gt;</description>
                <environment></environment>
        <key id="718861">SERVER-40200</key>
            <summary>Address &quot;query_exec&quot; dependency on &quot;transaction&quot; library.</summary>
                <type id="4" iconUrl="https://jira.mongodb.org/secure/viewavatar?size=xsmall&amp;avatarId=14710&amp;avatarType=issuetype">Improvement</type>
                                            <priority id="3" iconUrl="https://jira.mongodb.org/images/icons/priorities/major.svg">Major - P3</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="janna.golden@mongodb.com">Janna Golden</assignee>
                                    <reporter username="justin.seyster@mongodb.com">Justin Seyster</reporter>
                        <labels>
                    </labels>
                <created>Mon, 18 Mar 2019 21:08:50 +0000</created>
                <updated>Sun, 29 Oct 2023 22:22:51 +0000</updated>
                            <resolved>Wed, 27 Mar 2019 20:00:32 +0000</resolved>
                                                    <fixVersion>4.1.10</fixVersion>
                                                        <votes>0</votes>
                                    <watches>7</watches>
                                                                                                                <comments>
                            <comment id="2193686" author="xgen-internal-githook" created="Wed, 27 Mar 2019 20:00:27 +0000"  >&lt;p&gt;Author:&lt;/p&gt;
{&apos;email&apos;: &apos;golden.janna@gmail.com&apos;, &apos;name&apos;: &apos;jannaerin&apos;, &apos;username&apos;: &apos;jannaerin&apos;}
&lt;p&gt;Message: &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-40200&quot; title=&quot;Address &amp;quot;query_exec&amp;quot; dependency on &amp;quot;transaction&amp;quot; library.&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-40200&quot;&gt;&lt;del&gt;SERVER-40200&lt;/del&gt;&lt;/a&gt; remove query_exec lib dependency on transaction library&lt;br/&gt;
Branch: master&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/mongo/commit/ea0b5bc2587157daf9e31890feb8b0209ce4e62d&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo/commit/ea0b5bc2587157daf9e31890feb8b0209ce4e62d&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="2185227" author="siyuan.zhou@10gen.com" created="Tue, 19 Mar 2019 19:24:42 +0000"  >&lt;p&gt;Agreed. States like whether we are inside a transaction or not should be accessed without linking against the whole transaction library. Currently, the member variables of operation context and its decorations serve this purpose. Maybe in the future we need to go further than that to pull out more states, following how sharding pulled out the sharding API for upper level usage. The implementation of transaction shouldn&apos;t  be linked anyway though.&lt;/p&gt;</comment>
                            <comment id="2185197" author="kaloian.manassiev" created="Tue, 19 Mar 2019 18:35:52 +0000"  >&lt;p&gt;Assigning to &lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=janna.golden&quot; class=&quot;user-hover&quot; rel=&quot;janna.golden&quot;&gt;janna.golden&lt;/a&gt; to see whether this dependency on the transactions library could be abstracted.&lt;/p&gt;

&lt;p&gt;I kind of think though, that being able to access the active transaction&apos;s state from within an update is not architecturally wrong. Perhaps the parts of the transactions library, which use DBDirectClient can be pulled out?&lt;/p&gt;</comment>
                            <comment id="2184393" author="siyuan.zhou@10gen.com" created="Mon, 18 Mar 2019 21:26:01 +0000"  >&lt;p&gt;&lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=kaloian.manassiev&quot; class=&quot;user-hover&quot; rel=&quot;kaloian.manassiev&quot;&gt;kaloian.manassiev&lt;/a&gt;, this is the issue we discussed the other day and it turned out to be blocking the change stream work. I think this ticket is what we need. Transaction is implemented by writing and reading the metadata in transaction table, so it&apos;s natural to have TransactionHistoryIterator to depend on query. Currently, DBDirectClient is used, so the dependency cycle already exists but it&apos;s just hidden.&lt;/p&gt;

&lt;p&gt;The only place where query needs transaction is &lt;a href=&quot;https://github.com/mongodb/mongo/blob/a5138072e1bb731bbbc8612c21d4bb9c4cc98270/src/mongo/db/exec/update_stage.cpp#L903&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;here&lt;/a&gt;. That logic needs to know whether we are in a transaction or retryable write but it doesn&apos;t depend on the implementation of transaction. There are perhaps other ways to achieve this. For example, we can check the read concern: snapshot to know whether users intend to run a transaction. Checking the transaction number will tell us whether a session is used. Checking the &lt;tt&gt;opCtx-&amp;gt;getWriteUnitOfWork()&lt;/tt&gt; can tell whether the transaction is active or not. Hope we can remove the cycle somehow.&lt;/p&gt;</comment>
                            <comment id="2184371" author="kaloian.manassiev" created="Mon, 18 Mar 2019 21:11:47 +0000"  >&lt;p&gt;It doesn&apos;t seem right that the transactions library should have a dependency on query. Transactions is a very low level concept and if anything, query should have dependency on it.&lt;/p&gt;

&lt;p&gt;What is the scenario for adding this dependency?&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10011">
                    <name>Depends</name>
                                                                <inwardlinks description="is depended on by">
                                        <issuelink>
            <issuekey id="700936">SERVER-39676</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>5.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_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_10055" key="com.atlassian.jira.ext.charting:firstresponsedate">
                        <customfieldname>Date of 1st Reply</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>Mon, 18 Mar 2019 21:11:47 +0000</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10052" key="com.atlassian.jira.toolkit:dayslastcommented">
                        <customfieldname>Days since reply</customfieldname>
                        <customfieldvalues>
                                        4 years, 46 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_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>
                            4 years, 46 weeks ago
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                    <customfield id="customfield_10051" key="com.atlassian.jira.toolkit:participants">
                        <customfieldname>Participants</customfieldname>
                        <customfieldvalues>
                                        <customfieldvalue>xgen-internal-githook</customfieldvalue>
            <customfieldvalue>janna.golden@mongodb.com</customfieldvalue>
            <customfieldvalue>justin.seyster@mongodb.com</customfieldvalue>
            <customfieldvalue>kaloian.manassiev@mongodb.com</customfieldvalue>
            <customfieldvalue>siyuan.zhou@mongodb.com</customfieldvalue>
    
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                        <customfield id="customfield_14254" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Product Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>1|hur5ov:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                <customfield id="customfield_12550" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>2|hugrjz:</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_10557" key="com.pyxis.greenhopper.jira:gh-sprint">
                        <customfieldname>Sprint</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue id="2825">Sharding 2019-03-25</customfieldvalue>
    <customfieldvalue id="2863">Sharding 2019-04-08</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|huqry7:</customfieldvalue>

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