<!-- 
RSS generated by JIRA (9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66) at Thu Feb 08 04:33:01 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-33318] WTKVEngine::_advanceOldestTimestamp is unaware the input timestamp is already oplog visibility protected</title>
                <link>https://jira.mongodb.org/browse/SERVER-33318</link>
                <project id="10000" key="SERVER">Core Server</project>
                    <description>&lt;p&gt;&lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-33126&quot; title=&quot;Replication commit point can include uncommitted storage transactions&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-33126&quot;&gt;&lt;del&gt;SERVER-33126&lt;/del&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/mongodb/mongo/blob/c4e444a62ce32eb37928396699fc7aaa0536226e/src/mongo/db/storage/wiredtiger/wiredtiger_kv_engine.cpp#L1034-L1041&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;added logic&lt;/a&gt; to prevent the stable timestamp from being set ahead of oplog visibility. It is a required piece for &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-29213&quot; title=&quot;Have KVWiredTigerEngine implement StorageEngine::recoverToStableTimestamp&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-29213&quot;&gt;&lt;del&gt;SERVER-29213&lt;/del&gt;&lt;/a&gt;.&lt;br/&gt;
 &lt;tt&gt;`_advanceOldestTimestamp`&lt;/tt&gt; was &lt;a href=&quot;https://github.com/mongodb/mongo/blob/c4e444a62ce32eb37928396699fc7aaa0536226e/src/mongo/db/storage/wiredtiger/wiredtiger_kv_engine.cpp#L1080-L1089&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;already doing this&lt;/a&gt;. However, `_advanceOldestTimestamp` early-returns if oplog visibility is behind the current oldest timestamp.&lt;/p&gt;

&lt;p&gt;This combination creates a bug where &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-33126&quot; title=&quot;Replication commit point can include uncommitted storage transactions&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-33126&quot;&gt;&lt;del&gt;SERVER-33126&lt;/del&gt;&lt;/a&gt; passes an already pinned value to `_advanceOldestTimestamp`. The second pin attempt is &lt;a href=&quot;https://github.com/mongodb/mongo/blob/c4e444a62ce32eb37928396699fc7aaa0536226e/src/mongo/db/storage/wiredtiger/wiredtiger_kv_engine.cpp#L1081&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;unsuccessful&lt;/a&gt;, so the &lt;a href=&quot;https://github.com/mongodb/mongo/blob/c4e444a62ce32eb37928396699fc7aaa0536226e/src/mongo/db/storage/wiredtiger/wiredtiger_kv_engine.cpp#L1085-L1088&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;guard never executes&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Specifically how to hit this is significantly more involved; if oplog visibility wants to pin a write to the oldest timestamp, how come oplog visibility pinning didn&apos;t take effect on the previous write? Briefly, despite setting the oplog visibility to last applied coming out of initial sync, that update can be lost to a stale value. &lt;/p&gt;

