mirror of
https://github.com/chromium/crashpad.git
synced 2025-03-09 22:16:13 +00:00
Create the PruneCrashReportsThread in the handler.
This will prune the database on a daily basis, in accordance with the specified condition. BUG=crashpad:22 R=mark@chromium.org Review URL: https://codereview.chromium.org/1534503002 .
This commit is contained in:
parent
5e24471188
commit
18a2941305
@ -38,12 +38,14 @@
|
|||||||
'sources': [
|
'sources': [
|
||||||
'crash_report_upload_thread.cc',
|
'crash_report_upload_thread.cc',
|
||||||
'crash_report_upload_thread.h',
|
'crash_report_upload_thread.h',
|
||||||
|
'handler_main.cc',
|
||||||
|
'handler_main.h',
|
||||||
'mac/crash_report_exception_handler.cc',
|
'mac/crash_report_exception_handler.cc',
|
||||||
'mac/crash_report_exception_handler.h',
|
'mac/crash_report_exception_handler.h',
|
||||||
'mac/exception_handler_server.cc',
|
'mac/exception_handler_server.cc',
|
||||||
'mac/exception_handler_server.h',
|
'mac/exception_handler_server.h',
|
||||||
'handler_main.cc',
|
'prune_crash_reports_thread.cc',
|
||||||
'handler_main.h',
|
'prune_crash_reports_thread.h',
|
||||||
'win/crash_report_exception_handler.cc',
|
'win/crash_report_exception_handler.cc',
|
||||||
'win/crash_report_exception_handler.h',
|
'win/crash_report_exception_handler.h',
|
||||||
],
|
],
|
||||||
|
@ -31,8 +31,10 @@
|
|||||||
#include "build/build_config.h"
|
#include "build/build_config.h"
|
||||||
#include "client/crash_report_database.h"
|
#include "client/crash_report_database.h"
|
||||||
#include "client/crashpad_client.h"
|
#include "client/crashpad_client.h"
|
||||||
|
#include "client/prune_crash_reports.h"
|
||||||
#include "tools/tool_support.h"
|
#include "tools/tool_support.h"
|
||||||
#include "handler/crash_report_upload_thread.h"
|
#include "handler/crash_report_upload_thread.h"
|
||||||
|
#include "handler/prune_crash_reports_thread.h"
|
||||||
#include "util/file/file_io.h"
|
#include "util/file/file_io.h"
|
||||||
#include "util/stdlib/map_insert.h"
|
#include "util/stdlib/map_insert.h"
|
||||||
#include "util/stdlib/string_number_conversion.h"
|
#include "util/stdlib/string_number_conversion.h"
|
||||||
@ -372,12 +374,17 @@ int HandlerMain(int argc, char* argv[]) {
|
|||||||
CrashReportUploadThread upload_thread(database.get(), options.url);
|
CrashReportUploadThread upload_thread(database.get(), options.url);
|
||||||
upload_thread.Start();
|
upload_thread.Start();
|
||||||
|
|
||||||
|
PruneCrashReportThread prune_thread(database.get(),
|
||||||
|
PruneCondition::GetDefault());
|
||||||
|
prune_thread.Start();
|
||||||
|
|
||||||
CrashReportExceptionHandler exception_handler(
|
CrashReportExceptionHandler exception_handler(
|
||||||
database.get(), &upload_thread, &options.annotations);
|
database.get(), &upload_thread, &options.annotations);
|
||||||
|
|
||||||
exception_handler_server.Run(&exception_handler);
|
exception_handler_server.Run(&exception_handler);
|
||||||
|
|
||||||
upload_thread.Stop();
|
upload_thread.Stop();
|
||||||
|
prune_thread.Stop();
|
||||||
|
|
||||||
return EXIT_SUCCESS;
|
return EXIT_SUCCESS;
|
||||||
}
|
}
|
||||||
|
42
handler/prune_crash_reports_thread.cc
Normal file
42
handler/prune_crash_reports_thread.cc
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
// Copyright 2016 The Crashpad Authors. All rights reserved.
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
|
#include "handler/prune_crash_reports_thread.h"
|
||||||
|
|
||||||
|
#include "client/prune_crash_reports.h"
|
||||||
|
|
||||||
|
namespace crashpad {
|
||||||
|
|
||||||
|
PruneCrashReportThread::PruneCrashReportThread(
|
||||||
|
CrashReportDatabase* database,
|
||||||
|
scoped_ptr<PruneCondition> condition)
|
||||||
|
: thread_(60 * 60 * 24, this),
|
||||||
|
condition_(condition.Pass()),
|
||||||
|
database_(database) {}
|
||||||
|
|
||||||
|
PruneCrashReportThread::~PruneCrashReportThread() {}
|
||||||
|
|
||||||
|
void PruneCrashReportThread::Start() {
|
||||||
|
thread_.Start(60 * 10);
|
||||||
|
}
|
||||||
|
|
||||||
|
void PruneCrashReportThread::Stop() {
|
||||||
|
thread_.Stop();
|
||||||
|
}
|
||||||
|
|
||||||
|
void PruneCrashReportThread::DoWork(const WorkerThread* thread) {
|
||||||
|
PruneCrashReportDatabase(database_, condition_.get());
|
||||||
|
}
|
||||||
|
|
||||||
|
} // namespace crashpad
|
75
handler/prune_crash_reports_thread.h
Normal file
75
handler/prune_crash_reports_thread.h
Normal file
@ -0,0 +1,75 @@
|
|||||||
|
// Copyright 2016 The Crashpad Authors. All rights reserved.
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
|
#ifndef CRASHPAD_HANDLER_PRUNE_CRASH_REPORTS_THREAD_H_
|
||||||
|
#define CRASHPAD_HANDLER_PRUNE_CRASH_REPORTS_THREAD_H_
|
||||||
|
|
||||||
|
#include "base/basictypes.h"
|
||||||
|
#include "base/memory/scoped_ptr.h"
|
||||||
|
#include "util/thread/worker_thread.h"
|
||||||
|
|
||||||
|
namespace crashpad {
|
||||||
|
|
||||||
|
class CrashReportDatabase;
|
||||||
|
class PruneCondition;
|
||||||
|
|
||||||
|
//! \brief A thread that periodically prunes crash reports from the database
|
||||||
|
//! using the specified condition.
|
||||||
|
//!
|
||||||
|
//! After the thread is started, the database is pruned using the condition
|
||||||
|
//! every 24 hours. Upon calling Start(), the thread waits 10 minutes before
|
||||||
|
//! performing the initial prune operation.
|
||||||
|
class PruneCrashReportThread : public WorkerThread::Delegate {
|
||||||
|
public:
|
||||||
|
//! \brief Constructs a new object.
|
||||||
|
//!
|
||||||
|
//! \param[in] database The database to prune crash reports from.
|
||||||
|
//! \param[in] condition The condition used to evaluate crash reports for
|
||||||
|
//! pruning.
|
||||||
|
PruneCrashReportThread(CrashReportDatabase* database,
|
||||||
|
scoped_ptr<PruneCondition> condition);
|
||||||
|
~PruneCrashReportThread();
|
||||||
|
|
||||||
|
//! \brief Starts a dedicated pruning thread.
|
||||||
|
//!
|
||||||
|
//! The thread waits before running the initial prune, so as to not interfere
|
||||||
|
//! with any startup-related IO performed by the client.
|
||||||
|
//!
|
||||||
|
//! This method may only be be called on a newly-constructed object or after
|
||||||
|
//! a call to Stop().
|
||||||
|
void Start();
|
||||||
|
|
||||||
|
//! \brief Stops the pruning thread.
|
||||||
|
//!
|
||||||
|
//! This method must only be called after Start(). If Start() has been called,
|
||||||
|
//! this method must be called before destroying an object of this class.
|
||||||
|
//!
|
||||||
|
//! This method may be called from any thread other than the pruning thread.
|
||||||
|
//! It is expected to only be called from the same thread that called Start().
|
||||||
|
void Stop();
|
||||||
|
|
||||||
|
private:
|
||||||
|
// WorkerThread::Delegate:
|
||||||
|
void DoWork(const WorkerThread* thread) override;
|
||||||
|
|
||||||
|
WorkerThread thread_;
|
||||||
|
scoped_ptr<PruneCondition> condition_;
|
||||||
|
CrashReportDatabase* database_; // weak
|
||||||
|
|
||||||
|
DISALLOW_COPY_AND_ASSIGN(PruneCrashReportThread);
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace crashpad
|
||||||
|
|
||||||
|
#endif // CRASHPAD_HANDLER_PRUNE_CRASH_REPORTS_THREAD_H_
|
Loading…
x
Reference in New Issue
Block a user