<!-- 
RSS generated by JIRA (9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66) at Thu Feb 08 09:00:32 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>[JAVA-3828] Client Side Operations Timeout</title>
                <link>https://jira.mongodb.org/browse/JAVA-3828</link>
                <project id="10006" key="JAVA">Java Driver</project>
                    <description>&lt;div class=&quot;panel&quot; style=&quot;background-color: #c2d2c2;border-color: #cccccc;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: #cccccc;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;h4&gt;&lt;a name=&quot;Summary&quot;&gt;&lt;/a&gt;Summary&lt;/h4&gt;

&lt;p&gt;Allow users to configure the timeout on operations by using a single timeout setting.&lt;/p&gt;
&lt;h4&gt;&lt;a name=&quot;Motivation&quot;&gt;&lt;/a&gt;Motivation&lt;/h4&gt;

&lt;p&gt;Users have an array of options governing timeouts:&lt;br/&gt;
 Driver timeouts: Server selection timeout, socket write timeout, socket read timeout, socket connect timeout&lt;br/&gt;
 Server timeouts: maxTimeMS, maxAwaitTimeMS, wTimeout.&lt;br/&gt;
 Users are often times unaware of the existence of all these settings and the effect they have on the timeout behavior of the driver and server. Due to this lack of awareness and understanding users often leave these settings at their defaults which is not necessarily what they desire in their timeout behaviors. Furthermore, timeout interaction with retryable writes compounds the situation. The timeout settings do not provide any clarity or reassurance of how long a user will wait for any given write or read.&lt;/p&gt;

&lt;p&gt;We should also determine if the desired behavior should be,&#160;&lt;em&gt;retry as many times as possible within the defined time period.&lt;/em&gt;&lt;/p&gt;
&lt;h4&gt;&lt;a name=&quot;CastofCharacters&quot;&gt;&lt;/a&gt;Cast of Characters&lt;/h4&gt;

&lt;p&gt;Lead: Jeff Yemin&lt;br/&gt;
 Author: Divjot Arora&lt;br/&gt;
 POCs: Java, C, Go, Swift&lt;br/&gt;
 Product Owner:&lt;br/&gt;
 &#160;&lt;/p&gt;
&lt;h4&gt;&lt;a name=&quot;Documentation&quot;&gt;&lt;/a&gt;Documentation&lt;/h4&gt;

&lt;p&gt;&lt;a href=&quot;https://github.com/mongodb/specifications/blob/master/source/client-side-operations-timeout/client-side-operations-timeout.md&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;Scope Document&lt;/a&gt;&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;&lt;a href=&quot;https://jira.mongodb.org/issues/?jql=%22Epic%20Link%22%20%3D%20JAVA-3828%20ORDER%20BY%20status%20DESC&quot; class=&quot;external-link&quot; rel=&quot;nofollow&quot;&gt;JQL search link to all sub tasks&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;&lt;/div&gt;</description>
                <environment></environment>
        <key id="1458193">JAVA-3828</key>
            <summary>Client Side Operations Timeout</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="13453" iconUrl="https://jira.mongodb.org/images/icons/status_generic.gif" description="">Implementing</status>
                    <statusCategory id="4" key="indeterminate" colorName="inprogress"/>
                                    <resolution id="-1">Unresolved</resolution>
                                        <assignee username="ross@mongodb.com">Ross Lawley</assignee>
                                    <reporter username="esha.bhargava@mongodb.com">Esha Bhargava</reporter>
                        <labels>
                    </labels>
                <created>Mon, 31 Aug 2020 20:56:54 +0000</created>
                <updated>Thu, 8 Feb 2024 03:32:09 +0000</updated>
                                                                            <component>CSOT</component>
                    <component>Retryability</component>
                                        <votes>3</votes>
                                    <watches>7</watches>
                                                                                                                <comments>
                            <comment id="4335854" author="dbeng-pm-bot" created="Fri, 4 Feb 2022 14:29:46 +0000"  >&lt;p&gt;If you are not logged in, you can view the tickets in this epic by following &lt;a href=&quot;https://jira.mongodb.org/issues/?jql=%22Epic%20Link%22%20%3D%20JAVA-3828&quot; class=&quot;external-link&quot; rel=&quot;nofollow&quot;&gt;this link&lt;/a&gt;.&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10010">
                    <name>Duplicate</name>
                                                                <inwardlinks description="is duplicated by">
                                        <issuelink>
            <issuekey id="1649048">JAVA-4048</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="503221">JAVA-2795</issuekey>
        </issuelink>
                            </inwardlinks>
                                    </issuelinktype>
                            <issuelinktype id="10620">
                    <name>Issue split</name>
                                                                <inwardlinks description="split from">
                                                        </inwardlinks>
                                    </issuelinktype>
                    </issuelinks>
                <attachments>
                    </attachments>
                <subtasks>
                    </subtasks>
                <customfields>
                                                                                                                                                                                                                                                    <customfield id="customfield_21556" key="com.onresolve.jira.groovy.groovyrunner:scripted-field">
                        <customfieldname>Calendar Time</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>26 weeks, 1 day</customfieldvalue>


                        </customfieldvalues>
                    </customfield>
                                                                                                                        <customfield id="customfield_20965" key="com.atlassian.jira.plugin.system.customfieldtypes:float">
                        <customfieldname>Cost Threshold %</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>200.0</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_20963" key="com.atlassian.jira.plugin.system.customfieldtypes:float">
                        <customfieldname>Cost to Date</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>22.0</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                        <customfield id="customfield_13653" key="com.atlassian.jira.plugin.system.customfieldtypes:textarea">
                        <customfieldname>Detailed Project Statuses</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>&lt;p&gt;Engineer(s): Ross, Slava&lt;/p&gt;

