rocksdb: Fix 'Division by zero' scan-build warning
Summary: scan-build complains with division by zero warning in a test. Added an assertion to prevent this. scan-build report: http://home.fburl.com/~sugak/latest6/report-c61be9.html#EndPath Test Plan: Make sure scan-build does not report 'Division by zero' and all tests are passing. ```lang=bash % make analyze % make check ``` Reviewers: igor, meyering Reviewed By: meyering Subscribers: sdong, dhruba, leveldb Differential Revision: https://reviews.facebook.net/D33495
This commit is contained in:
parent
12753130ec
commit
3ad6b794cf
@ -177,10 +177,10 @@ TEST(DynamicBloomTest, perf) {
|
|||||||
++count;
|
++count;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
ASSERT_EQ(count, num_keys);
|
||||||
elapsed = timer.ElapsedNanos();
|
elapsed = timer.ElapsedNanos();
|
||||||
fprintf(stderr, "standard bloom, avg query latency %" PRIu64 "\n",
|
fprintf(stderr, "standard bloom, avg query latency %" PRIu64 "\n",
|
||||||
elapsed / count);
|
elapsed / count);
|
||||||
ASSERT_TRUE(count == num_keys);
|
|
||||||
|
|
||||||
// Locality enabled version
|
// Locality enabled version
|
||||||
DynamicBloom blocked_bloom(&arena, num_keys * 10, 1, num_probes);
|
DynamicBloom blocked_bloom(&arena, num_keys * 10, 1, num_probes);
|
||||||
|
@ -401,16 +401,16 @@ class PosixMmapFile : public WritableFile {
|
|||||||
return s;
|
return s;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool UnmapCurrentRegion() {
|
Status UnmapCurrentRegion() {
|
||||||
bool result = true;
|
|
||||||
TEST_KILL_RANDOM(rocksdb_kill_odds);
|
TEST_KILL_RANDOM(rocksdb_kill_odds);
|
||||||
if (base_ != nullptr) {
|
if (base_ != nullptr) {
|
||||||
if (last_sync_ < limit_) {
|
if (last_sync_ < limit_) {
|
||||||
// Defer syncing this data until next Sync() call, if any
|
// Defer syncing this data until next Sync() call, if any
|
||||||
pending_sync_ = true;
|
pending_sync_ = true;
|
||||||
}
|
}
|
||||||
if (munmap(base_, limit_ - base_) != 0) {
|
int munmap_status = munmap(base_, limit_ - base_);
|
||||||
result = false;
|
if (munmap_status != 0) {
|
||||||
|
return IOError(filename_, munmap_status);
|
||||||
}
|
}
|
||||||
file_offset_ += limit_ - base_;
|
file_offset_ += limit_ - base_;
|
||||||
base_ = nullptr;
|
base_ = nullptr;
|
||||||
@ -423,7 +423,7 @@ class PosixMmapFile : public WritableFile {
|
|||||||
map_size_ *= 2;
|
map_size_ *= 2;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return result;
|
return Status::OK();
|
||||||
}
|
}
|
||||||
|
|
||||||
Status MapNewRegion() {
|
Status MapNewRegion() {
|
||||||
@ -498,13 +498,15 @@ class PosixMmapFile : public WritableFile {
|
|||||||
assert(dst_ <= limit_);
|
assert(dst_ <= limit_);
|
||||||
size_t avail = limit_ - dst_;
|
size_t avail = limit_ - dst_;
|
||||||
if (avail == 0) {
|
if (avail == 0) {
|
||||||
if (UnmapCurrentRegion()) {
|
Status s = UnmapCurrentRegion();
|
||||||
Status s = MapNewRegion();
|
if (!s.ok()) {
|
||||||
if (!s.ok()) {
|
return s;
|
||||||
return s;
|
|
||||||
}
|
|
||||||
TEST_KILL_RANDOM(rocksdb_kill_odds);
|
|
||||||
}
|
}
|
||||||
|
s = MapNewRegion();
|
||||||
|
if (!s.ok()) {
|
||||||
|
return s;
|
||||||
|
}
|
||||||
|
TEST_KILL_RANDOM(rocksdb_kill_odds);
|
||||||
}
|
}
|
||||||
|
|
||||||
size_t n = (left <= avail) ? left : avail;
|
size_t n = (left <= avail) ? left : avail;
|
||||||
@ -524,7 +526,8 @@ class PosixMmapFile : public WritableFile {
|
|||||||
|
|
||||||
TEST_KILL_RANDOM(rocksdb_kill_odds);
|
TEST_KILL_RANDOM(rocksdb_kill_odds);
|
||||||
|
|
||||||
if (!UnmapCurrentRegion()) {
|
s = UnmapCurrentRegion();
|
||||||
|
if (!s.ok()) {
|
||||||
s = IOError(filename_, errno);
|
s = IOError(filename_, errno);
|
||||||
} else if (unused > 0) {
|
} else if (unused > 0) {
|
||||||
// Trim the extra space at the end of the file
|
// Trim the extra space at the end of the file
|
||||||
|
Loading…
Reference in New Issue
Block a user