<!-- 
RSS generated by JIRA (9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66) at Wed Feb 07 21:19:58 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>[CDRIVER-4114] Reduce contention on topology description</title>
                <link>https://jira.mongodb.org/browse/CDRIVER-4114</link>
                <project id="10030" key="CDRIVER">C Driver</project>
                    <description>&lt;p&gt;The `mongoc_topology_t` contains a topology description that is updated to reflect the known status of the database topology. For each server, a thread will be spawned to monitor that server&apos;s status. These threads all contend to keep the topology description up-to-date. Additionally, the SRV monitor thread can also update the topology concurrently.&lt;/p&gt;

&lt;p&gt;All operations that access the topology are guarded by a single &lt;tt&gt;mongoc_topology_t::mutex&lt;/tt&gt;, so a single thread locking this mutex can bring every client thread to a halt while it performs necessary updates.&lt;/p&gt;</description>
                <environment></environment>
        <key id="1839212">CDRIVER-4114</key>
            <summary>Reduce contention on topology description</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="9">Done</resolution>
                                        <assignee username="colby.pike@mongodb.com">Colby Pike</assignee>
                                    <reporter username="colby.pike@mongodb.com">Colby Pike</reporter>
                        <labels>
                    </labels>
                <created>Tue, 3 Aug 2021 00:32:19 +0000</created>
                <updated>Wed, 17 Nov 2021 15:53:40 +0000</updated>
                            <resolved>Wed, 10 Nov 2021 18:15:51 +0000</resolved>
                                                    <fixVersion>1.20.0</fixVersion>
                                                        <votes>0</votes>
                                    <watches>1</watches>
                                                                                                                <comments>
                            <comment id="4181080" author="JIRAUSER1260880" created="Wed, 10 Nov 2021 18:15:51 +0000"  >&lt;p&gt;Initial changes have been merged and are promising. Some improvements to be made for baseline performance beyond just thread contention. Will submit more changes soon.&lt;/p&gt;</comment>
                            <comment id="4180963" author="xgen-internal-githook" created="Wed, 10 Nov 2021 17:40:46 +0000"  >&lt;p&gt;Author:&lt;/p&gt;
{&apos;name&apos;: &apos;vector-of-bool&apos;, &apos;email&apos;: &apos;vectorofbool@gmail.com&apos;, &apos;username&apos;: &apos;vector-of-bool&apos;}
&lt;p&gt;Message: &lt;a href=&quot;https://jira.mongodb.org/browse/CDRIVER-4114&quot; title=&quot;Reduce contention on topology description&quot; class=&quot;issue-link&quot; data-issue-key=&quot;CDRIVER-4114&quot;&gt;&lt;del&gt;CDRIVER-4114&lt;/del&gt;&lt;/a&gt;: Reduce contention on the topology description (#854)&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;Additional atomic operations&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;64bit and pointer atomics for MSVC&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;Revive some old exported symbols, clean up some unused code, and mark unreachable code.&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;No 64bit atomics for x86 GCC either. Fix several warnings&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;Token balance in case of empty macro expansion&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;Fix extra semicolon, plus macOS posix detection&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;Fix check on 32-bit, and missing &apos;default&apos; case.&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Closes: &lt;a href=&quot;https://jira.mongodb.org/browse/CDRIVER-4124&quot; title=&quot;Clean Up Internal Atomic APIs&quot; class=&quot;issue-link&quot; data-issue-key=&quot;CDRIVER-4124&quot;&gt;&lt;del&gt;CDRIVER-4124&lt;/del&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;Missing ptr_fetch&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;CXX-4113: Thread-safe pool for server session objects&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;Remove unused node pointers on server sessions&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;Track pool size, and don&apos;t loop while holding the lock to clear&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;Closes: &lt;a href=&quot;https://jira.mongodb.org/browse/CDRIVER-4124&quot; title=&quot;Clean Up Internal Atomic APIs&quot; class=&quot;issue-link&quot; data-issue-key=&quot;CDRIVER-4124&quot;&gt;&lt;del&gt;CDRIVER-4124&lt;/del&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;Wrong arg names in i64 compare_exchange emul&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;Missing dist listing for ts-pool files&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;Cleanup and some redesign of pool API&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;Declare special pool for server sessions&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;Fix pruning pool not leaking the 10,001st session&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;Use typed pool fns&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;Visiting pool items, and checking that items are returned to the pool&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;Fix unacknowledged sessions tests&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;Additional atomic operations&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;A simple shared pointer construct&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;More atomics&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;Fix atomic intrinsics on MSVC&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;Topology description is a shared ptr&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;Give sptr._aux a type to aid in debugging. And no spinlocks!&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;Fix race on updating server rtt&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;Assertion macro for asserting pointers inline&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;Refactoring many locations to copy the shared topology description&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;Undo accidental local dev changes&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;Give the topology scanner its own mutex for the handshake_cmd&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;This requires a refactor of how the handshake_cmd is passed around.&lt;br/&gt;
Instead of the scanner returning a pointer to contended data and expecting&lt;br/&gt;
the caller to bring their own synchronization, the scanner duplicates the&lt;br/&gt;
handshake into an output parameter and performs its own synchronization&lt;br/&gt;
internally.&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;Instead of using a mutex to guard monitor thread startup, use an atomic compare-exchange.&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;Pull from new-atomics&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;Fix: &apos;release&apos; is not valid for GCC compare-exchange&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;Lots of &quot;const&quot; weeds out threading a mutation issues&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;Fix const-init from non-constant-expr&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;Use BSON_OS_UNIX&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;fetch() is `const`, and no `release` in cmpxch&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;Fix missing &apos;inline&apos;s&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;Mention the LIFO nature of the thread-pool, and the non-conformance of the &apos;push&apos; operation&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;auditing the pool is compile-time optional&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;A shared-pointer abstraction&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;Make mongoc-shared a private API&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;typo&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;init the shared_ptr_mtx in a Windows-compatible way.&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;Update names to reflect C11 names, strong/weak cmpxchg&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;Fix const-to-mutable bind in MSVC&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;PR and impl updates for shared_ptr:&lt;/li&gt;
&lt;/ul&gt;


