<!-- 
RSS generated by JIRA (9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66) at Thu Feb 08 06:25:34 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-73766] Implement a ScopedLocalCatalogWriter utility</title>
                <link>https://jira.mongodb.org/browse/SERVER-73766</link>
                <project id="10000" key="SERVER">Core Server</project>
                    <description>&lt;p&gt;The &lt;tt&gt;CollectionWriter&lt;/tt&gt; (and it&apos;s sibling &lt;tt&gt;AutoGetCollection::getWritableCollection&lt;/tt&gt;) paradigms are really an attempt to provide a &quot;see your own catalog writes&quot; semantics for catalog changes performed while holding an &lt;tt&gt;AutoGetCollection&lt;/tt&gt;. This ticket is proposing to implement a proper utility which ensures that all collection acquisitions held by an operation automatically see any catalog writes performed by the code path on which they have been placed.&lt;/p&gt;

&lt;p&gt;The semantics of this utility will be:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;It must be instantiated only within a WUOU and its lifetime must be smaller than that of the WUOW&lt;/li&gt;
	&lt;li&gt;Must must be instantiated only by passing a &lt;tt&gt;ScopedCollectionOrViewAcquisition&lt;/tt&gt; obtained with at least MODE_X lock on the collection&lt;/li&gt;
	&lt;li&gt;On construction must invalidate the &lt;tt&gt;ScopedCollectionOrViewAcquisition&lt;/tt&gt; to guarantee that it is not used while the underlying state is being modified&lt;/li&gt;
	&lt;li&gt;On destruction must make visible all the changes made (uncommitted, since within a WUOW) to the &lt;tt&gt;ScopedCollectionOrViewAcquisition&lt;/tt&gt;&lt;/li&gt;
	&lt;li&gt;On rollback of the WUOW, must bring the respective &lt;tt&gt;AcquiredCollection&lt;/tt&gt; to the old state (which means any active &lt;tt&gt;ScopedCollectionOrViewAcquisition&lt;/tt&gt;s will start seeing the old state)&lt;/li&gt;
	&lt;li&gt;&#160;(FUTURE) On commit must ensure that the committed state presented doesn&apos;t advance beyond the Sharding&apos;s Placement timestamp&lt;/li&gt;
&lt;/ul&gt;


&lt;h4&gt;&lt;a name=&quot;Context&quot;&gt;&lt;/a&gt;Context&lt;/h4&gt;

