Operational Defect Database

BugZero found this defect 129 days ago.

MongoDB | 2543519

Resharding remainingOpTime algorithm doesn't work with low elapsedTime

Last update date:

3/13/2024

Affected products:

MongoDB Server

Affected releases:

5.0.0

6.0.0

7.0.0

7.2.0

Fixed releases:

No fixed releases provided.

Description:

Info

In the following algorithm for calculating remainingTime to complete for resharding op, used by resharding commit monitor: Milliseconds remainingTime(Milliseconds elapsedTime, double elapsedWork, double totalWork) { elapsedWork = std::min(elapsedWork, totalWork); double remainingMsec = 1.0 * elapsedTime.count() * (totalWork / elapsedWork - 1); return Milliseconds(Milliseconds::rep(remainingMsec)); } If the elapsedTime is of the order of few ms, the remainingMsec can be incorrectly reported. For example in the HELP-54235, with ~300k fetched oplog entries (totalWork) and a 1000 applied oplog entries (elapsedWork) and a value of elapsedTime as 6ms will result in engaging the CS as: remainingMsec = 1.0 * 6 * (300-1) ≈ 1800 ms = 1.8 seconds This algorithm needs to change to handle this edge case.

Top User Comments


Steps to Reproduce


Additional Resources / Links

Share:

BugZero® Risk Score

What's this?

Coming soon

Status

Needs Scheduling

Learn More

Search:

...