|
Author:
{'name': 'vector-of-bool', 'email': 'vectorofbool@gmail.com', 'username': 'vector-of-bool'}
Message: CDRIVER-4114: Reduce contention on the topology description (#854)
- Additional atomic operations
- 64bit and pointer atomics for MSVC
- Revive some old exported symbols, clean up some unused code, and mark unreachable code.
- No 64bit atomics for x86 GCC either. Fix several warnings
- Token balance in case of empty macro expansion
- Fix extra semicolon, plus macOS posix detection
- Fix check on 32-bit, and missing 'default' case.
Closes: CDRIVER-4124
- CXX-4113: Thread-safe pool for server session objects
- Remove unused node pointers on server sessions
- Track pool size, and don't loop while holding the lock to clear
- Wrong arg names in i64 compare_exchange emul
- Missing dist listing for ts-pool files
- Cleanup and some redesign of pool API
- Declare special pool for server sessions
- Fix pruning pool not leaking the 10,001st session
- Visiting pool items, and checking that items are returned to the pool
- Fix unacknowledged sessions tests
- Additional atomic operations
- A simple shared pointer construct
- Fix atomic intrinsics on MSVC
- Topology description is a shared ptr
- Give sptr._aux a type to aid in debugging. And no spinlocks!
- Fix race on updating server rtt
- Assertion macro for asserting pointers inline
- Refactoring many locations to copy the shared topology description
- Undo accidental local dev changes
- Give the topology scanner its own mutex for the handshake_cmd
This requires a refactor of how the handshake_cmd is passed around.
Instead of the scanner returning a pointer to contended data and expecting
the caller to bring their own synchronization, the scanner duplicates the
handshake into an output parameter and performs its own synchronization
internally.
- Instead of using a mutex to guard monitor thread startup, use an atomic compare-exchange.
- Fix: 'release' is not valid for GCC compare-exchange
- Lots of "const" weeds out threading a mutation issues
- Fix const-init from non-constant-expr
- fetch() is `const`, and no `release` in cmpxch
- Mention the LIFO nature of the thread-pool, and the non-conformance of the 'push' operation
- auditing the pool is compile-time optional
- A shared-pointer abstraction
- Make mongoc-shared a private API
- init the shared_ptr_mtx in a Windows-compatible way.
- Update names to reflect C11 names, strong/weak cmpxchg
- Fix const-to-mutable bind in MSVC
- PR and impl updates for shared_ptr:
- Rename to more closely match stdlib equivs
- Delete macros that are unneeded
- Tweak impl of atomic_store to be more efficient
- Update doc comments
- Address various PR comments
- More tests for atomic operations
- Restore bson_memory_barrier with a deprecation notice
- No 'consume' memorder for atomic exchange
- Fix detection of 64bit, plus unused intrin value
- Missing i64_fetch and i64_fetch_sub on 32-bit playforms
- Fix spinlock logic inversion for i64 emul
- Remove config checks for atomics
- Thread-safe CSE startup without a mutex
- Set march=i686 for 32bit builds
- Update src/libmongoc/src/mongoc/mongoc-shared.c
Co-authored-by: Ezra Chung <88335979+eramongodb@users.noreply.github.com>
- PR comments, use bson_assert_param, protect from self-assignment
- CheckAtomics.cmake is gone
- PR comments, and an assertion fix
- Update doc comments from PR comments
- Test aliasing to subobject, and fix C99 usage
- Remove C99 usage, unneeded assertions, and warnings
- Fix lost topology update with mongoc_topology_reconcile
- Refresh td ptr after making changes in a test
- Fix deadlocks in topology shutdown
- Guard against a zero-allocated mongoc_set
- Fix invalid test result JSON generation
- Fix warnings from MSVC. Fix unexported symbols used on 32bit DLL
- Fix leak from misuse of bson_copy_to
- Simplify scanner handshake setup
- Fix leak of shared pointer when committing topo updates
- Fix unsafe use-after free in test case
- Missing cast-from-const in int64 atomic emul
- Remove unneeded NULL checks. Fix doubled events when racing to invalidate servers
- Use generation to validate server description
- Fix attempt to double-reconnect
- Update _mongoc_cluster_create_server_stream in conditional code segments
- Conditionally set error in _cluster_fetch_sream_single
- Refresh topology after requesting a scan
- Fix race with the scanner to finish the initial handshake
- Fix leak of topology descr reference
- Fix leaked alloc of bson_t in _stream_run_hello
- More leaks with dup_handshake_cmd
- BSON initializer that is safe to destroy or to leak.
- Undo incorrect changes for bson memcheck code
- Propagate the random seed when cloning a topology description
- Prevent recursive topology modifications, which deadlock
- Update comments and cleanup.
- Remove mentions of topology->mutex.
- Update comments that refer to locking.
- Remove some redundant APIs.
- Move some APIs to have internal linkage.
- Guard against a deadlock with an assertion
- Revert "Guard against a deadlock with an assertion"
This reverts commit 4b9892ed2196a2f8274885a9f5b844685dbeb814.
- Update for PR comments. Cleanup, const, and typos
- Fix use-after free of server description in test. Remove unneeded locking
- Pin docutils version when installing sphinx
- Separate mutex for srv polling, document more usage of tpld_modification_mtx
- Suppress unused-var warning
- ThreadSanitizer calls me out for wrong atomics.
- Fix race in on counters in counter test
- Release the topology description outside of the mutex
- Thread-safe direct topology modification for testing purposes
- Fix unnecessary race on getting topology event counts
- Thread-safety in tests around topology reconciliation
- Fix regression in counters test
- Switch sign in counters tests
- More thread safety in tests around topology descriptions
- Update to comments, docs, and fixes from PR
- Score scanner_state as an int, so we can perform well-defined atomic ops on it
- temporarily disable silence in 'run auth tests'
- Fix missing close quote in evergreen test script
- Temporarily enable logging for 'run auth tests'
- Give generation map const-correctness
The generation map is owned by its server description, so the pointer
member should have deep-const semantics. This uncovers new potential
correctness issues, which are fixed now.
- Fix TSan warning on server sets when running down
- Clean up test usages of unsafe tpld access
- Copy the maxElectionId for the topology description
- Clear last_hello_response when invalidating server descriptions
- Missed modification begin on topology
- Re-silence 'run auth tests'
Co-authored-by: Ezra Chung <88335979+eramongodb@users.noreply.github.com>
Branch: master
https://github.com/mongodb/mongo-c-driver/commit/ded9ae5e9f2897a283305175aae8e1bbf4021c36
|