Tracker 75432 hits an assert which is attempting to protect the system
against hanging, due to generating a read request which sends no messages.
The assert fired because recovery was attempting to read multiple objects
in a single read request. One object did not require any further shard
reads in order to recover, while the other did. The consequence is that
the assert fired on one of the objects.
The problem is simply that the assert is in the wrong place.
Fixes: https://tracker.ceph.com/issues/75432
Signed-off-by: Alex Ainscow <aainscow@uk.ibm.com>
}
}
ceph_assert(!need_attrs);
- ceph_assert(reads_sent);
}
+ ceph_assert(reads_sent);
std::optional<ECSubRead> local_read_op;
std::vector<std::pair<int, Message*>> m;
*
* Expected behavior WITH fix: Test completes successfully.
*/
-TEST_P(TestECFailoverWithPeering, DISABLED_MultiObjectParallelRecoveryCrash) {
+TEST_P(TestECFailoverWithPeering, MultiObjectParallelRecoveryCrash) {
// This test requires k >= 3 and m >= 2
if (k < 3 || m < 2) {
GTEST_SKIP() << "Test requires k >= 3 and m >= 2";