&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;Rename to more closely match stdlib equivs&lt;/li&gt;
	&lt;li&gt;Delete macros that are unneeded&lt;/li&gt;
	&lt;li&gt;Tweak impl of atomic_store to be more efficient&lt;/li&gt;
	&lt;li&gt;Update doc comments&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;Address various PR comments&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;More tests for atomic operations&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;Restore bson_memory_barrier with a deprecation notice&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;Spelling is hard&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;No &apos;consume&apos; memorder for atomic exchange&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;Fix detection of 64bit, plus unused intrin value&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;Missing i64_fetch and i64_fetch_sub on 32-bit playforms&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;Fix spinlock logic inversion for i64 emul&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;Remove config checks for atomics&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;Just use `int`&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;Thread-safe CSE startup without a mutex&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;Set march=i686 for 32bit builds&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;Update src/libmongoc/src/mongoc/mongoc-shared.c&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Co-authored-by: Ezra Chung &amp;lt;88335979+eramongodb@users.noreply.github.com&amp;gt;&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;PR comments, use bson_assert_param, protect from self-assignment&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;CheckAtomics.cmake is gone&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;PR comments, and an assertion fix&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;Update doc comments from PR comments&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;Test aliasing to subobject, and fix C99 usage&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;Remove C99 usage, unneeded assertions, and warnings&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;Fix lost topology update with mongoc_topology_reconcile&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;Refresh td ptr after making changes in a test&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;Fix deadlocks in topology shutdown&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;Guard against a zero-allocated mongoc_set&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;Fix invalid test result JSON generation&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;Fix warnings from MSVC. Fix unexported symbols used on 32bit DLL&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;That is not &apos;const&apos;&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;Remove C++ comments&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;Fix leak from misuse of bson_copy_to&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;Simplify scanner handshake setup&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;Fix leak of shared pointer when committing topo updates&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;Fix unsafe use-after free in test case&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;Missing cast-from-const in int64 atomic emul&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;Remove unneeded NULL checks. Fix doubled events when racing to invalidate servers&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;Use generation to validate server description&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;Fix attempt to double-reconnect&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;Update _mongoc_cluster_create_server_stream in conditional code segments&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;Conditionally set error in _cluster_fetch_sream_single&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;Refresh topology after requesting a scan&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;Fix race with the scanner to finish the initial handshake&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;Fix leak of topology descr reference&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;Fix leaked alloc of bson_t in _stream_run_hello&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;More leaks with dup_handshake_cmd&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;BSON initializer that is safe to destroy or to leak.&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;Undo incorrect changes for bson memcheck code&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;Less macro magic&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;Propagate the random seed when cloning a topology description&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;Prevent recursive topology modifications, which deadlock&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;Update comments and cleanup.&lt;/li&gt;
