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;
|
||||
}
|
||||
}
|
||||
ASSERT_EQ(count, num_keys);
|
||||
elapsed = timer.ElapsedNanos();
|
||||
fprintf(stderr, "standard bloom, avg query latency %" PRIu64 "\n",
|
||||
elapsed / count);
|
||||
ASSERT_TRUE(count == num_keys);
|
||||
|
||||
// Locality enabled version
|
||||
DynamicBloom blocked_bloom(&arena, num_keys * 10, 1, num_probes);
|
||||
|
@ -401,16 +401,16 @@ class PosixMmapFile : public WritableFile {
|
||||
return s;
|
||||
}
|
||||
|
||||
bool UnmapCurrentRegion() {
|
||||
bool result = true;
|
||||
Status UnmapCurrentRegion() {
|
||||
TEST_KILL_RANDOM(rocksdb_kill_odds);
|
||||
if (base_ != nullptr) {
|
||||
if (last_sync_ < limit_) {
|
||||
// Defer syncing this data until next Sync() call, if any
|
||||
pending_sync_ = true;
|
||||
}
|
||||
if (munmap(base_, limit_ - base_) != 0) {
|
||||
result = false;
|
||||
int munmap_status = munmap(base_, limit_ - base_);
|
||||
if (munmap_status != 0) {
|
||||
return IOError(filename_, munmap_status);
|
||||
}
|
||||
file_offset_ += limit_ - base_;
|
||||
base_ = nullptr;
|
||||
@ -423,7 +423,7 @@ class PosixMmapFile : public WritableFile {
|
||||
map_size_ *= 2;
|
||||
}
|
||||
}
|
||||
return result;
|
||||
return Status::OK();
|
||||
}
|
||||
|
||||
Status MapNewRegion() {
|
||||
@ -498,13 +498,15 @@ class PosixMmapFile : public WritableFile {
|
||||
assert(dst_ <= limit_);
|
||||
size_t avail = limit_ - dst_;
|
||||
if (avail == 0) {
|
||||
if (UnmapCurrentRegion()) {
|
||||
Status s = MapNewRegion();
|
||||
if (!s.ok()) {
|
||||
return s;
|
||||
}
|
||||
TEST_KILL_RANDOM(rocksdb_kill_odds);
|
||||
Status s = UnmapCurrentRegion();
|
||||
if (!s.ok()) {
|
||||
return s;
|
||||
}
|
||||
s = MapNewRegion();
|
||||
if (!s.ok()) {
|
||||
return s;
|
||||
}
|
||||
TEST_KILL_RANDOM(rocksdb_kill_odds);
|
||||
}
|
||||
|
||||
size_t n = (left <= avail) ? left : avail;
|
||||
@ -524,7 +526,8 @@ class PosixMmapFile : public WritableFile {
|
||||
|
||||
TEST_KILL_RANDOM(rocksdb_kill_odds);
|
||||
|
||||
if (!UnmapCurrentRegion()) {
|
||||
s = UnmapCurrentRegion();
|
||||
if (!s.ok()) {
|
||||
s = IOError(filename_, errno);
|
||||
} else if (unused > 0) {
|
||||
// Trim the extra space at the end of the file
|
||||
|
Loading…
Reference in New Issue
Block a user