<!-- 
RSS generated by JIRA (9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66) at Thu Feb 08 08:39:09 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>[GODRIVER-2685] Simplify &quot;writeconcern&quot; API</title>
                <link>https://jira.mongodb.org/browse/GODRIVER-2685</link>
                <project id="14289" key="GODRIVER">Go Driver</project>
                    <description>&lt;p&gt;The &lt;tt&gt;writeconcern&lt;/tt&gt; package and types use a lot of unnecessary APIs that can confuse users. Additionally, there is no shortcut for specifying common write concerns like there is for the &lt;tt&gt;readconcern&lt;/tt&gt; and &lt;tt&gt;readpref&lt;/tt&gt; packages. We should remove the functional options pattern and just export all fields in the &lt;tt&gt;WriteConcern&lt;/tt&gt; struct so users can set them directly. We should add package functions for quickly specifying common write concerns &quot;majority&quot;, &quot;w: 0&quot;, and &quot;w: 1&quot;.&lt;/p&gt;

&lt;p&gt;Also, some exported values or functions do not need to be exported:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;tt&gt;ErrInconsistent&lt;/tt&gt;, &lt;tt&gt;ErrEmptyWriteConcern&lt;/tt&gt;, &lt;tt&gt;ErrNegativeW&lt;/tt&gt;, &lt;tt&gt;ErrNegativeWTimeout&lt;/tt&gt; - Unless users are dynamically building write concerns at application time, these error are unrecoverable and do not need to support special conditional logic (i.e. &lt;tt&gt;if err == ErrInconsistent&lt;/tt&gt;).&lt;/li&gt;
	&lt;li&gt;&lt;tt&gt;WriteConcern.MarshalBSONValue&lt;/tt&gt; - The single known use case outside of the Go driver is in mongorestore, which uses it to make a copy of a write concern. That use case is removed by exporting the write concern fields.&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Definition of done:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;Add package functions for creating common write concerns
	&lt;ul&gt;
		&lt;li&gt;&lt;tt&gt;Majority&lt;/tt&gt;&lt;/li&gt;
		&lt;li&gt;&lt;tt&gt;W0&lt;/tt&gt;&lt;/li&gt;
		&lt;li&gt;&lt;tt&gt;W1&lt;/tt&gt;&lt;/li&gt;
		&lt;li&gt;&lt;tt&gt;Custom(tag string)&lt;/tt&gt;&lt;/li&gt;
	&lt;/ul&gt;
	&lt;/li&gt;
	&lt;li&gt;Export all fields in the &lt;tt&gt;WriteConcern&lt;/tt&gt; struct and add documentation for what each field does and what values are valid.
	&lt;ul&gt;
		&lt;li&gt;When exporting the &lt;tt&gt;J&lt;/tt&gt; field, change it to type &lt;tt&gt;*bool&lt;/tt&gt; so we can represent either &lt;tt&gt;true&lt;/tt&gt;, &lt;tt&gt;false&lt;/tt&gt; or unset. Also update the logic to only exclude &lt;tt&gt;J&lt;/tt&gt; from the marshaled document if it&apos;s unset, but always include explicit &lt;tt&gt;true&lt;/tt&gt; or &lt;tt&gt;false&lt;/tt&gt;.&lt;/li&gt;
	&lt;/ul&gt;
	&lt;/li&gt;
	&lt;li&gt;Deprecate &lt;tt&gt;Option&lt;/tt&gt; type and all &lt;tt&gt;Option&lt;/tt&gt; functions.&lt;/li&gt;
	&lt;li&gt;Deprecate &lt;tt&gt;New&lt;/tt&gt;.&lt;/li&gt;
	&lt;li&gt;Deprecate all error values.&lt;/li&gt;
	&lt;li&gt;Deprecate &lt;tt&gt;WriteConcern.MarshalBSONValue&lt;/tt&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Note that all deprecated code will be removed or unexported in Go Driver 2.0.&lt;/p&gt;</description>
                <environment></environment>
        <key id="2207853">GODRIVER-2685</key>
            <summary>Simplify &quot;writeconcern&quot; API</summary>
                <type id="4" iconUrl="https://jira.mongodb.org/secure/viewavatar?size=xsmall&amp;avatarId=14710&amp;avatarType=issuetype">Improvement</type>
                                            <priority id="10300" iconUrl="https://jira.mongodb.org/images/icons/priorities/medium.svg">Unknown</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="matt.dale@mongodb.com">Matt Dale</assignee>
                                    <reporter username="matt.dale@mongodb.com">Matt Dale</reporter>
                        <labels>
                    </labels>
                <created>Sun, 11 Dec 2022 08:16:47 +0000</created>
                <updated>Sat, 28 Oct 2023 11:37:24 +0000</updated>
                            <resolved>Wed, 14 Jun 2023 21:40:41 +0000</resolved>
                                                    <fixVersion>1.12.0</fixVersion>
                                                        <votes>0</votes>
                                    <watches>1</watches>
                                                                                                                <comments>
                            <comment id="5500009" author="xgen-internal-githook" created="Wed, 14 Jun 2023 21:12:35 +0000"  >&lt;p&gt;Author: &lt;/p&gt;
{&apos;name&apos;: &apos;Matt Dale&apos;, &apos;email&apos;: &apos;9760375+matthewdale@users.noreply.github.com&apos;, &apos;username&apos;: &apos;matthewdale&apos;}
&lt;p&gt;Message: &lt;a href=&quot;https://jira.mongodb.org/browse/GODRIVER-2685&quot; title=&quot;Simplify &amp;quot;writeconcern&amp;quot; API&quot; class=&quot;issue-link&quot; data-issue-key=&quot;GODRIVER-2685&quot;&gt;&lt;del&gt;GODRIVER-2685&lt;/del&gt;&lt;/a&gt; Simplify the writeconcern API. (#1232)&lt;br/&gt;
Branch: master&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/mongo-go-driver/commit/a10150b0070a7882af25a7946cf8cd438ed0e3ef&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo-go-driver/commit/a10150b0070a7882af25a7946cf8cd438ed0e3ef&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="5354354" author="JIRAUSER1259527" created="Tue, 18 Apr 2023 01:08:09 +0000"  >&lt;p&gt;PR: &lt;a href=&quot;https://github.com/mongodb/mongo-go-driver/pull/1232&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo-go-driver/pull/1232&lt;/a&gt;&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10011">
                    <name>Depends</name>
                                                                <inwardlinks description="is depended on by">
                                        <issuelink>
            <issuekey id="2213442">GODRIVER-2696</issuekey>
        </issuelink>
                            </inwardlinks>
                                    </issuelinktype>
                            <issuelinktype id="10320">
                    <name>Documented</name>
                                                                <inwardlinks description="is documented by">
                                                        </inwardlinks>
                                    </issuelinktype>
                            <issuelinktype id="10010">
                    <name>Duplicate</name>
                                                                <inwardlinks description="is duplicated by">
                                        <issuelink>
            <issuekey id="832969">GODRIVER-1179</issuekey>
        </issuelink>
                            </inwardlinks>
                                    </issuelinktype>
                            <issuelinktype id="10012">
                    <name>Related</name>
                                            <outwardlinks description="related to">
                                        <issuelink>
            <issuekey id="2423591">GODRIVER-2953</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="2314676">GODRIVER-2812</issuekey>
        </issuelink>
                            </outwardlinks>
                                                                <inwardlinks description="is related to">
                                        <issuelink>
            <issuekey id="738621">GODRIVER-964</issuekey>
        </issuelink>
                            </inwardlinks>
                                    </issuelinktype>
                    </issuelinks>
                <attachments>
                    </attachments>
                <subtasks>
                    </subtasks>
                <customfields>
                                                                                                                                                                                                                                                                                                                                                                    <customfield id="customfield_15850" key="com.atlassian.jira.plugins.jira-development-integration-plugin:devsummary">
                        <customfieldname>Development</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10257" key="com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons">
                        <customfieldname>Documentation Changes</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="10250"><![CDATA[Needed]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_14266" key="com.atlassian.jira.plugin.system.customfieldtypes:textarea">
                        <customfieldname>Documentation Changes Summary</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>&lt;p&gt;1.  What would you like to communicate to the user about this feature?&lt;br/&gt;
There is a new standard syntax for defining write concerns in the Go driver.&lt;/p&gt;

&lt;p&gt;2.  Would you like the user to see examples of the syntax and/or executable code and its output?&lt;br/&gt;
Yes. All examples showing how to specify a write concern should be updated to use the new syntax.&lt;/p&gt;

&lt;p&gt;At least the following pages contain examples that should be updated:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;a href=&quot;https://www.mongodb.com/docs/drivers/go/upcoming/fundamentals/crud/write-read-pref/&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://www.mongodb.com/docs/drivers/go/upcoming/fundamentals/crud/write-read-pref/&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;https://www.mongodb.com/docs/drivers/go/upcoming/fundamentals/transactions/&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://www.mongodb.com/docs/drivers/go/upcoming/fundamentals/transactions/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;3.  Which versions of the driver/connector does this apply to?&lt;br/&gt;
v1.12+&lt;/p&gt;</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                            <customfield id="customfield_10857" key="com.pyxis.greenhopper.jira:gh-epic-link">
                        <customfieldname>Epic Link</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>GODRIVER-2680</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                            <customfield id="customfield_21553" key="com.atlassian.jira.plugin.system.customfieldtypes:labels">
                        <customfieldname>Quarter</customfieldname>
                        <customfieldvalues>
                                        <label>FY24Q1</label>
    
                        </customfieldvalues>
                    </customfield>
                                                                                            <customfield id="customfield_12550" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>2|hr6jqv:s0000a</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>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            </customfields>
    </item>
</channel>
</rss>