const std::string privilegeDbPath = TizenPlatformConfig::makePath(TZ_SYS_DB, ".security-manager.db");
const std::string privilegeDbFallbackPath = TizenPlatformConfig::makePath(TZ_SYS_RO_SHARE, "security-manager", ".security-manager.db");
-std::string dbBrokenFlagFileName(const std::string &dbPath) {
- return dbPath + "-broken";
+std::string dbRecoveryFlagFileName(const std::string &dbPath) {
+ return dbPath + "-recovered";
}
};
extern const std::string privilegeDbPath;
extern const std::string privilegeDbFallbackPath;
-std::string dbBrokenFlagFileName(const std::string &dbPath);
+/* a file flag for other system components that there was
+ a Db failure and DB was recovered to initial (preloaded-apps only) state */
+std::string dbRecoveryFlagFileName(const std::string &dbPath);
};
} /* namespace SecurityManager */
ThrowMsg(PrivilegeDb::Exception::IOError, s);
}
-void createBrokenFlagFile(const std::string &dbPath) {
- if (SECURITY_MANAGER_SUCCESS != FS::createFile(Config::dbBrokenFlagFileName(dbPath)))
- throwDbInitEx("Error creating db broken flag file");
+void createRecoveryFlagFile(const std::string &dbPath) {
+ if (SECURITY_MANAGER_SUCCESS != FS::createFile(Config::dbRecoveryFlagFileName(dbPath)))
+ throwDbInitEx("Error creating db recovery flag file");
}
-void removeBrokenFlagFile(const std::string &dbPath) {
- if (SECURITY_MANAGER_SUCCESS == FS::removeFile(Config::dbBrokenFlagFileName(dbPath)))
- LogWarning("Broken DB flag file removed - booting 1st time after DB recovery");
+void removeRecoveryFlagFile(const std::string &dbPath) {
+ if (SECURITY_MANAGER_SUCCESS == FS::removeFile(Config::dbRecoveryFlagFileName(dbPath)))
+ LogWarning("Recovery DB flag file removed - booting 1st time after DB recovery");
}
template <class F>
}
void initDb(DB::SqlConnection &conn, const std::string &path, const std::string &roFallbackPath) {
- removeBrokenFlagFile(path);
+ removeRecoveryFlagFile(path);
if (!FS::fileStatus(path)) {
- createBrokenFlagFile(path);
+ createRecoveryFlagFile(path);
LogError("Database file " + path + " missing, attempting fallback");
applyFallbackDb(conn, path, roFallbackPath);
} else try {
connectMigrateVerify(conn, path);
} catch (DB::SqlConnection::Exception::Base &e) {
- createBrokenFlagFile(path);
+ createRecoveryFlagFile(path);
LogError("Database initialization error (" << e.DumpToString() << "), attempting fallback");
tryCatchDbInit([&]{ conn.Disconnect(); });
applyFallbackDb(conn, path, roFallbackPath);
void requireNoDb(const std::string &dbPath) {
BOOST_REQUIRE(!FS::fileStatus(dbPath));
BOOST_REQUIRE(!FS::fileStatus(genJournalPath(dbPath)));
- BOOST_REQUIRE(!FS::fileStatus(Config::dbBrokenFlagFileName(dbPath)));
+ BOOST_REQUIRE(!FS::fileStatus(Config::dbRecoveryFlagFileName(dbPath)));
}
PrivilegeDBFixture::PrivilegeDBFixture(const std::string &src, const std::string &fallback,
putFile(genJournalPath(src), genJournalPath(dst));
testPrivDb = new PrivilegeDb(dst, fallback);
- const auto brokenFlagFileName = Config::dbBrokenFlagFileName(dst);
+ const auto brokenFlagFileName = Config::dbRecoveryFlagFileName(dst);
const auto flagFileStatus = FS::fileStatus(brokenFlagFileName);
if (haveBrokenFlagFile == HaveBrokenFlagFile::no) {
BOOST_REQUIRE(!flagFileStatus);
BOOST_REQUIRE_MESSAGE(remove(dbPath.c_str()) == 0, "Could not delete test database file: " << dbPath);
auto journalPath = genJournalPath(dbPath);
BOOST_REQUIRE_MESSAGE(remove(journalPath.c_str()) == 0, "Could not delete test database journal file: " << journalPath);
- BOOST_REQUIRE(!FS::fileStatus(Config::dbBrokenFlagFileName(dbPath)));
+ BOOST_REQUIRE(!FS::fileStatus(Config::dbRecoveryFlagFileName(dbPath)));
delete testPrivDb;
}
const std::string missingDbPath("/tmp/thisNotExists.db");
requireNoDb(missingDbPath);
const auto missingDbPathJournal = genJournalPath(missingDbPath);
- const auto missingDbPathFlag = Config::dbBrokenFlagFileName(missingDbPath);
+ const auto missingDbPathFlag = Config::dbRecoveryFlagFileName(missingDbPath);
BOOST_REQUIRE_NO_THROW(PrivilegeDb(missingDbPath, PRIVILEGE_DB_EXAMPLE_V0));
requireTestDbContents(missingDbPath);
BOOST_REQUIRE(!remove(missingDbPath.c_str()));
requireNoDb(nExist2);
BOOST_REQUIRE_THROW(testPrivDb.reset(new PrivilegeDb(nExist, nExist2)),
PrivilegeDb::Exception::IOError);
- const auto flagFile = Config::dbBrokenFlagFileName(nExist);
+ const auto flagFile = Config::dbRecoveryFlagFileName(nExist);
BOOST_REQUIRE(!FS::fileSize(flagFile));
BOOST_REQUIRE(!remove(flagFile.c_str()));
requireNoDb(nExist);