[DRIVERS-2713] Permit legacy transaction tests to run on load-balanced topologies and Atlas Serverless Created: 01/Sep/23  Updated: 07/Feb/24

Status: Implementing
Project: Drivers
Component/s: Transactions
Fix Version/s: None

Type: Task Priority: Major - P3
Reporter: Jeremy Mikola Assignee: Jeremy Mikola
Resolution: Unresolved Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Issue Links:
Issue split
split to CSHARP-4780 Permit legacy transaction tests to ru... Backlog
split to CXX-2744 Permit legacy transaction tests to ru... Backlog
split to GODRIVER-2971 Permit legacy transaction tests to ru... Backlog
split to RUBY-3325 Permit legacy transaction tests to ru... Backlog
split to RUST-1756 Permit legacy transaction tests to ru... Backlog
split to PYTHON-3947 Permit legacy transaction tests to ru... Blocked
split to CDRIVER-4717 Permit legacy transaction tests to ru... Closed
split to MOTOR-1186 Permit legacy transaction tests to ru... Closed
split to PHPLIB-1228 Permit legacy transaction tests to ru... Closed
split to NODE-5608 Permit legacy transaction tests to ru... Scheduled
split to JAVA-5133 Permit legacy transaction tests to ru... Backlog
Related
related to CDRIVER-4718 Transactions executed on a load balan... Closed
related to DRIVERS-2806 Lists of legacy tests to run for serv... Backlog
is related to DRIVERS-1967 Update serverless testing for load ba... Implementing
Driver Changes: Needed
Downstream Changes Summary:

Sync legacy transaction spec tests with 38e65fc.

Drivers that do not pin connections on load balancers (e.g. libmongoc, PHP) can consider skipping the tests listed in this comment.

Engineering Lead: Jeffrey Yemin Jeffrey Yemin
Start date:
Driver Compliance:
Key Status/Resolution FixVersion
CDRIVER-4717 Fixed 1.26.0
CXX-2744 Backlog
CSHARP-4780 Backlog
GODRIVER-2971 Backlog
JAVA-5133 Backlog
NODE-5608 Scheduled
MOTOR-1186 Duplicate
PYTHON-3947 Blocked
PHPLIB-1228 Fixed 1.17.0
RUBY-3325 Backlog
RUST-1756 Backlog

 Description   

Summary

In d2de776 for DRIVERS-720, various legacy spec tests were updated to incorporate "load-balanced" into their topology runOn requirements. The transactions spec was notably omitted. As a result, a segment of legacy spec tests are never run on Atlas Serverless, which the driver sees as a load balanced topology (see 1b471f1 and DRIVERS-1967).

Note that the serverless runOn requirement does not come into play here, as that's generally used with "forbid" to prohibit running tests. Even if a test specified "require" or "allow" (the default) for serverless, that alone would not be sufficient to run the test if topology was also specified and omitted "load-balanced".

Motivation

Who is the affected end user?

Drivers running legacy transaction specs tests.

How does this affect the end user?

Legacy transaction spec tests have no test coverage on load-balanced toplogies (including Atlas Serverless).

How likely is it that this problem or use case will occur?

Likely applies to all drivers, since the issue is in the spec tests themselves.

Is this issue urgent?

No, as the issue dates back over a year and was only recently discovered by the Java team.

Is this ticket required by a downstream team?

No.

Is this ticket only for tests?

Yes.



 Comments   
Comment by Jeremy Mikola [ 07/Feb/24 ]

Note: if any drivers implement DRIVERS-1709 first (porting legacy transaction spec tests to unified format), there will be no work needed for this ticket.

Comment by Jeremy Mikola [ 28/Sep/23 ]

Note: drivers that do not pin connections on load balancers (e.g. libmongoc, PHP) can consider skipping the following tests:

  • mongos-pin-auto: remain pinned after non-transient Interrupted error on insertOne
  • mongos-pin-auto: remain pinned after non-transient Interrupted error on insertOne insert
  • mongos-pin-auto: remain pinned after non-transient Interrupted error on insertMany insert
  • mongos-pin-auto: remain pinned after non-transient Interrupted error on updateOne update
  • mongos-pin-auto: remain pinned after non-transient Interrupted error on replaceOne update
  • mongos-pin-auto: remain pinned after non-transient Interrupted error on updateMany update
  • mongos-pin-auto: remain pinned after non-transient Interrupted error on deleteOne delete
  • mongos-pin-auto: remain pinned after non-transient Interrupted error on deleteMany delete
  • mongos-pin-auto: remain pinned after non-transient Interrupted error on findOneAndDelete findAndModify
  • mongos-pin-auto: remain pinned after non-transient Interrupted error on findOneAndUpdate findAndModify
  • mongos-pin-auto: remain pinned after non-transient Interrupted error on findOneAndReplace findAndModify
  • mongos-pin-auto: remain pinned after non-transient Interrupted error on bulkWrite insert
  • mongos-pin-auto: remain pinned after non-transient Interrupted error on bulkWrite update
  • mongos-pin-auto: remain pinned after non-transient Interrupted error on bulkWrite delete
  • mongos-pin-auto: remain pinned after non-transient Interrupted error on find find
  • mongos-pin-auto: remain pinned after non-transient Interrupted error on countDocuments aggregate
  • mongos-pin-auto: remain pinned after non-transient Interrupted error on aggregate aggregate
  • mongos-pin-auto: remain pinned after non-transient Interrupted error on distinct distinct
  • mongos-pin-auto: remain pinned after non-transient Interrupted error on runCommand insert
  • pin-mongos: multiple commits
Comment by Githook User [ 28/Sep/23 ]

Author:

{'name': 'Jeremy Mikola', 'email': 'jmikola@gmail.com', 'username': 'jmikola'}

Message: DRIVERS-2713: Run legacy transaction tests on LB topologies (#1459)

d2de77692b727b805168eeba02c3ab29e6a1d3e2 previously added "load-balanced" to other legacy test formats but omitted the transactions spec.

This change ensures legacy transaction tests can be run on LB topologies, including Atlas Serverless (where "serverless: forbid" is not specified).

Some tests in retryable-commit.yml are incompatible with serverless and have been split off into a separate file with "serverless: forbid".
Branch: master
https://github.com/mongodb/specifications/commit/38e65fc8e59fedea351d9393ae43d305cde6ce00

Comment by Jeremy Mikola [ 01/Sep/23 ]

https://github.com/mongodb/specifications/pull/1459

Comment by Jeremy Mikola [ 01/Sep/23 ]

Note: I've confirmed that this only affects the legacy transaction spec tests. DRIVERS-1525 covers all specs that still have legacy tests that need to be ported over to the unified format, and only the transactions spec was using "topology" with "sharded" and without "load-balanced". The convenient API was not affected as those have all been ported to the unified format, and other unported specs (e.g. CRUD v1, ADL) don't use topology requirements at all.

Generated at Thu Feb 08 08:26:15 UTC 2024 using Jira 9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66.