&lt;p&gt;In more detail: applying batches during initial sync sets the &lt;a href=&quot;https://github.com/mongodb/mongo/blob/c4e444a62ce32eb37928396699fc7aaa0536226e/src/mongo/db/repl/replication_coordinator_impl.cpp#L1138&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;oldest timestamp to the last applied&lt;/a&gt;. Coming out of initial sync &lt;a href=&quot;https://github.com/mongodb/mongo/blob/c4e444a62ce32eb37928396699fc7aaa0536226e/src/mongo/db/storage/wiredtiger/wiredtiger_kv_engine.cpp#L1025&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;force sets the oldest timestamp to the last applied&lt;/a&gt;. Due to a race between multiple writers of this value, the oplog visibility thread can lose the &lt;a href=&quot;https://github.com/mongodb/mongo/blob/c4e444a62ce32eb37928396699fc7aaa0536226e/src/mongo/db/storage/wiredtiger/wiredtiger_kv_engine.cpp#L1023&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;force-set&lt;/a&gt; from coming out of initial sync and set it to &lt;a href=&quot;https://github.com/mongodb/mongo/blob/c4e444a62ce32eb37928396699fc7aaa0536226e/src/mongo/db/storage/wiredtiger/wiredtiger_oplog_manager.cpp#L181-L197&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;a value from a, now-stale, read&lt;/a&gt;.&lt;/p&gt;</description>
                <environment></environment>
        <key id="497628">SERVER-33318</key>
            <summary>WTKVEngine::_advanceOldestTimestamp is unaware the input timestamp is already oplog visibility protected</summary>
                <type id="1" iconUrl="https://jira.mongodb.org/secure/viewavatar?size=xsmall&amp;avatarId=14703&amp;avatarType=issuetype">Bug</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="milkie@mongodb.com">Eric Milkie</assignee>
                                    <reporter username="daniel.gottlieb@mongodb.com">Daniel Gottlieb</reporter>
                        <labels>
                    </labels>
                <created>Wed, 14 Feb 2018 01:42:11 +0000</created>
                <updated>Sun, 29 Oct 2023 22:34:44 +0000</updated>
                            <resolved>Mon, 5 Mar 2018 13:14:06 +0000</resolved>
                                                    <fixVersion>3.7.3</fixVersion>
                                    <component>Storage</component>
                                        <votes>0</votes>
                                    <watches>4</watches>
                                                                                                                <comments>
                            <comment id="1822929" author="xgen-internal-githook" created="Mon, 5 Mar 2018 13:06:51 +0000"  >&lt;p&gt;Author:&lt;/p&gt;
{&apos;email&apos;: &apos;milkie@10gen.com&apos;, &apos;name&apos;: &apos;Eric Milkie&apos;, &apos;username&apos;: &apos;milkie&apos;}
&lt;p&gt;Message: &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-33318&quot; title=&quot;WTKVEngine::_advanceOldestTimestamp is unaware the input timestamp is already oplog visibility protected&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-33318&quot;&gt;&lt;del&gt;SERVER-33318&lt;/del&gt;&lt;/a&gt; simplify oldest_timestamp setting&lt;br/&gt;
Branch: master&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/mongo/commit/8257a817bfaf596e68204ad858f811e294d986b5&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo/commit/8257a817bfaf596e68204ad858f811e294d986b5&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="1817688" author="xgen-internal-githook" created="Tue, 27 Feb 2018 20:41:43 +0000"  >&lt;p&gt;Author:&lt;/p&gt;
{&apos;email&apos;: &apos;milkie@10gen.com&apos;, &apos;name&apos;: &apos;Eric Milkie&apos;, &apos;username&apos;: &apos;milkie&apos;}
&lt;p&gt;Message: &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-33318&quot; title=&quot;WTKVEngine::_advanceOldestTimestamp is unaware the input timestamp is already oplog visibility protected&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-33318&quot;&gt;&lt;del&gt;SERVER-33318&lt;/del&gt;&lt;/a&gt; add missing include&lt;br/&gt;
Branch: master&lt;br/&gt;
&lt;a href=&quot;https://github.com/10gen/mongo-enterprise-modules/commit/973399fc5c5fb09a84f5224a149e6d69832ebe01&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/10gen/mongo-enterprise-modules/commit/973399fc5c5fb09a84f5224a149e6d69832ebe01&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="1805551" author="milkie" created="Wed, 14 Feb 2018 15:14:25 +0000"  >&lt;p&gt;A fix for this may be to simply remove the previous-set-oldest-timestamp functionality, since it is about to be subsumed by Part 3 of the Local Snapshot Reads Support Mechanism project.&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10011">
                    <name>Depends</name>
                                                                <inwardlinks description="is depended on by">
                                                        </inwardlinks>
                                    </issuelinktype>
                    </issuelinks>
                <attachments>
                    </attachments>
                <subtasks>
                    </subtasks>
                <customfields>
                                                <customfield id="customfield_10050" key="com.atlassian.jira.toolkit:comments">
                        <customfieldname># Replies</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>3.0</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_18555" key="com.onresolve.jira.groovy.groovyrunner:scripted-field">
                        <customfieldname># of Sprints</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>1.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>Wed, 14 Feb 2018 15:14:25 +0000</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10052" key="com.atlassian.jira.toolkit:dayslastcommented">
                        <customfieldname>Days since reply</customfieldname>
                        <customfieldvalues>
                                        5 years, 49 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_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>
                            5 years, 49 weeks, 2 days ago
                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_16465" key="com.onresolve.jira.groovy.groovyrunner:scripted-field">
                        <customfieldname>Linked BF Score</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>0.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>daniel.gottlieb@mongodb.com</customfieldvalue>
            <customfieldvalue>milkie@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|htqcd3:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                <customfield id="customfield_12550" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>2|htikm7:</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="2202">Storage NYC 2018-03-12</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|htpyif:</customfieldvalue>

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