<!-- 
RSS generated by JIRA (9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66) at Thu Feb 08 08:25: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>[DRIVERS-2218] Clarify intended bounding of implicit session allocation and rework flaky prose test</title>
                <link>https://jira.mongodb.org/browse/DRIVERS-2218</link>
                <project id="10980" key="DRIVERS">Drivers</project>
                    <description>&lt;p&gt;The prose test added in &lt;a href=&quot;https://jira.mongodb.org/browse/DRIVERS-1030&quot; title=&quot;Drivers should check out an implicit session only after checking out a connection&quot; class=&quot;issue-link&quot; data-issue-key=&quot;DRIVERS-1030&quot;&gt;&lt;del&gt;DRIVERS-1030&lt;/del&gt;&lt;/a&gt; is flakey:&lt;/p&gt;
&lt;p/&gt;
&lt;div id=&quot;syntaxplugin&quot; class=&quot;syntaxplugin&quot; style=&quot;border: 1px dashed #bbb; border-radius: 5px !important; overflow: auto; max-height: 30em;&quot;&gt;
&lt;table cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; border=&quot;0&quot; width=&quot;100%&quot; style=&quot;font-size: 1em; line-height: 1.4em !important; font-weight: normal; font-style: normal; color: black;&quot;&gt;
		&lt;tbody &gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;  margin-top: 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;13. To confirm that implicit sessions only allocate their server session after a successful connection checkout&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   width: auto; padding: 0;&quot;&gt;&amp;nbsp;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;    * Create a MongoClient with the following options: ``maxPoolSize=1`` and ``retryWrites=true``&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;    * Attach a command started listener that collects each command&apos;s lsid&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;    * Initiate the following concurrent operations&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;      * insertOne&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;      * deleteOne&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;      * updateOne&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;      * bulkWrite ``[ { updateOne } ]``&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;      * findOneAndDelete&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;      * findOneAndUpdate&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;      * findOneAndReplace&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;      * find&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;    * Wait for all operations to complete&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   margin-bottom: 10px;  width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;    * Assert that all commands contain the same lsid&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
			&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p/&gt;

&lt;p&gt;The issue is that the session is checked back into the pool after the connection is checked back in. So there&apos;s always the risk that this test uses &amp;gt;1 server session. The only way to guarantee this test is to also  optimize implicit session &lt;em&gt;deallocation&lt;/em&gt; as well. However, that is potentially trickier since we would need to ensure that retryable reads/writes, cursors, and other pinned operations don&apos;t deallocate the session too early.&lt;/p&gt;

&lt;h3&gt;&lt;a name=&quot;AcceptanceCriteria&quot;&gt;&lt;/a&gt;Acceptance Criteria&lt;/h3&gt;
&lt;ul&gt;
	&lt;li&gt;Change server session pooling to be required by the specification - Some quick analysis implies this would be an easy and no-op change
	&lt;ul&gt;
		&lt;li&gt;If there&apos;s contention on this change file a follow up DRIVERS ticket to address this, and make the limiting of session allocation optional for DRIVERS without a session pool&lt;/li&gt;
	&lt;/ul&gt;
	&lt;/li&gt;
	&lt;li&gt;Explicitly define that sessions should be acquired at connection checkout and SHOULD NOT (but &lt;em&gt;may&lt;/em&gt; in &lt;em&gt;extremely&lt;/em&gt; rare circumstances) be released before checkIn&lt;/li&gt;
	&lt;li&gt;Explicitly state that sessions MUST be released and reused to meet the goal of reducing session allocation to be within the bounds of [1, numConcurrentOperationCount)&lt;/li&gt;
	&lt;li&gt;Update test 13 to account for the variability in implementation details (or split out the following into a further test case)
	&lt;ul&gt;
		&lt;li&gt;Drivers MAY assert that exactly one session is used for all the concurrent operations listed in the test, however this is racey if the session isn&apos;t released before checkIn (which SHOULD NOT be attempted)&lt;/li&gt;
		&lt;li&gt;Drivers SHOULD assert that after repeated runs they are able to achieve the use of exactly one session, this will statistically prove we&apos;ve reduced the allocation amount&lt;/li&gt;
		&lt;li&gt;Drivers MUST assert that the number of allocated sessions never exceeds the number of concurrent operations executing&lt;/li&gt;
	&lt;/ul&gt;
	&lt;/li&gt;