&lt;p&gt;Summary: Allow users to configure the timeout on operations by using a single timeout setting.&lt;/p&gt;

&lt;p&gt;2024-02-02: No change to target date&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;SDAM, CRUD, GridFS and misc. refactor tasks to support timeouts completed&lt;/li&gt;
	&lt;li&gt;Client-side encryption, transactions + convenient API in progress&lt;/li&gt;
	&lt;li&gt;Handshake and Auth in code review&lt;/li&gt;
&lt;/ul&gt;


&lt;hr /&gt;
&lt;p&gt;2024-01-19: Updated target end date to 2024-03-01&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;Working on Auth, Connection checkout and handshake, CSFLE&lt;/li&gt;
	&lt;li&gt;Connection Pool, SDAM, CRUD in review&lt;/li&gt;
	&lt;li&gt;No blockers, updated with revised estimate (additional 10 eng wks)&lt;/li&gt;
&lt;/ul&gt;


&lt;hr /&gt;
&lt;p&gt;2024-01-01: No change to target end date&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;GridFS synchronous in review
	&lt;ul&gt;
		&lt;li&gt;reactive streams in progress&lt;/li&gt;
	&lt;/ul&gt;
	&lt;/li&gt;
	&lt;li&gt;CRUD deprecations in review&lt;/li&gt;
	&lt;li&gt;Command Execution merged&lt;/li&gt;
	&lt;li&gt;Investigating sync adapter implementation
	&lt;ul&gt;
		&lt;li&gt;New test added, currently in review&lt;/li&gt;
	&lt;/ul&gt;
	&lt;/li&gt;
&lt;/ul&gt;


&lt;hr /&gt;
&lt;p&gt;2023-12-08: No change to target end date&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;Retryable-reads and retryable-writes updates to support CSOT currently in review&lt;/li&gt;
	&lt;li&gt;Command Execution updates to support CSOT in progress&lt;/li&gt;
	&lt;li&gt;Up next: CRUD and SDAM&lt;/li&gt;
&lt;/ul&gt;


&lt;hr /&gt;
&lt;p&gt;2023-11-22:&#160;&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;In progress:
	&lt;ul&gt;
		&lt;li&gt;Update existing timeouts according to the retryable-reads and retryable-writes specification to support CSOT&lt;/li&gt;
		&lt;li&gt;Cursor handling and timeoutModes now in review&lt;/li&gt;
	&lt;/ul&gt;
	&lt;/li&gt;
&lt;/ul&gt;


