<!-- 
RSS generated by JIRA (9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66) at Thu Feb 08 04:46:50 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-37730] Make the index catalog timestamp aware</title>
                <link>https://jira.mongodb.org/browse/SERVER-37730</link>
                <project id="10000" key="SERVER">Core Server</project>
                    <description>&lt;p&gt;Add &apos;birth&apos; and &apos;death&apos; timestamps to in-memory index catalog entries so that we can keep the in-memory index catalog entry objects and know when it is appropriate to use them. Handle standalones, too, they should default to zero timestamp for both &apos;birth&apos; and &apos;death&apos;. And built indexes loaded into memory can default to zero for the &apos;birth&apos; timestamp as well, since PIT reads are not possible to before the index existed.&lt;br/&gt;
 -----------&lt;br/&gt;
 Delay dropping indexes until the index&apos;s death timestamp is checkpointed and older than supported point-in-time reads. Metadata changes in the storage engine act across all timestamps, they are not point-in-time.&lt;br/&gt;
 ------------&lt;br/&gt;
 listIndexes should not return indexes with set &apos;death&apos; timestamps.&lt;br/&gt;
 ------------&lt;br/&gt;
 Two phase drop of indexes&lt;br/&gt;
 1st Phase:&lt;/p&gt;
&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;keep in-memory, set death timestamp&lt;/li&gt;
	&lt;li&gt;remove entry from __mdb_catalog&lt;/li&gt;
	&lt;li&gt;keep index table in WT&lt;/li&gt;
	&lt;li&gt;schedule table delete when death timestamp is older than both oldest_timestamp last checkpointed timestamp &#8211; see RTT explanation below for why.&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;2nd Phase (when death timestamp is old enough):&lt;/p&gt;
&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;Remove in-memory entry&lt;/li&gt;
	&lt;li&gt;Delete table.&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;PIT accesses will see PIT version of __mdb_catalog that still has the index entry if the in-memory index entry allows index access at that PIT. Then the table still exists at that PIT and everything works.&lt;/p&gt;

&lt;p&gt;Rollback via refetch works:&lt;/p&gt;
&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;unschedule index table delete&lt;/li&gt;
	&lt;li&gt;rewrite __mdb_catalog entry&lt;/li&gt;
	&lt;li&gt;unset in-memory death timestamp&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;RTT works:&lt;/p&gt;
&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;The in-memory catalog has been closed, so in-memory entries are of no concern&lt;/li&gt;
	&lt;li&gt;the __mdb_catalog entry will be recovered if appropriate on recovery to stable&lt;/li&gt;
	&lt;li&gt;if the __mdb_catalog entry was recovered, oplog application will reapply dropIndexes if it is not rolled back&lt;/li&gt;
	&lt;li&gt;easier to drop index table after dropIndexes is in the checkpoint, and will never be undone on rollback. Otherwise, the index table could be discarded, before dropIndexes is checkpointed, then recovery to the checkpoint will recreate the index catalog entry in __mdb_catalog and our hook to rebuild the index table will run &#8211; it&apos;d be nicer if the index table wasn&apos;t dropped in the first place.&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Question: does something bad happen if we checkpoint a timestamp that is newer than oldest timestamp? I imagine WT handles that situation, maybe checkpoints further back in time, earlier than oldest_timestamp. In case oldest_timestamp ever was set that far back in time, since the calculation doesn&apos;t currently refer to the checkpointed timestamp at all.&lt;/p&gt;</description>
                <environment></environment>
        <key id="623480">SERVER-37730</key>
            <summary>Make the index catalog timestamp aware</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="12300">Won&apos;t Do</resolution>
                                        <assignee username="backlog-server-execution">Backlog - Storage Execution Team</assignee>
                                    <reporter username="dianna.hohensee@mongodb.com">Dianna Hohensee</reporter>
                        <labels>
                            <label>execution_intern_2019</label>
                    </labels>
                <created>Wed, 24 Oct 2018 14:27:39 +0000</created>
                <updated>Tue, 6 Dec 2022 03:15:02 +0000</updated>
                            <resolved>Mon, 16 Mar 2020 20:29:24 +0000</resolved>
                                                                    <component>Storage</component>
                                        <votes>0</votes>
                                    <watches>4</watches>
                                                                                                                <comments>
                            <comment id="2982204" author="connie.chen" created="Mon, 16 Mar 2020 20:29:24 +0000"  >&lt;p&gt;We&apos;ll be doing this another way&lt;/p&gt;</comment>
                            <comment id="2328750" author="benety.goh" created="Tue, 16 Jul 2019 14:19:26 +0000"  >&lt;p&gt;This ticket was originally intended to support the work in &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-38548&quot; title=&quot;Leverage the KVDropPendingIdentReaper and TimestampMonitor to make index drops two-phase&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-38548&quot;&gt;&lt;del&gt;SERVER-38548&lt;/del&gt;&lt;/a&gt;, which defers ident drops for indexes.&lt;/p&gt;</comment>
                            <comment id="2127813" author="milkie" created="Fri, 25 Jan 2019 17:23:35 +0000"  >&lt;p&gt;Temporarily putting work on this ticket on hold (not critical path work); may pick it up later.&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10020">
                    <name>Gantt Dependency</name>
                                                                <inwardlinks description="has to be done after">
                                        <issuelink>
            <issuekey id="626965">SERVER-37843</issuekey>
        </issuelink>
                            </inwardlinks>
                                    </issuelinktype>
                            <issuelinktype id="10012">
                    <name>Related</name>
                                                                <inwardlinks description="is related to">
                                        <issuelink>
            <issuekey id="623555">SERVER-37733</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="650033">SERVER-38548</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="662572">SERVER-38797</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>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_12751" key="com.atlassian.jira.plugin.system.customfieldtypes:multiselect">
                        <customfieldname>Assigned Teams</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="25136"><![CDATA[Storage Execution]]></customfieldvalue>
    
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    <customfield id="customfield_10055" key="com.atlassian.jira.ext.charting:firstresponsedate">
                        <customfieldname>Date of 1st Reply</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>Tue, 22 Jan 2019 17:25:16 +0000</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10052" key="com.atlassian.jira.toolkit:dayslastcommented">
                        <customfieldname>Days since reply</customfieldname>
                        <customfieldvalues>
                                        3 years, 47 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>alexander.golin@mongodb.com</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_11151" key="com.atlassian.jira.toolkit:LastCommentDate">
                        <customfieldname>Last public comment date</customfieldname>
                        <customfieldvalues>
                            3 years, 47 weeks, 2 days ago
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                    <customfield id="customfield_10051" key="com.atlassian.jira.toolkit:participants">
                        <customfieldname>Participants</customfieldname>
                        <customfieldvalues>
                                        <customfieldvalue>backlog-server-execution</customfieldvalue>
            <customfieldvalue>benety.goh@mongodb.com</customfieldvalue>
            <customfieldvalue>connie.chen@mongodb.com</customfieldvalue>
            <customfieldvalue>dianna.hohensee@mongodb.com</customfieldvalue>
            <customfieldvalue>milkie@mongodb.com</customfieldvalue>
    
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                        <customfield id="customfield_14254" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Product Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>1|hub4c7:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                <customfield id="customfield_12550" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>2|hr64lj:</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="2708">Storage NYC 2019-01-14</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|huaqlj:</customfieldvalue>

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