Skip to content

Commit

Permalink
fixup: refactored some exception code
Browse files Browse the repository at this point in the history
  • Loading branch information
franku committed Oct 15, 2019
1 parent 160e85c commit 7f18805
Show file tree
Hide file tree
Showing 6 changed files with 49 additions and 73 deletions.
6 changes: 2 additions & 4 deletions core/src/dird/ua_status.cc
Expand Up @@ -1169,10 +1169,8 @@ static void ListTerminatedJobs(UaContext* ua)
"\n"));
}

std::vector<RecentJobResultsList::JobResult> last_jobs =
RecentJobResultsList::Get();

for (const auto je : last_jobs) {
for (const RecentJobResultsList::JobResult& je :
RecentJobResultsList::Get()) {
char JobName[MAX_NAME_LENGTH];
const char* termstat;

Expand Down
7 changes: 2 additions & 5 deletions core/src/filed/status.cc
Expand Up @@ -313,7 +313,6 @@ static void ListRunningJobs(StatusPacket* sp)
static void ListTerminatedJobs(StatusPacket* sp)
{
int len;
struct RecentJobResultsList::JobResult* je;
PoolMem msg(PM_MESSAGE);
char level[10], dt[MAX_TIME_LENGTH], b1[30], b2[30];

Expand All @@ -339,10 +338,8 @@ static void ListTerminatedJobs(StatusPacket* sp)
sendit(msg, len, sp);
}

std::vector<RecentJobResultsList::JobResult> last_jobs =
RecentJobResultsList::Get();

for (const auto je : last_jobs) {
for (const RecentJobResultsList::JobResult& je :
RecentJobResultsList::Get()) {
char* p;
char JobName[MAX_NAME_LENGTH];
const char* termstat;
Expand Down
35 changes: 13 additions & 22 deletions core/src/lib/bsys.cc
Expand Up @@ -588,29 +588,19 @@ void ReadStateFile(char* dir, const char* progname, int port)
try {
file.open(filename, std::ios::binary);
file.read(reinterpret_cast<char*>(&hdr), sizeof(StateFileHeader));
} catch (std::system_error& e) {
if (!CheckHeader(hdr)) { return; }
if (hdr.last_jobs_addr) {
Dmsg1(100, "ReadStateFile seek to %d\n", (int)hdr.last_jobs_addr);
file.seekg(hdr.last_jobs_addr);
}
} catch (const std::system_error& e) {
BErrNo be;
Dmsg3(100, "Could not open and read state file. size=%d: ERR=%s - %s\n",
sizeof(StateFileHeader), be.bstrerror(), e.code().message().c_str());
return;
} catch (...) {
Dmsg0(100, "Could not open or read file. Some error occurred");
}

if (!CheckHeader(hdr)) { return; }

Dmsg1(100, "ReadStateFile seek to %d\n", (int)hdr.last_jobs_addr);

try {
if (hdr.last_jobs_addr) { file.seekg(hdr.last_jobs_addr); }
} catch (std::system_error& e) {
BErrNo be;
Dmsg3(100, "Could not seek filepointer. ERR=%s - %s\n",
sizeof(StateFileHeader), be.bstrerror(), e.code().message().c_str());
return;
} catch (...) {
Dmsg0(100, "Could not seek filepointer. Some error occurred");
return;
} catch (const std::exception& e) {
Dmsg0(100, "Could not open or read file. Some error occurred: %s\n",
e.what());
}

if (!RecentJobResultsList::ImportFromFile(file)) { return; }
Expand Down Expand Up @@ -660,13 +650,14 @@ void WriteStateFile(char* dir, const char* progname, int port)

file.seekp(0);
file.write(reinterpret_cast<char*>(&state_hdr), sizeof(StateFileHeader));
} catch (std::system_error& e) {
} catch (const std::system_error& e) {
BErrNo be;
Dmsg3(100, "Could not seek filepointer. ERR=%s - %s\n",
sizeof(StateFileHeader), be.bstrerror(), e.code().message().c_str());
return;
} catch (...) {
Dmsg0(100, "Could not seek filepointer. Some error occurred");
} catch (const std::exception& e) {
Dmsg0(100, "Could not seek filepointer. Some error occurred: %s\n",
e.what());
return;
}

Expand Down
62 changes: 27 additions & 35 deletions core/src/lib/recent_job_results_list.cc
Expand Up @@ -56,41 +56,33 @@ bool RecentJobResultsList::ImportFromFile(std::ifstream& file)

try {
file.read(reinterpret_cast<char*>(&num), sizeof(num));
} catch (std::system_error& e) {
BErrNo be;
Dmsg3(010, "Could not open and read state file. ERR=%s - %s\n",
be.bstrerror(), e.code().message().c_str());
return false;
} catch (...) {
Dmsg0(100, "Could not read file. Some error occurred");
return false;
}
Dmsg1(100, "Read num_items=%d\n", num);
if (num > 4 * max_count_recent_job_results) { /* sanity check */
return false;
}

std::lock_guard<std::mutex> m(mutex);

for (; num; num--) {
RecentJobResultsList::JobResult job;
try {
file.read(reinterpret_cast<char*>(&job), sizeof(job));
} catch (std::system_error& e) {
BErrNo be;
Dmsg3(010, "Could not read state file. ERR=%s - %s\n", be.bstrerror(),
e.code().message().c_str());
return false;
} catch (...) {
Dmsg0(100, "Could not read file. Some error occurred");
Dmsg1(100, "Read num_items=%d\n", num);
if (num > 4 * max_count_recent_job_results) { /* sanity check */
return false;
}
if (job.JobId > 0) {
recent_job_results_list.push_back(job);
if (recent_job_results_list.size() > max_count_recent_job_results) {
recent_job_results_list.erase(recent_job_results_list.begin());

std::lock_guard<std::mutex> m(mutex);

for (; num; num--) {
RecentJobResultsList::JobResult job;
file.read(reinterpret_cast<char*>(&job), sizeof(job));
if (job.JobId > 0) {
recent_job_results_list.push_back(job);
if (recent_job_results_list.size() > max_count_recent_job_results) {
recent_job_results_list.erase(recent_job_results_list.begin());
}
}
}
} catch (const std::system_error& e) {
BErrNo be;
Dmsg3(010, "Could not open or read state file. ERR=%s - %s\n",
be.bstrerror(), e.code().message().c_str());
return false;
} catch (const std::exception& e) {
Dmsg0(100, "Could not open or read file. Some error occurred: %s\n",
e.what());
return false;
}
return true;
}
Expand All @@ -111,17 +103,17 @@ bool RecentJobResultsList::ExportToFile(std::ofstream& file)
try {
file.write(reinterpret_cast<char*>(&num), sizeof(num));

for (auto je : recent_job_results_list) {
file.write(reinterpret_cast<char*>(&je),
for (const auto& je : recent_job_results_list) {
file.write(reinterpret_cast<const char*>(&je),
sizeof(struct RecentJobResultsList::JobResult));
}
} catch (std::system_error& e) {
} catch (const std::system_error& e) {
BErrNo be;
Dmsg3(010, "Could not write state file. ERR=%s - %s\n", be.bstrerror(),
e.code().message().c_str());
return false;
} catch (...) {
Dmsg0(100, "Could not write file. Some error occurred");
} catch (const std::exception& e) {
Dmsg0(100, "Could not write file. Some error occurred: %s\n", e.what());
return false;
}
}
Expand Down
6 changes: 2 additions & 4 deletions core/src/stored/status.cc
Expand Up @@ -844,10 +844,8 @@ static void ListTerminatedJobs(StatusPacket* sp)
sendit(msg, len, sp);
}

std::vector<RecentJobResultsList::JobResult> last_jobs =
RecentJobResultsList::Get();

for (const auto je : last_jobs) {
for (const RecentJobResultsList::JobResult& je :
RecentJobResultsList::Get()) {
char JobName[MAX_NAME_LENGTH];
const char* termstat;

Expand Down
6 changes: 3 additions & 3 deletions core/src/tests/recent_job_results_list.cc
Expand Up @@ -91,11 +91,11 @@ static bool create_file(std::string path, std::string filename)
file1_orig.open(filename1_orig, std::ios::binary);
file1.open(filename1, std::ios::binary);
file1 << file1_orig.rdbuf();
} catch (std::system_error& e) {
} catch (const std::system_error& e) {
std::cout << e.code().message().c_str() << std::endl;
return false;
} catch (...) {
std::cout << "Unspecific error occurred" << std::endl;
} catch (const std::exception& e) {
std::cout << "Unspecific error occurred: " << e.what() << std::endl;
return false;
}
return true;
Expand Down

0 comments on commit 7f18805

Please sign in to comment.