<!-- 
RSS generated by JIRA (9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66) at Thu Feb 08 08:37:31 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-1962] WithTransaction mongodb error detection doesn&apos;t unwrap errors</title>
                <link>https://jira.mongodb.org/browse/GODRIVER-1962</link>
                <project id="14289" key="GODRIVER">Go Driver</project>
                    <description>&lt;p&gt;The session `WithTransaction` currently tries to cast the error returned by the user supplied function to see if it is a `CommandError`. I believe it should instead use `errors.As()` to see if the returned error unwraps to a command error so that if a developer wraps an error(ie so you can return a prettier error to users) then the command error will still be detected by the mongodb driver and retry logic still applied.&lt;/p&gt;

&lt;p&gt;&#160;&lt;/p&gt;

&lt;p&gt;This block specifically the first line with `err.(CommandError)` should be changed to use `errors.As` instead which will check if the error is a CommandError directly or if it unwraps to one and contains a CommandError.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://github.com/mongodb/mongo-go-driver/blob/master/mongo/session.go#L196-L200&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo-go-driver/blob/master/mongo/session.go#L196-L200&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Example use case:&#160;&lt;a href=&quot;https://play.golang.org/p/pOkZ7a9anzj&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://play.golang.org/p/pOkZ7a9anzj&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&#160;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://golang.org/pkg/errors/#As&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://golang.org/pkg/errors/#As&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&#160;&lt;/p&gt;

&lt;p&gt;I believe this is the cause of WriteConflict errors when we moved transactions to production.&lt;/p&gt;</description>
                <environment></environment>
        <key id="1679075">GODRIVER-1962</key>
            <summary>WithTransaction mongodb error detection doesn&apos;t unwrap errors</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="isabella.siu@mongodb.com">Isabella Siu</assignee>
                                    <reporter username="epelc@greatcloak.com">Ed Pelc</reporter>
                        <labels>
                    </labels>
                <created>Tue, 13 Apr 2021 14:55:32 +0000</created>
                <updated>Sat, 28 Oct 2023 11:37:49 +0000</updated>
                            <resolved>Fri, 23 Apr 2021 18:49:44 +0000</resolved>
                                                    <fixVersion>1.5.2</fixVersion>
                                    <component>API</component>
                    <component>Error Handling</component>
                                        <votes>0</votes>
                                    <watches>3</watches>
                                                                                                                <comments>
                            <comment id="3736416" author="xgen-internal-githook" created="Fri, 23 Apr 2021 18:46:01 +0000"  >&lt;p&gt;Author:&lt;/p&gt;
{&apos;name&apos;: &apos;Isabella Siu&apos;, &apos;email&apos;: &apos;isabella.siu@mongodb.com&apos;, &apos;username&apos;: &apos;iwysiu&apos;}
&lt;p&gt;Message: &lt;a href=&quot;https://jira.mongodb.org/browse/GODRIVER-1962&quot; title=&quot;WithTransaction mongodb error detection doesn&amp;#39;t unwrap errors&quot; class=&quot;issue-link&quot; data-issue-key=&quot;GODRIVER-1962&quot;&gt;&lt;del&gt;GODRIVER-1962&lt;/del&gt;&lt;/a&gt; unwrap errors in WithTransaction (#634)&lt;br/&gt;
Branch: release/1.5&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/mongo-go-driver/commit/54c8ba3f46762dd1af6916ba4de2b4fbab7d06b3&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo-go-driver/commit/54c8ba3f46762dd1af6916ba4de2b4fbab7d06b3&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="3735777" author="xgen-internal-githook" created="Fri, 23 Apr 2021 15:00:46 +0000"  >&lt;p&gt;Author:&lt;/p&gt;
{&apos;name&apos;: &apos;Isabella Siu&apos;, &apos;email&apos;: &apos;isabella.siu@mongodb.com&apos;, &apos;username&apos;: &apos;iwysiu&apos;}
&lt;p&gt;Message: &lt;a href=&quot;https://jira.mongodb.org/browse/GODRIVER-1962&quot; title=&quot;WithTransaction mongodb error detection doesn&amp;#39;t unwrap errors&quot; class=&quot;issue-link&quot; data-issue-key=&quot;GODRIVER-1962&quot;&gt;&lt;del&gt;GODRIVER-1962&lt;/del&gt;&lt;/a&gt; unwrap errors in WithTransaction (#634)&lt;br/&gt;
Branch: master&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/mongo-go-driver/commit/9a3bd057f614a7dafbfb402a3ac0f7a73643b239&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo-go-driver/commit/9a3bd057f614a7dafbfb402a3ac0f7a73643b239&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="3721211" author="isabella.siu" created="Thu, 15 Apr 2021 19:53:29 +0000"  >&lt;p&gt;Hi &lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=epelc%40greatcloak.com&quot; class=&quot;user-hover&quot; rel=&quot;epelc@greatcloak.com&quot;&gt;epelc@greatcloak.com&lt;/a&gt;!&lt;/p&gt;

&lt;p&gt;Thanks for the bug report! We&apos;ll try to have a fix for this in for the next patch version.&lt;/p&gt;</comment>
                            <comment id="3715365" author="epelc@greatcloak.com" created="Tue, 13 Apr 2021 15:24:13 +0000"  >&lt;p&gt;This is the current alternative because the driver can&apos;t unwrap WithTransaction errors.&lt;/p&gt;

&lt;p&gt;&#160;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://play.golang.org/p/jS-aw2-4ROC&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://play.golang.org/p/jS-aw2-4ROC&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&#160;&lt;/p&gt;

&lt;p&gt;You&apos;d be able to return wrapped errors directly if the driver switched to `errors.As`. Also note that the go standard library now and has for a while recommended using `errors.As` instead of a type assertion.&lt;/p&gt;</comment>
                    </comments>
                    <attachments>
                    </attachments>
                <subtasks>
                    </subtasks>
                <customfields>
                                                                                                                                                                                                                        <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_15850" key="com.atlassian.jira.plugins.jira-development-integration-plugin:devsummary">
                        <customfieldname>Development</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    <customfield id="customfield_12550" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>2|hypmhr:</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>