&lt;hr /&gt;
&lt;p&gt;2023-11-10:&#160;&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;Batch cursor refactor completed&lt;/li&gt;
	&lt;li&gt;Maxim has handed off his part of CSOT to Slava in advance of his upcoming leave&lt;/li&gt;
	&lt;li&gt;In progress:
	&lt;ul&gt;
		&lt;li&gt;Update existing timeouts according to the retryable-reads and retryable-writes specification to support CSOT&lt;/li&gt;
	&lt;/ul&gt;
	&lt;/li&gt;
	&lt;li&gt;Corrected the estimated final cost to 23 weeks&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;
	&lt;ul&gt;
		&lt;li&gt;No change to the target end date here, est. final cost should have been updated to 23 when we got the revised estimate&lt;/li&gt;
	&lt;/ul&gt;
	&lt;/li&gt;
&lt;/ul&gt;


&lt;hr /&gt;
&lt;p&gt;2023-10-30: Updated target end date to 2024-01-19&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;Refactoring to obtain connectTimeoutMS from TimeoutContext rather than setting directly&lt;/li&gt;
	&lt;li&gt;Batch cursor refactor in progress to simplify future CSOT work&lt;/li&gt;
&lt;/ul&gt;


&lt;hr /&gt;
&lt;p&gt;2023-10-13: Updated target end date to 2023-12-15&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;Team has broken down remaining work and updated estimate&lt;/li&gt;
	&lt;li&gt;Async and sync command cursors have been brought much more into line with lots of code reuse
	&lt;ul&gt;
		&lt;li&gt;Brings a single batch cursor to sync also bringing async / sync into line&lt;/li&gt;
	&lt;/ul&gt;
	&lt;/li&gt;
	&lt;li&gt;Server selection is in progress using the TimeoutContext now available in OperationContext&lt;/li&gt;
&lt;/ul&gt;


&lt;hr /&gt;
&lt;p&gt;2023-09-29: Updated target end date to 2023-12-01&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;TimeoutMS is in the settings and used in operations calculating maxTimeMS&lt;/li&gt;
	&lt;li&gt;The refactor to propagate an OperationContext down through the operation layer into the connection layer was merged earlier this week&lt;/li&gt;
	&lt;li&gt;Server selection is in progress using the TimeoutContext now available in OperationContext&lt;/li&gt;
	&lt;li&gt;The end date is based on a rough estimate atm and will be revised once the team has more confidence in the estimates&lt;/li&gt;
&lt;/ul&gt;


&lt;hr /&gt;
&lt;p&gt;2023-09-15: Set target date to 2023-10-13&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;Prerequisite refactors necessary to implement CSOT have been completed&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;
	&lt;ul&gt;
		&lt;li&gt;Still need to decide between using timepoints vs deadlines (decision deferred for now)&lt;/li&gt;
	&lt;/ul&gt;
	&lt;/li&gt;
	&lt;li&gt;ServerSelection and CRUD in progress&lt;/li&gt;
	&lt;li&gt;Pushed planned end date out as this will not be done by September 22nd&lt;/li&gt;
&lt;/ul&gt;


&lt;hr /&gt;
&lt;p&gt;Engineer(s): Ross, Maxim&lt;/p&gt;

&lt;p&gt;Summary: Allow users to configure the timeout on operations by using a single timeout setting.&lt;/p&gt;

&lt;p&gt;2023-09-01: Set target date to 2023-09-22&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;Refactor of OperationHelper &amp;amp; CommandOperationHelper completed&lt;/li&gt;
	&lt;li&gt;Cursor refactor and representing timeouts internally as deadlines in progress&lt;/li&gt;
	&lt;li&gt;Currently Ross is the only one working on this and Maxim will begin upon his return from PTO&lt;/li&gt;
&lt;/ul&gt;


&lt;hr /&gt;
&lt;p&gt;Engineer(s): Ross&lt;/p&gt;

&lt;p&gt;Summary: Allow users to configure the timeout on operations by using a single timeout setting.&lt;/p&gt;

&lt;p&gt;Cost in Eng Weeks: 8 Original | 8 To Date | 10 Est Final&lt;/p&gt;

&lt;p&gt;2021-06-15:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;On pause till Kafka 5.0 support is complete&lt;/li&gt;
&lt;/ul&gt;


&lt;hr /&gt;
&lt;p&gt;2021-06-02: Updated target end date to 2021-06-25&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;CRUD changes in review. First round of change requests up&lt;/li&gt;
	&lt;li&gt;Currently working on cursors, timeouts and gridfs&lt;/li&gt;
	&lt;li&gt;Ross is mostly OOO this week since he is moving&lt;/li&gt;