&lt;/ul&gt;
</description>
                <environment></environment>
        <key id="1990031">DRIVERS-2218</key>
            <summary>Clarify intended bounding of implicit session allocation and rework flaky prose test</summary>
                <type id="14901" iconUrl="https://jira.mongodb.org/secure/viewavatar?size=xsmall&amp;avatarId=14700&amp;avatarType=issuetype">Spec Change</type>
                                            <priority id="10300" iconUrl="https://jira.mongodb.org/images/icons/priorities/medium.svg">Unknown</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="neal.beeken@mongodb.com">Neal Beeken</assignee>
                                    <reporter username="shane.harvey@mongodb.com">Shane Harvey</reporter>
                        <labels>
                            <label>prose-test</label>
                    </labels>
                <created>Fri, 25 Feb 2022 00:53:37 +0000</created>
                <updated>Mon, 25 Jul 2022 22:47:56 +0000</updated>
                                                                <component>Sessions</component>
                                        <votes>0</votes>
                                    <watches>7</watches>
                                                                                                                <comments>
                            <comment id="4432416" author="xgen-internal-githook" created="Thu, 24 Mar 2022 14:48:31 +0000"  >&lt;p&gt;Author:&lt;/p&gt;
{&apos;name&apos;: &apos;Neal Beeken&apos;, &apos;email&apos;: &apos;neal.beeken@mongodb.com&apos;, &apos;username&apos;: &apos;nbbeeken&apos;}
&lt;p&gt;Message: &lt;a href=&quot;https://jira.mongodb.org/browse/DRIVERS-2218&quot; title=&quot;Clarify intended bounding of implicit session allocation and rework flaky prose test&quot; class=&quot;issue-link&quot; data-issue-key=&quot;DRIVERS-2218&quot;&gt;DRIVERS-2218&lt;/a&gt;: Clarify intended bounding of implicit session allocation and rework flaky prose test (#1157)&lt;br/&gt;
Branch: master&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/specifications/commit/4a9defdbb1952f794042673360b7b3d0b568e7c3&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/specifications/commit/4a9defdbb1952f794042673360b7b3d0b568e7c3&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="4388045" author="neal.beeken" created="Wed, 2 Mar 2022 22:35:49 +0000"  >&lt;p&gt;I still think there&apos;s no issue and test value with the prose test as it is the test does confirm what is asked: &quot;This limits the number of implicit sessions to never exceed the maximum connection pool size.&quot;&lt;br/&gt;
 (I agree, this sentence could use more context, it&apos;s true this sentence was never fully correct because as part of the original ticket/ask there was to be no change to cursor-session lifetime and explicit sessions)&lt;/p&gt;

&lt;p&gt;If we want to allow drivers to adopt the current requirement of ensuring the order of operations is always: checkout, acquire (operation), release, checkin, then that is what asserting the same LSID for every operation in a pool size of 1 should accomplish. Although there is a gap, where it says you should run a find, but doesn&apos;t clarify that it should be a small query. I haven&apos;t seen much precedent for that in other tests, but nonetheless should be called out.&#160;&lt;/p&gt;

&lt;p&gt;To Daria&apos;s summary (thanks for that!) I think #5 is what we really want to get at, we need to at least assert that drivers have changed their session acquire logic to permit operations to run instead of running into a TooManyLogicalSessions error before proceeding. Unless you are suggesting we should revisit the spec to explicitly disallow attempting to release the session before checkin completes? We could consider that to make this change more uniform. (In reference to Shane&apos;s statement &quot;I would advise drivers&#160;&lt;em&gt;not&lt;/em&gt;&#160;try to optimize implicit session deallocation&quot;)&lt;/p&gt;</comment>
                            <comment id="4387305" author="shane.harvey" created="Wed, 2 Mar 2022 18:59:30 +0000"  >&lt;p&gt;Sure we can do that in this ticket as long as we also fix the issue in the prose test.&lt;/p&gt;</comment>
                            <comment id="4386908" author="JIRAUSER1259201" created="Wed, 2 Mar 2022 17:06:38 +0000"  >&lt;p&gt;&lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=shane.harvey&quot; class=&quot;user-hover&quot; rel=&quot;shane.harvey&quot;&gt;shane.harvey&lt;/a&gt; All the more reason to update the language. Would you be opposed to repurposing this ticket for that update to the language? We can then send it to leads triage since we probably want the clarification sooner rather than later, given the teams are in the process of implementing this.&lt;/p&gt;</comment>
                            <comment id="4385089" author="shane.harvey" created="Tue, 1 Mar 2022 23:01:18 +0000"  >&lt;p&gt;Yeah that&apos;s true. It&apos;s also worth mentioning that sentence is incorrect regardless since there are other factors that will create more than maxPoolSize sessions, multi-batch cursors for example. Even ignoring cursors, clients that run operations on multiple nodes (eg sharded clusters or non-primary read preferences) can create maxPoolSize * # hosts connections.&lt;/p&gt;</comment>
                            <comment id="4384860" author="shane.harvey" created="Tue, 1 Mar 2022 21:40:13 +0000"  >&lt;p&gt;Great summary &lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=daria.pardue&quot; class=&quot;user-hover&quot; rel=&quot;daria.pardue&quot;&gt;daria.pardue&lt;/a&gt;. However, I would advise drivers &lt;em&gt;not&lt;/em&gt; try to optimize implicit session deallocation without a benchmark showing that such behavior is required. I believe it would be too risky given the complexity around retryable reads/writes, cursors, and other pinned operations. My understanding is that simply delaying the allocation provides nearly all of the benefit we need to solve the original issue in &lt;a href=&quot;https://jira.mongodb.org/browse/DRIVERS-1030&quot; title=&quot;Drivers should check out an implicit session only after checking out a connection&quot; class=&quot;issue-link&quot; data-issue-key=&quot;DRIVERS-1030&quot;&gt;&lt;del&gt;DRIVERS-1030&lt;/del&gt;&lt;/a&gt; and the test we added is just a bit too strict. I would like to see confirmation via a performance test or repro for &lt;a href=&quot;https://jira.mongodb.org/browse/DRIVERS-1030&quot; title=&quot;Drivers should check out an implicit session only after checking out a connection&quot; class=&quot;issue-link&quot; data-issue-key=&quot;DRIVERS-1030&quot;&gt;&lt;del&gt;DRIVERS-1030&lt;/del&gt;&lt;/a&gt; with an updated driver to confirm this belief before we require (or even suggest) optimizing implicit session deallocation.&lt;/p&gt;</comment>
                            <comment id="4382112" author="shane.harvey" created="Mon, 28 Feb 2022 22:33:04 +0000"  >&lt;p&gt;One solution for this might be to acknowledge the race in the test description and update the test to be more like:&lt;/p&gt;
