<!-- 
RSS generated by JIRA (9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66) at Thu Feb 08 03:55: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-20704] Make sure that storage engine without backup support can pass all the tests</title>
                <link>https://jira.mongodb.org/browse/SERVER-20704</link>
                <project id="10000" key="SERVER">Core Server</project>
                    <description>&lt;p&gt;RocksDB has its own way of doing backups, so we didn&apos;t plan to support backups from MongoDB API at this time (&lt;a href=&quot;http://blog.parse.com/learn/engineering/strata-open-source-library-for-efficient-mongodb-backups/&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;http://blog.parse.com/learn/engineering/strata-open-source-library-for-efficient-mongodb-backups/&lt;/a&gt;). However, currently a storage engine without backup support fails a lot of tests. An example: &lt;a href=&quot;https://logkeeper.mongodb.org/build/560bf35e90413021b19a2209/test/560bf3a2be07c4135f9a2607&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://logkeeper.mongodb.org/build/560bf35e90413021b19a2209/test/560bf3a2be07c4135f9a2607&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Can we skip all the tests that depend on backup functionality if the storage engine doesn&apos;t implement it?&lt;/p&gt;</description>
                <environment></environment>
        <key id="232215">SERVER-20704</key>
            <summary>Make sure that storage engine without backup support can pass all the tests</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="9">Done</resolution>
                                        <assignee username="backlog-server-execution">Backlog - Storage Execution Team</assignee>
                                    <reporter username="igor">Igor Canadi</reporter>
                        <labels>
                    </labels>
                <created>Wed, 30 Sep 2015 17:44:31 +0000</created>
                <updated>Tue, 6 Dec 2022 04:43:27 +0000</updated>
                            <resolved>Mon, 15 Apr 2019 20:53:54 +0000</resolved>
                                                                    <component>Storage</component>
                                        <votes>0</votes>
                                    <watches>9</watches>
                                                                                                                <comments>
                            <comment id="2214270" author="sara.williamson" created="Mon, 15 Apr 2019 20:53:54 +0000"  >&lt;p&gt;In the future we will be able to use tags for this, so closing as gone away.&lt;/p&gt;</comment>
                            <comment id="1050414" author="igor" created="Sat, 3 Oct 2015 00:17:36 +0000"  >&lt;p&gt;RocksDB should now pass all the tests that depend on fsyncLock() functionality: &lt;a href=&quot;https://github.com/mongodb-partners/mongo-rocks/commit/2c8f0b657f303cae24ba6613e26400ec3da7ccb7&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb-partners/mongo-rocks/commit/2c8f0b657f303cae24ba6613e26400ec3da7ccb7&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="1048161" author="igor" created="Thu, 1 Oct 2015 00:23:24 +0000"  >&lt;p&gt;I just had a discussion with David and it turns out that the actual fsyncLock() guarantees are not very hard to implement on RocksDB side. So I&apos;ll fix it on our side to get all tests passing.&lt;/p&gt;

&lt;p&gt;However, it would be still good if a storage engine could pass all the tests without fsyncLock support. That way we keep the barrier to entry low for new storage engines.&lt;/p&gt;</comment>
                            <comment id="1048153" author="david.hows" created="Thu, 1 Oct 2015 00:02:45 +0000"  >&lt;p&gt;&lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=ramon.fernandez&quot; class=&quot;user-hover&quot; rel=&quot;ramon.fernandez&quot;&gt;ramon.fernandez&lt;/a&gt;,&lt;/p&gt;

&lt;p&gt;There are sort of a few facets to this as fsyncLock makes one guarantee and has 2 uses:&lt;/p&gt;
&lt;ol&gt;
	&lt;li&gt;Guarantee consistency on disk (fsync)&lt;/li&gt;
	&lt;li&gt;Optionally, lock the database from writes (lock)&lt;/li&gt;
&lt;/ol&gt;


&lt;p&gt;We have tests that use this one command for each of the above purposes.&lt;/p&gt;

&lt;p&gt;The changes made in &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-18899&quot; title=&quot;Enable fsyncLock on WiredTiger to allow backups via copy&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-18899&quot;&gt;&lt;del&gt;SERVER-18899&lt;/del&gt;&lt;/a&gt; made it explicit that a storage engine either meets the guarantee or does not.&lt;/p&gt;

&lt;p&gt;The tests that are failing are those which want the lock, but don&apos;t care about the guarantee of on disk consistency when locked. In the jstests/gle/gle_explicit_optime.js test linked above, we lock the secondary to prevent replication (want the lock, not the fsync).&lt;/p&gt;

&lt;p&gt;Assuming that blocking writes is enough to guarantee that there will be no on disk changes in Rocks, then we can simply overload the begin/end backup functions in the mongo-rocks api to return Status::OK(), effectively saying that the lock alone meets the guarantee.&lt;/p&gt;

&lt;p&gt;The same is likely true in both the devNull and inMemory engines for similar reasons.&lt;/p&gt;

&lt;p&gt;A longer term solution here may be to look at a way to de-couple lock from fsync for the above tests.&lt;/p&gt;</comment>
                            <comment id="1047985" author="ramon.fernandez" created="Wed, 30 Sep 2015 20:51:11 +0000"  >&lt;p&gt;I guess the clean way to do this is to have an API call that returns whether the engine supports backups or not. Sending ticket for triaging...&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10012">
                    <name>Related</name>
                                            <outwardlinks description="related to">
                                        <issuelink>
            <issuekey id="231491">SERVER-20633</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_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>Wed, 30 Sep 2015 20:51:11 +0000</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10052" key="com.atlassian.jira.toolkit:dayslastcommented">
                        <customfieldname>Days since reply</customfieldname>
                        <customfieldvalues>
                                        4 years, 43 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>
                            4 years, 43 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>david.hows</customfieldvalue>
            <customfieldvalue>igor</customfieldvalue>
            <customfieldvalue>ramon.fernandez@mongodb.com</customfieldvalue>
            <customfieldvalue>sara.williamson@mongodb.com</customfieldvalue>
    
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                        <customfield id="customfield_14254" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Product Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>1|hrkt4v:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                <customfield id="customfield_12550" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>2|hr7h8f:</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_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|hsflx3:</customfieldvalue>

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