diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2022-01-26 15:41:06 +0000 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2022-01-26 15:59:29 +0000 |
commit | 237fe9d1d62d215721f120f5ec6399fc1456119a (patch) | |
tree | 64fd0aacaeb15a97b917490277c6e9e5e8bd79cf /searchcorespi | |
parent | 972de79bfeebf0d9f78a28067969494536d65ca5 (diff) |
- assert result of Close() in destructor of FastOS_File and FastOS_BufferedFile.
- Check result of Close()
- Check result of Sync()
- Scope FastOS_File to avoid explicit Close().
- NULL -> nullptr
Diffstat (limited to 'searchcorespi')
-rw-r--r-- | searchcorespi/src/vespa/searchcorespi/index/indexwriteutilities.cpp | 44 | ||||
-rw-r--r-- | searchcorespi/src/vespa/searchcorespi/index/indexwriteutilities.h | 6 |
2 files changed, 22 insertions, 28 deletions
diff --git a/searchcorespi/src/vespa/searchcorespi/index/indexwriteutilities.cpp b/searchcorespi/src/vespa/searchcorespi/index/indexwriteutilities.cpp index 058a21e15c7..cc2575f74d2 100644 --- a/searchcorespi/src/vespa/searchcorespi/index/indexwriteutilities.cpp +++ b/searchcorespi/src/vespa/searchcorespi/index/indexwriteutilities.cpp @@ -24,8 +24,7 @@ using search::SerialNum; using vespalib::IllegalStateException; using vespalib::FileHeader; -namespace searchcorespi { -namespace index { +namespace searchcorespi::index { namespace { @@ -42,22 +41,24 @@ IndexWriteUtilities::writeSerialNum(SerialNum serialNum, IndexDiskLayout::getSerialNumFileName(dir); const vespalib::string tmpFileName = fileName + ".tmp"; - SerialNumFileHeaderContext snFileHeaderContext(fileHeaderContext, - serialNum); + SerialNumFileHeaderContext snFileHeaderContext(fileHeaderContext, serialNum); Fast_BufferedFile file; file.WriteOpen(tmpFileName.c_str()); FileHeader fileHeader; snFileHeaderContext.addTags(fileHeader, fileName); - fileHeader.putTag(FileHeader::Tag(IndexDiskLayout::SerialNumTag, - serialNum)); + fileHeader.putTag(FileHeader::Tag(IndexDiskLayout::SerialNumTag, serialNum)); bool ok = (fileHeader.writeFile(file) >= fileHeader.getSize()); - if (!file.Sync()) { + if ( ! ok) { + LOG(error, "Unable to write file header '%s'", tmpFileName.c_str()); + } + if ( ! file.Sync()) { + ok = false; + LOG(error, "Unable to fsync '%s'", tmpFileName.c_str()); + } + if ( ! file.Close()) { ok = false; - LOG(error, - "Unable to fsync '%s'", - tmpFileName.c_str()); + LOG(error, "Unable to close '%s'", tmpFileName.c_str()); } - file.Close(); vespalib::File::sync(dir); if (ok) { @@ -85,23 +86,20 @@ IndexWriteUtilities::copySerialNumFile(const vespalib::string &sourceDir, } FastOS_File file(tmpDest.c_str()); if (!file.OpenReadWrite()) { - LOG(error, - "Unable to open '%s' for fsync", - tmpDest.c_str()); + LOG(error, "Unable to open '%s' for fsync", tmpDest.c_str()); return false; } if (!file.Sync()) { - LOG(error, - "Unable to fsync '%s'", - tmpDest.c_str()); + LOG(error, "Unable to fsync '%s'", tmpDest.c_str()); + return false; + } + if (!file.Close()) { + LOG(error, "Unable to close '%s'", tmpDest.c_str()); return false; } - file.Close(); vespalib::File::sync(destDir); if (!file.Rename(dest.c_str())) { - LOG(error, - "Unable to rename file '%s' to '%s'", - tmpDest.c_str(), dest.c_str()); + LOG(error, "Unable to rename file '%s' to '%s'", tmpDest.c_str(), dest.c_str()); return false; } vespalib::File::sync(destDir); @@ -193,6 +191,4 @@ IndexWriteUtilities::updateDiskIndexSchema(const vespalib::string &indexDir, vespalib::File::sync(indexDir); } -} // namespace index -} // namespace searchcorespi - +} diff --git a/searchcorespi/src/vespa/searchcorespi/index/indexwriteutilities.h b/searchcorespi/src/vespa/searchcorespi/index/indexwriteutilities.h index 37193cce4d5..313ab3cc1c7 100644 --- a/searchcorespi/src/vespa/searchcorespi/index/indexwriteutilities.h +++ b/searchcorespi/src/vespa/searchcorespi/index/indexwriteutilities.h @@ -8,8 +8,7 @@ #include <vespa/searchlib/common/serialnum.h> #include <vespa/vespalib/stllike/string.h> -namespace searchcorespi { -namespace index { +namespace searchcorespi::index { /** * Utility class with functions to write aspects of an index to disk. @@ -40,7 +39,6 @@ struct IndexWriteUtilities search::SerialNum serialNum); }; -} // namespace index -} // namespace searchcorespi +} |