&lt;/ul&gt;


&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;Remove mentions of topology-&amp;gt;mutex.&lt;/li&gt;
	&lt;li&gt;Update comments that refer to locking.&lt;/li&gt;
	&lt;li&gt;Remove some redundant APIs.&lt;/li&gt;
	&lt;li&gt;Move some APIs to have internal linkage.&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;Guard against a deadlock with an assertion&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;Revert &quot;Guard against a deadlock with an assertion&quot;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;This reverts commit 4b9892ed2196a2f8274885a9f5b844685dbeb814.&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;Update for PR comments. Cleanup, const, and typos&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;Fix use-after free of server description in test. Remove unneeded locking&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;Fix decl-after-stmt&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;Fix shadowed name&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;Pin docutils version when installing sphinx&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;Separate mutex for srv polling, document more usage of tpld_modification_mtx&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;Suppress unused-var warning&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;ThreadSanitizer calls me out for wrong atomics.&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;Fix race in on counters in counter test&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;Release the topology description outside of the mutex&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;Thread-safe direct topology modification for testing purposes&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;Fix unnecessary race on getting topology event counts&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;Thread-safety in tests around topology reconciliation&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;Fix regression in counters test&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;Switch sign in counters tests&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;More thread safety in tests around topology descriptions&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;Spell&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;Update to comments, docs, and fixes from PR&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;Score scanner_state as an int, so we can perform well-defined atomic ops on it&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;temporarily disable silence in &apos;run auth tests&apos;&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;Fix missing close quote in evergreen test script&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;Temporarily enable logging for &apos;run auth tests&apos;&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;Give generation map const-correctness&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;The generation map is owned by its server description, so the pointer&lt;br/&gt;
member should have deep-const semantics. This uncovers new potential&lt;br/&gt;
correctness issues, which are fixed now.&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;Fix TSan warning on server sets when running down&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;Clean up test usages of unsafe tpld access&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;Copy the maxElectionId for the topology description&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;Clear last_hello_response when invalidating server descriptions&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;Missed modification begin on topology&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;Remove redundant casts&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;Re-silence &apos;run auth tests&apos;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Co-authored-by: Ezra Chung &amp;lt;88335979+eramongodb@users.noreply.github.com&amp;gt;&lt;br/&gt;
Branch: master&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/mongo-c-driver/commit/ded9ae5e9f2897a283305175aae8e1bbf4021c36&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo-c-driver/commit/ded9ae5e9f2897a283305175aae8e1bbf4021c36&lt;/a&gt;&lt;/p&gt;</comment>
                    </comments>
                    <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_10857" key="com.pyxis.greenhopper.jira:gh-epic-link">
                        <customfieldname>Epic Link</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>CDRIVER-4002</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    <customfield id="customfield_12550" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>2|hzdc5z:</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>