Skip to content

Commit d8d2bd8

Browse files
committed
Merge branch 'fix/SDK-5733-FileRangeContext-queue-lost-the-request-if-request-has-the-same-begin-offset' into 'develop'
SDK-5733: FileRangeContext::queue lost the request if request has the same begin offset Closes SDK-5733 See merge request sdk/sdk!7033
2 parents 88c4dea + de1030d commit d8d2bd8

File tree

2 files changed

+20
-1
lines changed

2 files changed

+20
-1
lines changed

src/file_service/mega/file_service/file_read_request_set.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ struct FileReadRequestLess
1919
bool operator()(std::uint64_t lhs, const FileReadRequest& rhs) const;
2020
}; // FileReadRequestLess
2121

22-
using FileReadRequestSet = std::set<FileReadRequest, FileReadRequestLess>;
22+
using FileReadRequestSet = std::multiset<FileReadRequest, FileReadRequestLess>;
2323

2424
} // file_service
2525
} // mega

tests/integration/file_service/file_service_tests.cpp

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2292,6 +2292,25 @@ TEST_F(FileServiceTests, read_succeeds)
22922292
// We should have one 256KiB range in storage.
22932293
ASSERT_THAT(file->ranges(), ElementsAre(FileRange(0, 256_KiB)));
22942294

2295+
// Make sure we correctly handle like identical reads.
2296+
waiter0 = read(*file, 256_KiB, 64_KiB);
2297+
waiter1 = read(*file, 256_KiB, 64_KiB);
2298+
2299+
// Wait for both reads to complete.
2300+
ASSERT_NE(waiter0.wait_for(mDefaultTimeout), timeout);
2301+
ASSERT_NE(waiter1.wait_for(mDefaultTimeout), timeout);
2302+
2303+
// Make sure both reads succeeded.
2304+
result0 = waiter0.get();
2305+
result1 = waiter1.get();
2306+
2307+
EXPECT_EQ(result0.errorOr(FILE_SUCCESS), FILE_SUCCESS);
2308+
EXPECT_EQ(result1.errorOr(FILE_SUCCESS), FILE_SUCCESS);
2309+
2310+
// Make sure we read what we expected.
2311+
EXPECT_TRUE(compare(*result0, mFileContent, 256_KiB, 64_KiB));
2312+
EXPECT_TRUE(compare(*result1, mFileContent, 256_KiB, 64_KiB));
2313+
22952314
// Latch the file's access time.
22962315
accessed = file->info().accessed();
22972316

0 commit comments

Comments
 (0)