&lt;p&gt;The &lt;tt&gt;AutoGetXXX&lt;/tt&gt; utilities and the &lt;tt&gt;CollectionPtr&lt;/tt&gt; are really caches of a particular collection from the &lt;tt&gt;CollectionCatalog&lt;/tt&gt;, which itself is a cache of the persistent WT state on disk. The &lt;tt&gt;CollectionWriter&lt;/tt&gt; utility serves two purposes:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;Provide a programmatic C++ way to remove the constness of a CollectionPtr&lt;/li&gt;
	&lt;li&gt;Establish a &quot;release&quot;-barrier after which any caches of the &lt;tt&gt;CollectionCatalog&lt;/tt&gt; (namely &lt;tt&gt;AutoGetCollection&lt;/tt&gt;(s)) will reflect the changes that were made to the local catalog, pertaining to that collection&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;The &lt;tt&gt;ScopedCollectionOrView&lt;/tt&gt; acquisition class is really a more complete cache of the entire catalog information for a collection (sharding + local) and at the end of PM-2144, no code paths should be interacting with the catalog outside of &lt;tt&gt;ScopedCollectionOrView&lt;/tt&gt;. The &lt;tt&gt;ScopedLocalCatalogWriter&lt;/tt&gt; described in this ticket will provide the release semantics described above, without dangling memory bugs like &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-73755&quot; title=&quot;Potential reference to freed stack variables in AutoGetCollection::getWritableCollection&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-73755&quot;&gt;&lt;del&gt;SERVER-73755&lt;/del&gt;&lt;/a&gt;, because it will operate on the &lt;tt&gt;TransactionResources&lt;/tt&gt;&apos; collection acquisitions rather than on stack variables.&lt;/p&gt;</description>
                <environment></environment>
        <key id="2257489">SERVER-73766</key>
            <summary>Implement a ScopedLocalCatalogWriter utility</summary>
                <type id="3" iconUrl="https://jira.mongodb.org/secure/viewavatar?size=xsmall&amp;avatarId=14718&amp;avatarType=issuetype">Task</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="kaloian.manassiev@mongodb.com">Kaloian Manassiev</assignee>
                                    <reporter username="kaloian.manassiev@mongodb.com">Kaloian Manassiev</reporter>
                        <labels>
                            <label>PM-2144-Milestone-0</label>
                    </labels>
                <created>Wed, 8 Feb 2023 17:10:29 +0000</created>
                <updated>Sun, 29 Oct 2023 21:26:40 +0000</updated>
                            <resolved>Thu, 30 Mar 2023 11:30:24 +0000</resolved>
                                                    <fixVersion>7.0.0-rc0</fixVersion>
                                    <component>Sharding</component>
                    <component>Storage</component>
                                        <votes>0</votes>
                                    <watches>3</watches>
                                                                                                                <comments>
                            <comment id="5311560" author="xgen-internal-githook" created="Thu, 30 Mar 2023 11:27:42 +0000"  >&lt;p&gt;Author: &lt;/p&gt;
{&apos;name&apos;: &apos;Kaloian Manassiev&apos;, &apos;email&apos;: &apos;kaloian.manassiev@mongodb.com&apos;, &apos;username&apos;: &apos;kaloianm&apos;}
&lt;p&gt;Message: &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-73766&quot; title=&quot;Implement a ScopedLocalCatalogWriter utility&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-73766&quot;&gt;&lt;del&gt;SERVER-73766&lt;/del&gt;&lt;/a&gt; Use ScopedCollectionAcquisition in the CollectionBulkLoaderImpl&lt;br/&gt;
Branch: master&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/mongo/commit/fcd8862523226aba53062faed279c329d7f07ad5&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo/commit/fcd8862523226aba53062faed279c329d7f07ad5&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="5300310" author="xgen-internal-githook" created="Fri, 24 Mar 2023 23:30:50 +0000"  >&lt;p&gt;Author: &lt;/p&gt;
{&apos;name&apos;: &apos;Sviatlana Zuiko&apos;, &apos;email&apos;: &apos;sviatlana.zuiko@mongodb.com&apos;, &apos;username&apos;: &apos;szuiko&apos;}
&lt;p&gt;Message: Revert &quot;&lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-73766&quot; title=&quot;Implement a ScopedLocalCatalogWriter utility&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-73766&quot;&gt;&lt;del&gt;SERVER-73766&lt;/del&gt;&lt;/a&gt; Use ScopedCollectionAcquisition in the CollectionBulkLoaderImpl&quot;&lt;/p&gt;

