Skip to content

Conversation

@GromNaN
Copy link
Member

@GromNaN GromNaN commented Aug 8, 2025

Q A
Type bug
BC Break no
Fixed issues PHPORM-377

Summary

Fixes tests failing with this configuration.

GromNaN added 3 commits August 8, 2025 15:49
Cannot insert into a time-series collection in a multi-document transaction: doctrine_odm_tests.TimeSeriesDocument
@GromNaN GromNaN requested a review from Copilot August 8, 2025 15:05
Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR fixes test failures when running with MongoDB 8.0 replica set configuration by adjusting transaction handling and adding replication synchronization logic.

  • Disables transactions for time series document operations which are incompatible with MongoDB 8.0 replica sets
  • Adds retry logic with backoff for read preference tests to handle replication lag
  • Includes MongoDB 8.0 replica set configuration in CI workflow

Reviewed Changes

Copilot reviewed 3 out of 3 changed files in this pull request and generated 2 comments.

File Description
tests/Doctrine/ODM/MongoDB/Tests/Functional/TimeSeriesTest.php Disables transactions for time series operations to fix compatibility with MongoDB 8.0
tests/Doctrine/ODM/MongoDB/Tests/Functional/ReadPreferenceTest.php Adds retry mechanism with delays to handle replication lag in replica set environments
.github/workflows/continuous-integration.yml Adds MongoDB 8.0 replica set test configuration to CI matrix

Comment on lines +62 to +68
$retries = 0;
do {
// Wait a bit to ensure replication has caught up.
usleep(1_000 * $retries);
$user = $query->getSingleResult();
} while ($user === null && $retries++ < 100);

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fix this error:

1) Doctrine\ODM\MongoDB\Tests\Functional\ReadPreferenceTest::testHintIsSetOnQuery with data set #1 ('secondaryPreferred', [])
Failed asserting that null is an instance of class Documents\User.

/home/runner/work/mongodb-odm/mongodb-odm/tests/Doctrine/ODM/MongoDB/Tests/Functional/ReadPreferenceTest.php:61

2) Doctrine\ODM\MongoDB\Tests\Functional\ReadPreferenceTest::testHintIsSetOnQuery with data set #2 ('secondary', [['east'], []])
Failed asserting that null is an instance of class Documents\User.


$this->dm->persist($document);
$this->dm->flush();
$this->dm->flush(['withTransaction' => false]);
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fix this error:

1) Doctrine\ODM\MongoDB\Tests\Functional\TimeSeriesTest::testCreateTimeSeriesDocumentWithoutId
MongoDB\Driver\Exception\BulkWriteException: time-series insert failed: doctrine_odm_tests.TimeSeriesDocument :: caused by :: Cannot insert into a time-series collection in a multi-document transaction: doctrine_odm_tests.TimeSeriesDocument

/home/runner/work/mongodb-odm/mongodb-odm/vendor/mongodb/mongodb/src/Operation/InsertMany.php:134
/home/runner/work/mongodb-odm/mongodb-odm/vendor/mongodb/mongodb/src/Collection.php:854
/home/runner/work/mongodb-odm/mongodb-odm/lib/Doctrine/ODM/MongoDB/Persisters/DocumentPersister.php:230
/home/runner/work/mongodb-odm/mongodb-odm/lib/Doctrine/ODM/MongoDB/UnitOfWork.php:1186
/home/runner/work/mongodb-odm/mongodb-odm/lib/Doctrine/ODM/MongoDB/UnitOfWork.php:3120
/home/runner/work/mongodb-odm/mongodb-odm/lib/Doctrine/ODM/MongoDB/UnitOfWork.php:467
/home/runner/work/mongodb-odm/mongodb-odm/lib/Doctrine/ODM/MongoDB/UnitOfWork.php:3172
/home/runner/work/mongodb-odm/mongodb-odm/lib/Doctrine/ODM/MongoDB/UnitOfWork.php:464
/home/runner/work/mongodb-odm/mongodb-odm/lib/Doctrine/ODM/MongoDB/DocumentManager.php:585
/home/runner/work/mongodb-odm/mongodb-odm/tests/Doctrine/ODM/MongoDB/Tests/Functional/TimeSeriesTest.php:44


$this->dm->persist($document);
$this->dm->flush();
$this->dm->flush(['withTransaction' => false]);
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fix this error:

2) Doctrine\ODM\MongoDB\Tests\Functional\TimeSeriesTest::testCreateTimeSeriesDocumentWithId
MongoDB\Driver\Exception\BulkWriteException: time-series insert failed: doctrine_odm_tests.TimeSeriesDocument :: caused by :: Cannot insert into a time-series collection in a multi-document transaction: doctrine_odm_tests.TimeSeriesDocument

/home/runner/work/mongodb-odm/mongodb-odm/vendor/mongodb/mongodb/src/Operation/InsertMany.php:134
/home/runner/work/mongodb-odm/mongodb-odm/vendor/mongodb/mongodb/src/Collection.php:854
/home/runner/work/mongodb-odm/mongodb-odm/lib/Doctrine/ODM/MongoDB/Persisters/DocumentPersister.php:230
/home/runner/work/mongodb-odm/mongodb-odm/lib/Doctrine/ODM/MongoDB/UnitOfWork.php:1186
/home/runner/work/mongodb-odm/mongodb-odm/lib/Doctrine/ODM/MongoDB/UnitOfWork.php:3120
/home/runner/work/mongodb-odm/mongodb-odm/lib/Doctrine/ODM/MongoDB/UnitOfWork.php:467
/home/runner/work/mongodb-odm/mongodb-odm/lib/Doctrine/ODM/MongoDB/UnitOfWork.php:3172
/home/runner/work/mongodb-odm/mongodb-odm/lib/Doctrine/ODM/MongoDB/UnitOfWork.php:464
/home/runner/work/mongodb-odm/mongodb-odm/lib/Doctrine/ODM/MongoDB/DocumentManager.php:585
/home/runner/work/mongodb-odm/mongodb-odm/tests/Doctrine/ODM/MongoDB/Tests/Functional/TimeSeriesTest.php:60

@GromNaN GromNaN marked this pull request as ready for review August 8, 2025 15:07
@GromNaN GromNaN requested a review from jmikola August 8, 2025 15:08
@GromNaN GromNaN added the CI label Aug 8, 2025
@GromNaN GromNaN added this to the 2.11.3 milestone Aug 8, 2025
@GromNaN GromNaN merged commit 5770267 into doctrine:2.11.x Aug 9, 2025
21 checks passed
@GromNaN GromNaN deleted the test-replica-8 branch August 18, 2025 15:19
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants