summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDenys Vlasenko <vda.linux@googlemail.com>2009-12-04 16:32:57 +0100
committerDenys Vlasenko <vda.linux@googlemail.com>2009-12-04 16:32:57 +0100
commit230f151aa7e357c37040ed51bcbdbc1a766af82a (patch)
tree868d3ac924a3d1f13f02cec799edd661d6e2d504
parent6eb4056d7b90fe3a69cee1e332e2a2957b76c9c5 (diff)
downloadabrt-230f151aa7e357c37040ed51bcbdbc1a766af82a.tar.gz
abrt-230f151aa7e357c37040ed51bcbdbc1a766af82a.tar.xz
abrt-230f151aa7e357c37040ed51bcbdbc1a766af82a.zip
simplify code which deletes corrupted debug dumps; kill unused EXCEP_FATAL
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
-rw-r--r--inc/ABRTException.h1
-rw-r--r--src/Daemon/CommLayerServerSocket.h2
-rw-r--r--src/Daemon/CrashWatcher.cpp56
-rw-r--r--src/Daemon/CrashWatcher.h4
-rw-r--r--src/Daemon/Daemon.cpp16
-rw-r--r--src/Daemon/MiddleWare.cpp24
-rw-r--r--src/Daemon/MiddleWare.h11
7 files changed, 24 insertions, 90 deletions
diff --git a/inc/ABRTException.h b/inc/ABRTException.h
index 173f45fc..fe7fc01e 100644
--- a/inc/ABRTException.h
+++ b/inc/ABRTException.h
@@ -12,7 +12,6 @@ typedef enum {
EXCEP_DL,
EXCEP_PLUGIN,
EXCEP_ERROR,
- EXCEP_FATAL,
} abrt_exception_t;
/* std::exception is a class with virtual members.
diff --git a/src/Daemon/CommLayerServerSocket.h b/src/Daemon/CommLayerServerSocket.h
index baca195d..d1f464cc 100644
--- a/src/Daemon/CommLayerServerSocket.h
+++ b/src/Daemon/CommLayerServerSocket.h
@@ -28,7 +28,7 @@ class CCommLayerServerSocket : public CCommLayerServer
virtual vector_crash_infos_t GetCrashInfos(const std::string& pSender);
virtual report_status_t Report(const map_crash_report_t& pReport, const std::string& pSender);
- virtual bool DeleteDebugDump(const std::string& pUUID, const std::string& pSender);
+ virtual void DeleteDebugDump(const std::string& pUUID, const std::string& pSender);
virtual void Crash(const std::string& arg1);
};
diff --git a/src/Daemon/CrashWatcher.cpp b/src/Daemon/CrashWatcher.cpp
index 7f19ea32..1606f86d 100644
--- a/src/Daemon/CrashWatcher.cpp
+++ b/src/Daemon/CrashWatcher.cpp
@@ -69,27 +69,15 @@ vector_crash_infos_t GetCrashInfos(const char *pUID)
retval.push_back(info);
break;
case MW_ERROR:
- error_msg("Can't find dump directory for UUID %s, deleting from database", uuid);
- DeleteCrashInfoInDB(uuid, uid);
- break;
- case MW_FILE_ERROR:
- error_msg("Can't open file in dump directory for UUID %s, deleting", uuid);
- {
- std::string debugDumpDir = DeleteCrashInfoInDB(uuid, uid);
- delete_debug_dump_dir(debugDumpDir.c_str());
- }
- break;
- default:
+ error_msg("Dump directory for UUID %s doesn't exist or misses crucial files, deleting", uuid);
+ /* Deletes both DB record and dump dir */
+ DeleteDebugDump(uuid, uid);
break;
}
}
}
catch (CABRTException& e)
{
- if (e.type() == EXCEP_FATAL)
- {
- throw e;
- }
error_msg("%s", e.what());
}
@@ -126,12 +114,9 @@ map_crash_report_t CreateReport(const char* pUUID, const char* pUID, int force)
case MW_PLUGIN_ERROR:
error_msg("Particular analyzer plugin isn't loaded or there is an error within plugin(s)");
break;
- case MW_CORRUPTED:
- case MW_FILE_ERROR:
default:
error_msg("Corrupted crash with UUID %s, deleting", pUUID);
- std::string debugDumpDir = DeleteCrashInfoInDB(pUUID, pUID);
- delete_debug_dump_dir(debugDumpDir.c_str());
+ DeleteDebugDump(pUUID, pUID);
break;
}
return crashReport;
@@ -204,40 +189,39 @@ int CreateReportThread(const char* pUUID, const char* pUID, int force, const cha
return r;
}
-bool DeleteDebugDump(const char *pUUID, const char *pUID)
+
+/* Remove dump dir and its DB record */
+void DeleteDebugDump(const char *pUUID, const char *pUID)
{
try
{
- std::string debugDumpDir = DeleteCrashInfoInDB(pUUID, pUID);
- delete_debug_dump_dir(debugDumpDir.c_str());
+ CDatabase* database = g_pPluginManager->GetDatabase(g_settings_sDatabase.c_str());
+ database->Connect();
+ database_row_t row = database->GetRow(pUUID, pUID);
+ database->DeleteRow(pUUID, pUID);
+ database->DisConnect();
+
+ delete_debug_dump_dir(row.m_sDebugDumpDir.c_str());
}
catch (CABRTException& e)
{
- if (e.type() == EXCEP_FATAL)
- {
- throw e;
- }
error_msg("%s", e.what());
- return false;
}
- return true;
}
-bool DeleteDebugDump_by_dir(const char *dump_dir)
+void DeleteDebugDump_by_dir(const char *dump_dir)
{
try
{
- DeleteCrashInfosInDB_by_dir(dump_dir);
+ CDatabase* database = g_pPluginManager->GetDatabase(g_settings_sDatabase.c_str());
+ database->Connect();
+ database->DeleteRows_by_dir(dump_dir);
+ database->DisConnect();
+
delete_debug_dump_dir(dump_dir);
}
catch (CABRTException& e)
{
- if (e.type() == EXCEP_FATAL)
- {
- throw e;
- }
error_msg("%s", e.what());
- return false;
}
- return true;
}
diff --git a/src/Daemon/CrashWatcher.h b/src/Daemon/CrashWatcher.h
index 3f543e18..a8064367 100644
--- a/src/Daemon/CrashWatcher.h
+++ b/src/Daemon/CrashWatcher.h
@@ -51,7 +51,7 @@ class CCrashWatcher
vector_crash_infos_t GetCrashInfos(const char *pUID);
int CreateReportThread(const char* pUUID, const char* pUID, int force, const char* pSender);
map_crash_report_t CreateReport(const char* pUUID, const char* pUID, int force);
-bool DeleteDebugDump(const char *pUUID, const char *pUID);
-bool DeleteDebugDump_by_dir(const char *dump_dir);
+void DeleteDebugDump(const char *pUUID, const char *pUID);
+void DeleteDebugDump_by_dir(const char *dump_dir);
#endif
diff --git a/src/Daemon/Daemon.cpp b/src/Daemon/Daemon.cpp
index 6f901f39..f9910dce 100644
--- a/src/Daemon/Daemon.cpp
+++ b/src/Daemon/Daemon.cpp
@@ -343,11 +343,6 @@ static void FindNewDumps(const char* pPath)
VERB1 log("Already saved crash %s, deleting", itt->c_str());
delete_debug_dump_dir(itt->c_str());
break;
- case MW_BLACKLISTED:
- case MW_CORRUPTED:
- case MW_PACKAGE_ERROR:
- case MW_GPG_ERROR:
- case MW_FILE_ERROR:
default:
log("Corrupted or bad crash %s (res:%d), deleting", itt->c_str(), (int)res);
delete_debug_dump_dir(itt->c_str());
@@ -356,10 +351,6 @@ static void FindNewDumps(const char* pPath)
}
catch (CABRTException& e)
{
- if (e.type() == EXCEP_FATAL)
- {
- throw e;
- }
error_msg("%s", e.what());
}
}
@@ -545,12 +536,7 @@ static gboolean handle_inotify_cb(GIOChannel *gio, GIOCondition condition, gpoin
}
catch (CABRTException& e)
{
- error_msg(e.what());
- if (e.type() == EXCEP_FATAL)
- {
- free(buf);
- return -1;
- }
+ error_msg("%s", e.what());
}
catch (...)
{
diff --git a/src/Daemon/MiddleWare.cpp b/src/Daemon/MiddleWare.cpp
index 676f168a..8528f644 100644
--- a/src/Daemon/MiddleWare.cpp
+++ b/src/Daemon/MiddleWare.cpp
@@ -520,26 +520,6 @@ report_status_t Report(const map_crash_report_t& pCrashReport,
return ret;
}
-std::string DeleteCrashInfoInDB(const char *pUUID,
- const char *pUID)
-{
- CDatabase* database = g_pPluginManager->GetDatabase(g_settings_sDatabase.c_str());
- database->Connect();
- database_row_t row = database->GetRow(pUUID, pUID);
- database->DeleteRow(pUUID, pUID);
- database->DisConnect();
-
- return row.m_sDebugDumpDir;
-}
-
-void DeleteCrashInfosInDB_by_dir(const char *dump_dir)
-{
- CDatabase* database = g_pPluginManager->GetDatabase(g_settings_sDatabase.c_str());
- database->Connect();
- database->DeleteRows_by_dir(dump_dir);
- database->DisConnect();
-}
-
/**
* Check whether particular debugdump directory is saved
* in database. This check is done together with an UID of an user.
@@ -861,10 +841,6 @@ mw_result_t FillCrashInfo(const char *pUUID,
catch (CABRTException& e)
{
error_msg("%s", e.what());
- if (e.type() == EXCEP_DD_LOAD)
- {
- return MW_FILE_ERROR;
- }
return MW_ERROR;
}
diff --git a/src/Daemon/MiddleWare.h b/src/Daemon/MiddleWare.h
index 44fa3b6b..b2b58dcd 100644
--- a/src/Daemon/MiddleWare.h
+++ b/src/Daemon/MiddleWare.h
@@ -105,17 +105,6 @@ report_status_t Report(const map_crash_report_t& pCrashReport,
std::string getDebugDumpDir( const char *pUUID,
const char *pUID);
/**
- * Deletes a row from database. If a deleting is
- * successfull, it returns a debugdump directort, which is not
- * deleted. Otherwise, it returns empty string.
- * @param pUUID A local UUID of a crash.
- * @param pUID An UID of an user.
- * @return A debugdump directory.
- */
-std::string DeleteCrashInfoInDB(const char *pUUID,
- const char *pUID);
-void DeleteCrashInfosInDB_by_dir(const char *dump_dir);
-/**
* Saves debugdump into database. If saving is successful,
* it fills crash info.
* @param pDebugDumpDir A debugdump directory.