<!-- 
RSS generated by JIRA (9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66) at Wed Feb 07 21:20:00 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-4124] Clean Up Internal Atomic APIs</title>
                <link>https://jira.mongodb.org/browse/CDRIVER-4124</link>
                <project id="10030" key="CDRIVER">C Driver</project>
                    <description>&lt;p&gt;The library only defines a single atomic API for adding to a 32-bit and 64-bit integers, but includes a lot of complex preprocessor logic to detect platforms that are probably not relevant to the library, and are likely untested. There is a lack of atomic exchange, atomic compare-exchange, atomic fetch. Atomic fetch, in particular, is useful for read operations on integral variables that may be modified concurrently, without the need to introduce a lock (relevant to &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;).&lt;/p&gt;

&lt;p&gt;The pending solution for &lt;a href=&quot;https://jira.mongodb.org/browse/CDRIVER-4113&quot; title=&quot;Reduce contention on multithreaded session pool&quot; class=&quot;issue-link&quot; data-issue-key=&quot;CDRIVER-4113&quot;&gt;&lt;del&gt;CDRIVER-4113&lt;/del&gt;&lt;/a&gt; also makes use of these additional atomic operations.&lt;/p&gt;</description>
                <environment></environment>
        <key id="1846653">CDRIVER-4124</key>
            <summary>Clean Up Internal Atomic APIs</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>Mon, 9 Aug 2021 23:15:54 +0000</created>
                <updated>Tue, 7 Dec 2021 15:57:43 +0000</updated>
                            <resolved>Mon, 13 Sep 2021 23:56:50 +0000</resolved>
                                                    <fixVersion>1.20.0</fixVersion>
                                                        <votes>0</votes>
                                    <watches>2</watches>
                                                                                                                <comments>
                            <comment id="4180964" author="xgen-internal-githook" created="Wed, 10 Nov 2021 17:40:49 +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>
                            <comment id="4167773" author="jmikola@gmail.com" created="Wed, 3 Nov 2021 18:57:17 +0000"  >&lt;p&gt;For future reference, the macro definitions can be found here: &lt;a href=&quot;https://github.com/mongodb/mongo-c-driver/blob/b93e345178a3a50352894b4be300928987f3d371/src/libbson/src/bson/bson-atomic.h#L51-L300&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo-c-driver/blob/b93e345178a3a50352894b4be300928987f3d371/src/libbson/src/bson/bson-atomic.h#L51-L300&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="4167506" author="JIRAUSER1260880" created="Wed, 3 Nov 2021 17:34:01 +0000"  >&lt;p&gt;Those functions are mostly instantiated by macro expansions. They&apos;re roughly based on the C11 atomic functions&lt;/p&gt;</comment>
                            <comment id="4164616" author="jmikola@gmail.com" created="Tue, 2 Nov 2021 18:28:42 +0000"  >&lt;p&gt;&lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=colby.pike&quot; class=&quot;user-hover&quot; rel=&quot;colby.pike&quot;&gt;colby.pike&lt;/a&gt;: &lt;a href=&quot;https://github.com/mongodb/mongo-c-driver/commit/a0cd4f845a65304f519ec3261b0be332cd49ab5c#diff-a02fb5111c1575f83539ea569ab7f0d1b0f99655f97edc41833ed4683e1ecfd3R494&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;mongodb/mongo-c-driver@a0cd4f8&lt;/a&gt; deprecated &lt;tt&gt;bson_atomic_int_add&lt;/tt&gt; for &lt;tt&gt;bson_atomic_int_fetch_add&lt;/tt&gt;; however, the implementation of &lt;tt&gt;bson_atomic_int_add&lt;/tt&gt; &lt;a href=&quot;https://github.com/mongodb/mongo-c-driver/commit/a0cd4f845a65304f519ec3261b0be332cd49ab5c#diff-7591f9551d8904ff97695bc90f2d6b819afe82b783c4e798b046d597acd3880fR25&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;calls &lt;tt&gt;bson_atomic_int32_fetch_add&lt;/tt&gt;&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I also don&apos;t see any definition of &lt;tt&gt;bson_atomic_int_fetch_add&lt;/tt&gt; or &lt;tt&gt;bson_atomic_int32_fetch_add&lt;/tt&gt; in that commit. Is the function name in the deprecation notice a typo? Second question: where is/are the function(s) defined?&lt;/p&gt;</comment>
                            <comment id="4055798" author="xgen-internal-githook" created="Mon, 13 Sep 2021 23:55:20 +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-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; New atomics (#840)&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;Additional atomic operations&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;Update names to reflect C11 names, strong/weak cmpxchg&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;Remove config checks for atomics&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;CheckAtomics.cmake is gone&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;Use new atomics in the threadsafe-pool&lt;br/&gt;
Branch: master&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/mongo-c-driver/commit/a0cd4f845a65304f519ec3261b0be332cd49ab5c&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo-c-driver/commit/a0cd4f845a65304f519ec3261b0be332cd49ab5c&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10020">
                    <name>Gantt Dependency</name>
                                            <outwardlinks description="has to be done before">
                                        <issuelink>
            <issuekey id="1868696">CDRIVER-4149</issuekey>
        </issuelink>
                            </outwardlinks>
                                                        </issuelinktype>
                            <issuelinktype id="10012">
                    <name>Related</name>
                                            <outwardlinks description="related to">
                                        <issuelink>
            <issuekey id="1944044">CDRIVER-4237</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="1925303">CDRIVER-4229</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="1916396">PHPC-1997</issuekey>
        </issuelink>
                            </outwardlinks>
                                                                <inwardlinks description="is related to">
                                        <issuelink>
            <issuekey id="1874630">MONGOCRYPT-334</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="1944087">PHPC-2013</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="1839210">CDRIVER-4113</issuekey>
        </issuelink>
                            </inwardlinks>
                                    </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_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|hzh553:</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>