&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;Run 100 concurrent operations (a mix of the different driver helpers)&lt;/li&gt;
	&lt;li&gt;Wait for the operations to complete&lt;/li&gt;
	&lt;li&gt;Assert no more than X different server sessions were used. 5 could be a suitable value for X but it can vary by driver. It should be chosen to accommodate the race described above.&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Another solution might be to repeat the existing test X times until the assertion that &quot;all commands contain the same lsid&quot; holds true.&lt;/p&gt;</comment>
                            <comment id="4381989" author="shane.harvey" created="Mon, 28 Feb 2022 22:01:22 +0000"  >&lt;p&gt;The test needs to be concurrent because &lt;a href=&quot;https://jira.mongodb.org/browse/DRIVERS-1030&quot; title=&quot;Drivers should check out an implicit session only after checking out a connection&quot; class=&quot;issue-link&quot; data-issue-key=&quot;DRIVERS-1030&quot;&gt;&lt;del&gt;DRIVERS-1030&lt;/del&gt;&lt;/a&gt; helps solve the problem of too many sessions being created for concurrent operations. As for the race, consider:&lt;/p&gt;
&lt;ol&gt;
	&lt;li&gt;Thread A runs find(), checks out a connection, checks out the first server session, runs the command, and checks the connection back into the pool, and then Thread A gets suspended.&lt;/li&gt;
	&lt;li&gt;Thread B runs insertOne(), checks out the existing pooled connection, checks out a second server session, completes the insert, and checks the connection and session back into the pool.&lt;/li&gt;
	&lt;li&gt;Thread A resumes, sees the cursor.id is 0 and checks the session back into the pool.&lt;/li&gt;
	&lt;li&gt;2 server sessions we&apos;re used, not 1 as the test expects.&lt;/li&gt;
&lt;/ol&gt;
</comment>
                            <comment id="4381975" author="rstam" created="Mon, 28 Feb 2022 21:56:09 +0000"  >&lt;p&gt;Why does this test have to be &lt;b&gt;concurrent&lt;/b&gt;? Wouldn&apos;t testing the operations &lt;b&gt;sequentially&lt;/b&gt; (which is what I first assumed it would be doing until I read more carefully) be sufficient to test that all operations use the same `lsid`?&lt;/p&gt;</comment>
                            <comment id="4381966" author="rstam" created="Mon, 28 Feb 2022 21:53:44 +0000"  >&lt;p&gt;I just realized that the test says the operations should be &lt;b&gt;concurrent&lt;/b&gt;.&lt;/p&gt;

&lt;p&gt;Are you referring to a concurrency race condition?&lt;/p&gt;</comment>
                            <comment id="4381955" author="rstam" created="Mon, 28 Feb 2022 21:49:24 +0000"  >&lt;p&gt;&amp;gt;&#160;The issue is that the session is checked back into the pool after the connection is checked back in&lt;/p&gt;

