summaryrefslogtreecommitdiffstats
path: root/searchcorespi
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2022-01-26 15:41:06 +0000
committerHenning Baldersheim <balder@yahoo-inc.com>2022-01-26 15:59:29 +0000
commit237fe9d1d62d215721f120f5ec6399fc1456119a (patch)
tree64fd0aacaeb15a97b917490277c6e9e5e8bd79cf /searchcorespi
parent972de79bfeebf0d9f78a28067969494536d65ca5 (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.cpp44
-rw-r--r--searchcorespi/src/vespa/searchcorespi/index/indexwriteutilities.h6
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
+}