<!-- 
RSS generated by JIRA (9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66) at Thu Feb 08 08:21:48 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>[DRIVERS-556] Implement Convenient API for Transactions</title>
                <link>https://jira.mongodb.org/browse/DRIVERS-556</link>
                <project id="10980" key="DRIVERS">Drivers</project>
                    <description>&lt;div class=&quot;panel&quot; style=&quot;background-color: #c2d2c2;border-color: #ccc;border-style: dashed;border-width: 1px;&quot;&gt;&lt;div class=&quot;panelHeader&quot; style=&quot;border-bottom-width: 1px;border-bottom-style: dashed;border-bottom-color: #ccc;background-color: #239eb0;&quot;&gt;&lt;b&gt;Useful Info&lt;/b&gt;&lt;/div&gt;&lt;div class=&quot;panelContent&quot; style=&quot;background-color: #c2d2c2;&quot;&gt;
&lt;p&gt;&lt;b&gt;Lead&lt;/b&gt;: &lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=jeff.yemin&quot; class=&quot;user-hover&quot; rel=&quot;jeff.yemin&quot;&gt;jeff.yemin&lt;/a&gt;&lt;br/&gt;
&lt;b&gt;POCs&lt;/b&gt;: C, Java, Ruby, Go&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Spec Links&lt;/b&gt;:&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/specifications/commit/be3d15d64ac10ee704de2780a8060e361fd157aa&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/specifications/commit/be3d15d64ac10ee704de2780a8060e361fd157aa&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;&lt;/div&gt;</description>
                <environment></environment>
        <key id="583342">DRIVERS-556</key>
            <summary>Implement Convenient API for Transactions</summary>
                <type id="11" iconUrl="https://jira.mongodb.org/secure/viewavatar?size=xsmall&amp;avatarId=14707&amp;avatarType=issuetype">Epic</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="-1">Unassigned</assignee>
                                    <reporter username="rathi.gnanasekaran">Rathi Gnanasekaran</reporter>
                        <labels>
                    </labels>
                <created>Fri, 3 Aug 2018 20:40:06 +0000</created>
                <updated>Fri, 2 Feb 2024 15:56:06 +0000</updated>
                            <resolved>Fri, 14 Apr 2023 15:44:42 +0000</resolved>
                                                                            <votes>1</votes>
                                    <watches>4</watches>
                                                                                                                <comments>
                            <comment id="2108845" author="xgen-internal-githook" created="Tue, 8 Jan 2019 17:29:22 +0000"  >&lt;p&gt;Author:&lt;/p&gt;
{&apos;username&apos;: &apos;jmikola&apos;, &apos;email&apos;: &apos;jmikola@gmail.com&apos;, &apos;name&apos;: &apos;Jeremy Mikola&apos;}
&lt;p&gt;Message: &lt;a href=&quot;https://jira.mongodb.org/browse/DRIVERS-556&quot; title=&quot;Implement Convenient API for Transactions&quot; class=&quot;issue-link&quot; data-issue-key=&quot;DRIVERS-556&quot;&gt;&lt;del&gt;DRIVERS-556&lt;/del&gt;&lt;/a&gt;: Convenient API for Transactions spec tests (#435)&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;Add additional withTransaction tests&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;Rename spec directory&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;Test that commit retry only overwrites WC&apos;s w option&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;Document clientOptions in test README&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;withTransaction can still succeed if callback aborts&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;Use consistent result.error fields from transactions spec tests&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;Add wtimeout error test and fix other WC error fail points&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;Reorganize callback/commit tests and add WC and transient error commit tests&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;Add prose tests for callback error and return value behavior&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;Transient error on commit should retry entire transaction&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;Fix readConcern APM assertions&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Per the txn spec, only the initial command in a transaction can include a readConcern. Furthermore, afterClusterTime would only be specified if the client session is re-used for a second transaction (only one of our tests).&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;Use more robust assertions for extra ops after a transaction&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Asserting a value for txnNumber assumes that retryWrites=true, which may not be the case. Instead, ignore that field entirely and just assert that autocommit is not found. Combined with asserting that startTransaction is not found, we effectively assert that the command is not part of a transaction.&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;Expect abortTransaction after non-transient error&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Per the spec, withTransaction should abort if the callback reports an error and the session is in the &quot;starting&quot; or &quot;in progress&quot; state.&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;Skip commit-retry tests pending SPEC-1185&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;Fix expectations for commit TransientTransactionError tests&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Since drivers internally retry commitTransaction, these tests should expect an additional command before the entire transaction is retried. The fail point must also trigger a second time to overcome the driver&apos;s internal retry behavior and allow withTransaction() to retry the entire transaction.&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;Expect readConcern.afterClusterTime when startTransaction is retried&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;Write op is still applied after a write concern error&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;This also consolidates repeated test content with YAML references.&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;Omit closeConnection for writeConcernError fail points&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;Skip write concern timeout test pending SPEC-1197&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;PreparedTransactionInProgress TransientTransactionError requires 4.1.6&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;Add test for retrying WriteConcernFailed non-timeout error&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;Do not assert insertOne result when insert command may fail&lt;br/&gt;
Branch: master&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/specifications/commit/be3d15d64ac10ee704de2780a8060e361fd157aa&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/specifications/commit/be3d15d64ac10ee704de2780a8060e361fd157aa&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10011">
                    <name>Depends</name>
                                            <outwardlinks description="depends on">
                                        <issuelink>
            <issuekey id="630262">RUBY-1574</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="629344">CDRIVER-2870</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="629335">CSHARP-2426</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="629340">CXX-1682</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="629343">GODRIVER-621</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="659969">GODRIVER-734</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="629339">JAVA-3067</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="629333">JAVA-3546</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="629342">MOTOR-280</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="629331">NODE-1741</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="629341">PHPLIB-468</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="629334">PYTHON-1671</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="669726">RUST-107</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="659967">CDRIVER-2908</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="660014">JAVA-3128</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="701452">NODE-1877</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="701453">RUBY-1733</issuekey>
        </issuelink>
                            </outwardlinks>
                                                                <inwardlinks description="is depended on by">
                                                        </inwardlinks>
                                    </issuelinktype>
                            <issuelinktype id="10020">
                    <name>Gantt Dependency</name>
                                            <outwardlinks description="has to be done before">
                                        <issuelink>
            <issuekey id="700224">DRIVERS-608</issuekey>
        </issuelink>
                            </outwardlinks>
                                                        </issuelinktype>
                            <issuelinktype id="10012">
                    <name>Related</name>
                                            <outwardlinks description="related to">
                                        <issuelink>
            <issuekey id="629332">JAVA-3539</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="718785">DRIVERS-623</issuekey>
        </issuelink>
                            </outwardlinks>
                                                                <inwardlinks description="is related to">
                                        <issuelink>
            <issuekey id="717183">DRIVERS-1934</issuekey>
        </issuelink>
                            </inwardlinks>
                                    </issuelinktype>
                    </issuelinks>
                <attachments>
                    </attachments>
                <subtasks>
                    </subtasks>
                <customfields>
                                                                                                                                                                                                                                                                                                            <customfield id="customfield_20965" key="com.atlassian.jira.plugin.system.customfieldtypes:float">
                        <customfieldname>Cost Threshold %</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>100.0</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_23952" key="com.onresolve.jira.groovy.groovyrunner:scripted-field">
                        <customfieldname>Driver Compliance</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue><![CDATA[<style type='text/css'>
         #scriptField, #scriptField *{
                border: 1px solid black;
            }

            #scriptField{
                border-collapse: collapse;
            }

            #scriptField td {
                text-align: center; /* Center-align text in table cells */
            }

            #scriptField td.key {
                text-align: left; /* Left-align text in the Key column */
            }

            #scriptField a {
                text-decoration: none; /* Remove underlines from links */
                border: none; /* Remove border from links */
            }
            
            /* Add green background color to cells with FixVersion */
            #scriptField td.hasFixVersion {
                background-color: #00FF00; /* Green color code */
            }

            /* Center-align the first row headers */
            #scriptField th {
                text-align: center;
            }
        </style>
