<!-- 
RSS generated by JIRA (9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66) at Thu Feb 08 06:26:18 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-74024] Ensure Shard Merge supports change stream pre- and post-images</title>
                <link>https://jira.mongodb.org/browse/SERVER-74024</link>
                <project id="10000" key="SERVER">Core Server</project>
                    <description>&lt;p&gt;Supporting pre-images in the event of a failover after the completion of a Shard Merge is difficult. Consider the following scenario:&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;&lt;tt&gt;TenantOplogApplier&lt;/tt&gt; &lt;a href=&quot;https://github.com/10gen/mongo/blob/bd88e57d954ac821229f83ff7068dd6ab65e2322/src/mongo/db/repl/tenant_oplog_applier.cpp#L1068-L1073&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;applies a write&lt;/a&gt; on the recipient primary during the oplog catchup phase of a shard merge with &lt;b&gt;donor&lt;/b&gt; timeline TS = 100 and a pre-image is inserted at the same ts via &lt;a href=&quot;https://github.com/10gen/mongo/blob/bd88e57d954ac821229f83ff7068dd6ab65e2322/src/mongo/db/repl/oplog.cpp#L1831&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;writeChangeStreamPreImage&lt;/a&gt; in &lt;tt&gt;db/repl/oplog.cpp&lt;/tt&gt;. The write operation itself is logged on the &lt;b&gt;recipient&lt;/b&gt; timeline at TS = 150.&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;https://github.com/10gen/mongo/blob/bd88e57d954ac821229f83ff7068dd6ab65e2322/src/mongo/db/op_observer/op_observer_impl.cpp#L910-L911&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;ChangeStreamPreImageCollectionManager::insertPreImage&lt;/a&gt; is called via op observer as a result of the above applied write, but with an &lt;a href=&quot;https://github.com/10gen/mongo/blob/bd88e57d954ac821229f83ff7068dd6ab65e2322/src/mongo/db/op_observer/op_observer_impl.cpp#L870&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;optime&lt;/a&gt; on the recipient timeline at TS = 150.&lt;/li&gt;
	&lt;li&gt;On the recipient secondary, replication happens for the write at TS = 150, resulting in &lt;a href=&quot;https://github.com/10gen/mongo/blob/bd88e57d954ac821229f83ff7068dd6ab65e2322/src/mongo/db/repl/oplog.cpp#L1831&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;writeChangeStreamPreImage&lt;/a&gt; being called, this time on the recipient timeline at TS = 150.&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;at the end of this sequence of events, we have 2 pre-image entries for the same write on the primary, identical except for differing timestamps (TS = 100 and TS = 150). on the secondary, we have one pre-image entry at TS = 150. if we attempt to resume a change stream on the recipient primary with a resume token from before the migration, we can successfully resume because the pre-image entry on the donor timeline exists. &lt;a href=&quot;https://github.com/10gen/mongo/blob/c80e2a2a35ef841404af18cc2c4b754423edaa41/src/mongo/db/pipeline/document_source_change_stream_add_pre_image.cpp#L100-L140&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;resumption fails&lt;/a&gt; on the secondary because only the recipient timeline pre-image entry exists.&lt;/p&gt;

&lt;p&gt;Ideally, we should also try to fix the &quot;duplicate&quot; pre-image entry issue described above so that the entries on primary and secondaries are consistent.&lt;/p&gt;</description>
                <environment></environment>
        <key id="2264864">SERVER-74024</key>
            <summary>Ensure Shard Merge supports change stream pre- and post-images</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="christopher.caplinger@mongodb.com">Christopher Caplinger</assignee>
                                    <reporter username="christopher.caplinger@mongodb.com">Christopher Caplinger</reporter>
                        <labels>
                            <label>change-streams-support</label>
                    </labels>
                <created>Tue, 14 Feb 2023 21:48:20 +0000</created>
                <updated>Sun, 29 Oct 2023 21:26:17 +0000</updated>
                            <resolved>Tue, 25 Apr 2023 18:26:27 +0000</resolved>
                                                    <fixVersion>7.1.0-rc0</fixVersion>
                                                        <votes>0</votes>
                                    <watches>3</watches>
                                                                                                                <comments>
                            <comment id="5372092" author="xgen-internal-githook" created="Mon, 24 Apr 2023 20:52:36 +0000"  >&lt;p&gt;Author: &lt;/p&gt;
{&apos;name&apos;: &apos;Christopher Caplinger&apos;, &apos;email&apos;: &apos;christopher.caplinger@mongodb.com&apos;, &apos;username&apos;: &apos;UnicodeSnowman&apos;}
&lt;p&gt;Message: &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-74024&quot; title=&quot;Ensure Shard Merge supports change stream pre- and post-images&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-74024&quot;&gt;&lt;del&gt;SERVER-74024&lt;/del&gt;&lt;/a&gt;: Shard Merge supports change stream pre-images&lt;br/&gt;
Branch: master&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/mongo/commit/5993f36ebb8e7adc26a51262558156a5c3a9e8ed&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo/commit/5993f36ebb8e7adc26a51262558156a5c3a9e8ed&lt;/a&gt;&lt;/p&gt;</comment>
                    </comments>
                    <attachments>
                    </attachments>
                <subtasks>
                    </subtasks>
                <customfields>
                                                <customfield id="customfield_10050" key="com.atlassian.jira.toolkit:comments">
                        <customfieldname># Replies</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>1.0</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_18555" key="com.onresolve.jira.groovy.groovyrunner:scripted-field">
                        <customfieldname># of Sprints</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>5.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, 21 Mar 2023 20:57:09 +0000</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10052" key="com.atlassian.jira.toolkit:dayslastcommented">
                        <customfieldname>Days since reply</customfieldname>
                        <customfieldvalues>
                                        41 weeks, 2 days 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_10857" key="com.pyxis.greenhopper.jira:gh-epic-link">
                        <customfieldname>Epic Link</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>PM-3248</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>
                            41 weeks, 2 days ago
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                    <customfield id="customfield_10051" key="com.atlassian.jira.toolkit:participants">
                        <customfieldname>Participants</customfieldname>
                        <customfieldvalues>
                                        <customfieldvalue>christopher.caplinger@mongodb.com</customfieldvalue>
            <customfieldvalue>xgen-internal-githook</customfieldvalue>
    
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                        <customfield id="customfield_14254" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Product Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>1|i1w1x3:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                <customfield id="customfield_12550" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>2|i1ea1w:</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="7086">Server Serverless 2023-03-06</customfieldvalue>
    <customfieldvalue id="7087">Server Serverless 2023-03-20</customfieldvalue>
    <customfieldvalue id="7088">Server Serverless 2023-04-03</customfieldvalue>
    <customfieldvalue id="7292">Server Serverless 2023-04-17</customfieldvalue>
    <customfieldvalue id="7293">Server Serverless 2023-05-01</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|i1vo2f:</customfieldvalue>

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