&lt;p&gt;This reverts commit 7a62847796d3797278a7b5fb6215948cd325b45d.&lt;br/&gt;
Branch: master&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/mongo/commit/56c6c67f6862825d3206251fc9b323509d6c1bd0&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo/commit/56c6c67f6862825d3206251fc9b323509d6c1bd0&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="5292618" author="xgen-internal-githook" created="Wed, 22 Mar 2023 16:26:57 +0000"  >&lt;p&gt;Author: &lt;/p&gt;
{&apos;name&apos;: &apos;Kaloian Manassiev&apos;, &apos;email&apos;: &apos;kaloian.manassiev@mongodb.com&apos;, &apos;username&apos;: &apos;kaloianm&apos;}
&lt;p&gt;Message: &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-73766&quot; title=&quot;Implement a ScopedLocalCatalogWriter utility&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-73766&quot;&gt;&lt;del&gt;SERVER-73766&lt;/del&gt;&lt;/a&gt; Use ScopedCollectionAcquisition in the CollectionBulkLoaderImpl&lt;br/&gt;
Branch: master&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/mongo/commit/7a62847796d3797278a7b5fb6215948cd325b45d&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo/commit/7a62847796d3797278a7b5fb6215948cd325b45d&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="5277848" author="xgen-internal-githook" created="Thu, 16 Mar 2023 15:10:34 +0000"  >&lt;p&gt;Author: &lt;/p&gt;
{&apos;name&apos;: &apos;Kaloian Manassiev&apos;, &apos;email&apos;: &apos;kaloian.manassiev@mongodb.com&apos;, &apos;username&apos;: &apos;kaloianm&apos;}
&lt;p&gt;Message: &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-73766&quot; title=&quot;Implement a ScopedLocalCatalogWriter utility&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-73766&quot;&gt;&lt;del&gt;SERVER-73766&lt;/del&gt;&lt;/a&gt; Introduce kLocalCatalogOnlyWithPotentialDataLoss placement concern&lt;br/&gt;
Branch: master&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/mongo/commit/757102d8184507a82a1bc83b6bbd844ff8e10ab6&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo/commit/757102d8184507a82a1bc83b6bbd844ff8e10ab6&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="5224259" author="xgen-internal-githook" created="Thu, 23 Feb 2023 10:44:46 +0000"  >&lt;p&gt;Author: &lt;/p&gt;
{&apos;name&apos;: &apos;Kaloian Manassiev&apos;, &apos;email&apos;: &apos;kaloian.manassiev@mongodb.com&apos;, &apos;username&apos;: &apos;kaloianm&apos;}
&lt;p&gt;Message: &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-73766&quot; title=&quot;Implement a ScopedLocalCatalogWriter utility&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-73766&quot;&gt;&lt;del&gt;SERVER-73766&lt;/del&gt;&lt;/a&gt; Dependent cleanups&lt;br/&gt;
Branch: master&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/mongo/commit/5ee40fa2dc77876c2885a19bc02ff15a1ea1dde8&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo/commit/5ee40fa2dc77876c2885a19bc02ff15a1ea1dde8&lt;/a&gt;&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10011">
                    <name>Depends</name>
                                            <outwardlinks description="depends on">
                                        <issuelink>
            <issuekey id="2241807">SERVER-73238</issuekey>
        </issuelink>
                            </outwardlinks>
                                                                <inwardlinks description="is depended on by">
                                        <issuelink>
            <issuekey id="2243014">SERVER-73298</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="2257051">SERVER-73756</issuekey>
        </issuelink>
                            </inwardlinks>
                                    </issuelinktype>
                            <issuelinktype id="10520">
                    <name>Problem/Incident</name>
                                            <outwardlinks description="causes">
                                                        </outwardlinks>
                                                        </issuelinktype>
                            <issuelinktype id="10012">
                    <name>Related</name>
                                            <outwardlinks description="related to">
                                        <issuelink>
            <issuekey id="2297800">SERVER-75286</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="2295204">SERVER-75157</issuekey>
        </issuelink>
                            </outwardlinks>
                                                        </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>4.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>Tue, 14 Feb 2023 18:03:02 +0000</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10052" key="com.atlassian.jira.toolkit:dayslastcommented">
                        <customfieldname>Days since reply</customfieldname>
                        <customfieldvalues>
                                        44 weeks, 6 days ago
    
                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_18254" key="com.onresolve.jira.groovy.groovyrunner:scripted-field">
                        <customfieldname>Dependencies</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue><![CDATA[<s><a href='https://jira.mongodb.org/browse/SERVER-73238'>SERVER-73238</a></s>]]></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_10857" key="com.pyxis.greenhopper.jira:gh-epic-link">
                        <customfieldname>Epic Link</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>PM-2144</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>
                            44 weeks, 6 days ago
                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_16465" key="com.onresolve.jira.groovy.groovyrunner:scripted-field">
                        <customfieldname>Linked BF Score</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>135.0</customfieldvalue>

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

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                <customfield id="customfield_12550" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>2|i1d8i8:</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="6813">Sharding EMEA 2023-02-20</customfieldvalue>
    <customfieldvalue id="6814">Sharding EMEA 2023-03-06</customfieldvalue>
    <customfieldvalue id="6815">Sharding EMEA 2023-03-20</customfieldvalue>
    <customfieldvalue id="6817">Sharding EMEA 2023-04-03</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|i1uec7:</customfieldvalue>

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