<table id='scriptField'>
  <tr>
    <th>Key</th>
    <th>Status/Resolution</th>
    <th>FixVersion</th>
  </tr>
  <tr>
    <td class='key'>
      <a href='https://jira.mongodb.org/browse/NODE-1741'>NODE-1741</a>
    </td>
    <td>Fixed</td>
    <td class='hasFixVersion'>3.2.0</td>
  </tr>
  <tr>
    <td class='key'>
      <a href='https://jira.mongodb.org/browse/JAVA-3546'>JAVA-3546</a>
    </td>
    <td>Duplicate</td>
    <td class=''></td>
  </tr>
  <tr>
    <td class='key'>
      <a href='https://jira.mongodb.org/browse/PYTHON-1671'>PYTHON-1671</a>
    </td>
    <td>Fixed</td>
    <td class='hasFixVersion'>3.9</td>
  </tr>
  <tr>
    <td class='key'>
      <a href='https://jira.mongodb.org/browse/CSHARP-2426'>CSHARP-2426</a>
    </td>
    <td>Fixed</td>
    <td class='hasFixVersion'>2.9.0</td>
  </tr>
  <tr>
    <td class='key'>
      <a href='https://jira.mongodb.org/browse/PERL-1022'>PERL-1022</a>
    </td>
    <td>Fixed</td>
    <td class='hasFixVersion'>2.2.0</td>
  </tr>
  <tr>
    <td class='key'>
      <a href='https://jira.mongodb.org/browse/JAVA-3067'>JAVA-3067</a>
    </td>
    <td>Fixed</td>
    <td class='hasFixVersion'>3.11.0</td>
  </tr>
  <tr>
    <td class='key'>
      <a href='https://jira.mongodb.org/browse/CXX-1682'>CXX-1682</a>
    </td>
    <td>Fixed</td>
    <td class='hasFixVersion'>3.5.0</td>
  </tr>
  <tr>
    <td class='key'>
      <a href='https://jira.mongodb.org/browse/PHPLIB-468'>PHPLIB-468</a>
    </td>
    <td>Fixed</td>
    <td class='hasFixVersion'>1.5.0</td>
  </tr>
  <tr>
    <td class='key'>
      <a href='https://jira.mongodb.org/browse/MOTOR-280'>MOTOR-280</a>
    </td>
    <td>Fixed</td>
    <td class='hasFixVersion'>2.1</td>
  </tr>
  <tr>
    <td class='key'>
      <a href='https://jira.mongodb.org/browse/GODRIVER-621'>GODRIVER-621</a>
    </td>
    <td>Fixed</td>
    <td class='hasFixVersion'>1.1.0</td>
  </tr>
  <tr>
    <td class='key'>
      <a href='https://jira.mongodb.org/browse/CDRIVER-2870'>CDRIVER-2870</a>
    </td>
    <td>Fixed</td>
    <td class='hasFixVersion'>1.15.0</td>
  </tr>
  <tr>
    <td class='key'>
      <a href='https://jira.mongodb.org/browse/RUBY-1574'>RUBY-1574</a>
    </td>
    <td>Fixed</td>
    <td class='hasFixVersion'>2.8.0.rc0, 2.7.1</td>
  </tr>
  <tr>
    <td class='key'>
      <a href='https://jira.mongodb.org/browse/CDRIVER-2908'>CDRIVER-2908</a>
    </td>
    <td>Fixed</td>
    <td class='hasFixVersion'>1.14.0</td>
  </tr>
  <tr>
    <td class='key'>
      <a href='https://jira.mongodb.org/browse/GODRIVER-734'>GODRIVER-734</a>
    </td>
    <td>Won't Fix</td>
    <td class=''></td>
  </tr>
  <tr>
    <td class='key'>
      <a href='https://jira.mongodb.org/browse/JAVA-3128'>JAVA-3128</a>
    </td>
    <td>Done</td>
    <td class=''></td>
  </tr>
  <tr>
    <td class='key'>
      <a href='https://jira.mongodb.org/browse/RUST-107'>RUST-107</a>
    </td>
    <td>Fixed</td>
    <td class='hasFixVersion'>2.5.0</td>
  </tr>
  <tr>
    <td class='key'>
      <a href='https://jira.mongodb.org/browse/NODE-1877'>NODE-1877</a>
    </td>
    <td>Fixed</td>
    <td class='hasFixVersion'>3.2.0</td>
  </tr>
  <tr>
    <td class='key'>
      <a href='https://jira.mongodb.org/browse/RUBY-1733'>RUBY-1733</a>
    </td>
    <td>Fixed</td>
    <td class='hasFixVersion'>2.10.0.rc0</td>
  </tr>
  <tr>
    <td class='key'>
      <a href='https://jira.mongodb.org/browse/SWIFT-574'>SWIFT-574</a>
    </td>
    <td>Won't Do</td>
    <td class=''></td>
  </tr>
</table>]]></customfieldvalue>


                        </customfieldvalues>
                    </customfield>
                                                                                                                        <customfield id="customfield_10860" key="com.pyxis.greenhopper.jira:gh-epic-color">
                        <customfieldname>Epic Colour</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>ghx-label-8</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                            <customfield id="customfield_10858" key="com.pyxis.greenhopper.jira:gh-epic-label">
                        <customfieldname>Epic Name</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>Convenient API for Transactions</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10859" key="com.pyxis.greenhopper.jira:gh-epic-status">
                        <customfieldname>Epic Status</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="10640"><![CDATA[To Do]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        <customfield id="customfield_12550" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>2|htv9s7:</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_11150" key="com.atlassian.jira.plugin.system.customfieldtypes:multiselect">
                        <customfieldname>SERVER fixVersion</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="15143"><![CDATA[4.2]]></customfieldvalue>
    
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                </customfields>
    </item>
</channel>
</rss>