&lt;/ul&gt;


&lt;hr /&gt;
&lt;p&gt;2021-05-18: Maintaining target end date of 2021-05-28&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;CRUD changes in review&lt;/li&gt;
	&lt;li&gt;Currently working on cursors, timeouts and gridfs&lt;/li&gt;
	&lt;li&gt;Ross also worked on answering some user questions on Spark&lt;/li&gt;
&lt;/ul&gt;


&lt;hr /&gt;
&lt;p&gt;2021-05-04: Updated target end date to 2021-05-28&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;Continuing work on the integration with operation layer&lt;/li&gt;
	&lt;li&gt;Close to wrapping up the CRUD integration&lt;/li&gt;
	&lt;li&gt;Server selection up next&lt;/li&gt;
	&lt;li&gt;Ross mentioned that the impl.&#160;touches a lot of code and the code review process won&apos;t be quick so we&apos;ve updated the end date accordingly&lt;/li&gt;
&lt;/ul&gt;


&lt;hr /&gt;
&lt;p&gt;2021-04-20: Maintaining target end date of 2021-05-12&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;No new updates since last time. Still working on the operations layer and CRUD integration&lt;/li&gt;
	&lt;li&gt;Ross was OOO last to last week and was Skunkking last week&lt;/li&gt;
	&lt;li&gt;He is also working on 2 HELP tickets atm&lt;/li&gt;
&lt;/ul&gt;


&lt;hr /&gt;
&lt;p&gt;2021-04-06: Maintaining target end date of 2021-05-12&lt;/p&gt;
&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;Currently working on updating existing timeouts according to the crud spec changes&lt;/li&gt;
	&lt;li&gt;Ross is OOO this week&lt;/li&gt;
&lt;/ul&gt;


&lt;hr /&gt;
&lt;p&gt;2021-03-23: Setting initial target end date to 2021-05-12&lt;/p&gt;
&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;Adding timeoutMS to settings in code review&lt;/li&gt;
	&lt;li&gt;Currently working on updating existing timeouts according to the crud spec changes&lt;/li&gt;
&lt;/ul&gt;


&lt;hr /&gt;</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_14266" key="com.atlassian.jira.plugin.system.customfieldtypes:textarea">
                        <customfieldname>Documentation Changes Summary</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>1.  What would you like to communicate to the user about this feature?&lt;br/&gt;
2.  Would you like the user to see examples of the syntax and/or executable code and its output?&lt;br/&gt;
3.  Which versions of the driver/connector does this apply to?&lt;br/&gt;
</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_14262" key="com.atlassian.jira.plugin.system.customfieldtypes:datepicker">
                        <customfieldname>End date</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>Fri, 1 Mar 2024 00:00:00 +0000</customfieldvalue>

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

                        </customfieldvalues>
                    </customfield>
                                                                                            <customfield id="customfield_10858" key="com.pyxis.greenhopper.jira:gh-epic-label">
                        <customfieldname>Epic Name</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>Client Side Operations Timeout</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_20964" key="com.atlassian.jira.plugin.system.customfieldtypes:float">
                        <customfieldname>Final Cost Estimate</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>30.0</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                <customfield id="customfield_21553" key="com.atlassian.jira.plugin.system.customfieldtypes:labels">
                        <customfieldname>Quarter</customfieldname>
                        <customfieldvalues>
                                        <label>FY24Q3</label>
    
                        </customfieldvalues>
                    </customfield>
                                                                                            <customfield id="customfield_12550" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>2|hr3mmh:0400000942rf1m</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_10856" key="com.atlassian.jira.plugin.system.customfieldtypes:float">
                        <customfieldname>Scope Cost Estimate</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>9.0</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                    <customfield id="customfield_14261" key="com.atlassian.jira.plugin.system.customfieldtypes:datepicker">
                        <customfieldname>Start date</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>Thu, 31 Aug 2023 00:00:00 +0000</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        <customfield id="customfield_21457" key="com.atlassian.jira.plugin.system.customfieldtypes:textarea">
                        <customfieldname>Upstream Changes Summary</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>&lt;p&gt;DRIVERS-555:&lt;br/&gt;
NA&lt;/p&gt;</customfieldvalue>

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