&lt;p&gt;I don&apos;t understand the issue. Yes the session might be checked back in after the connection, but as long as it is checked in &lt;b&gt;before&lt;/b&gt; the next implicit session is created we should be fine.&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10620">
                    <name>Issue split</name>
                                            <outwardlinks description="split to">
                                        <issuelink>
            <issuekey id="2000706">JAVA-4531</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="2000702">CDRIVER-4311</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="2000704">CSHARP-4097</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="2000703">CXX-2465</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="2000705">GODRIVER-2332</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="2000708">MOTOR-909</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="2000707">NODE-4082</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="2000710">PHPLIB-811</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="2000709">PYTHON-3169</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="2000711">RUBY-2924</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="2000712">RUST-1218</issuekey>
        </issuelink>
                            </outwardlinks>
                                                        </issuelinktype>
                            <issuelinktype id="10520">
                    <name>Problem/Incident</name>
                                            <outwardlinks description="causes">
                                        <issuelink>
            <issuekey id="2098923">DRIVERS-2398</issuekey>
        </issuelink>
                            </outwardlinks>
                                                        </issuelinktype>
                            <issuelinktype id="10012">
                    <name>Related</name>
                                            <outwardlinks description="related to">
                                        <issuelink>
            <issuekey id="1307488">DRIVERS-1030</issuekey>
        </issuelink>
                            </outwardlinks>
                                                        </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_17052" key="com.atlassian.jira.plugin.system.customfieldtypes:textarea">
                        <customfieldname>Downstream Changes Summary</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>&lt;p&gt;Review the updated clarification for spec test 13 and ensure your driver is aligned with the test&apos;s assertion requirements.&#160;&lt;/p&gt;</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10951" key="com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons">
                        <customfieldname>Driver Changes</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="10748"><![CDATA[Needed]]></customfieldvalue>

                        </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/CDRIVER-4311'>CDRIVER-4311</a>
    </td>
    <td>Works as Designed</td>
    <td class=''></td>
  </tr>
  <tr>
    <td class='key'>
      <a href='https://jira.mongodb.org/browse/CXX-2465'>CXX-2465</a>
    </td>
    <td>Works as Designed</td>
    <td class=''></td>
  </tr>
  <tr>
    <td class='key'>
      <a href='https://jira.mongodb.org/browse/CSHARP-4097'>CSHARP-4097</a>
    </td>
    <td>Done</td>
    <td class='hasFixVersion'>2.16.0</td>
  </tr>
  <tr>
    <td class='key'>
      <a href='https://jira.mongodb.org/browse/GODRIVER-2332'>GODRIVER-2332</a>
    </td>
    <td>Duplicate</td>
    <td class=''></td>
  </tr>
  <tr>
    <td class='key'>
      <a href='https://jira.mongodb.org/browse/JAVA-4531'>JAVA-4531</a>
    </td>
    <td>Fixed</td>
    <td class='hasFixVersion'>4.6.0</td>
  </tr>
  <tr>
    <td class='key'>
      <a href='https://jira.mongodb.org/browse/NODE-4082'>NODE-4082</a>
    </td>
    <td>Done</td>
    <td class='hasFixVersion'>4.6.0</td>
  </tr>
  <tr>
    <td class='key'>
      <a href='https://jira.mongodb.org/browse/MOTOR-909'>MOTOR-909</a>
    </td>
    <td>Duplicate</td>
    <td class=''></td>
  </tr>
  <tr>
    <td class='key'>
      <a href='https://jira.mongodb.org/browse/PYTHON-3169'>PYTHON-3169</a>
    </td>
    <td>Duplicate</td>
    <td class=''></td>
  </tr>
  <tr>
    <td class='key'>
      <a href='https://jira.mongodb.org/browse/PHPLIB-811'>PHPLIB-811</a>
    </td>
    <td>Won't Do</td>
    <td class=''></td>
  </tr>
  <tr>
    <td class='key'>
      <a href='https://jira.mongodb.org/browse/RUBY-2924'>RUBY-2924</a>
    </td>
    <td>Fixed</td>
    <td class='hasFixVersion'>2.18.0</td>
  </tr>
  <tr>
    <td class='key'>
      <a href='https://jira.mongodb.org/browse/RUST-1218'>RUST-1218</a>
    </td>
    <td>Duplicate</td>
    <td class=''></td>
  </tr>
  <tr>
    <td class='key'>
      <a href='https://jira.mongodb.org/browse/SWIFT-1516'>SWIFT-1516</a>
    </td>
    <td>Won't Fix</td>
    <td class=''></td>
  </tr>
</table>]]></customfieldvalue>


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