| Index: net/extras/sqlite/sqlite_channel_id_store.cc
|
| diff --git a/net/extras/sqlite/sqlite_channel_id_store.cc b/net/extras/sqlite/sqlite_channel_id_store.cc
|
| index 56c6f6b9c03c52e8ffc08da9e5f8d8864d2c9cef..10fb2f974871b24d2ac12684719181c7f8a4bc57 100644
|
| --- a/net/extras/sqlite/sqlite_channel_id_store.cc
|
| +++ b/net/extras/sqlite/sqlite_channel_id_store.cc
|
| @@ -100,6 +100,9 @@ class SQLiteChannelIDStore::Backend
|
|
|
| void SetForceKeepSessionState();
|
|
|
| + // Posts a task to flush pending operations to the database.
|
| + void Flush();
|
| +
|
| private:
|
| friend class base::RefCountedThreadSafe<SQLiteChannelIDStore::Backend>;
|
|
|
| @@ -481,17 +484,10 @@ void SQLiteChannelIDStore::Backend::DeleteAllInList(
|
| void SQLiteChannelIDStore::Backend::BatchOperation(
|
| PendingOperation::OperationType op,
|
| const DefaultChannelIDStore::ChannelID& channel_id) {
|
| - // These thresholds used to be 30 seconds or 512 outstanding operations (the
|
| - // same values used in CookieMonster). Since cookies can be bound to Channel
|
| - // IDs, it's possible for a cookie to get committed to the cookie database
|
| - // before the Channel ID it is bound to gets committed. Decreasing these
|
| - // thresholds increases the chance that the Channel ID will be committed
|
| - // before or at the same time as the cookie.
|
| -
|
| - // Commit every 2 seconds.
|
| - static const int kCommitIntervalMs = 2 * 1000;
|
| - // Commit right away if we have more than 3 outstanding operations.
|
| - static const size_t kCommitAfterBatchSize = 3;
|
| + // Commit every 30 seconds.
|
| + static const int kCommitIntervalMs = 30 * 1000;
|
| + // Commit right away if we have more than 512 outstanding operations.
|
| + static const size_t kCommitAfterBatchSize = 512;
|
|
|
| // We do a full copy of the cert here, and hopefully just here.
|
| std::unique_ptr<PendingOperation> po(new PendingOperation(op, channel_id));
|
| @@ -538,6 +534,11 @@ void SQLiteChannelIDStore::Backend::PrunePendingOperationsForDeletes(
|
| }
|
| }
|
|
|
| +void SQLiteChannelIDStore::Backend::Flush() {
|
| + background_task_runner_->PostTask(FROM_HERE,
|
| + base::Bind(&Backend::Commit, this));
|
| +}
|
| +
|
| void SQLiteChannelIDStore::Backend::Commit() {
|
| DCHECK(background_task_runner_->RunsTasksOnCurrentThread());
|
|
|
| @@ -687,6 +688,10 @@ void SQLiteChannelIDStore::SetForceKeepSessionState() {
|
| backend_->SetForceKeepSessionState();
|
| }
|
|
|
| +void SQLiteChannelIDStore::Flush() {
|
| + backend_->Flush();
|
| +}
|
| +
|
| SQLiteChannelIDStore::~SQLiteChannelIDStore() {
|
| backend_->Close();
|
| // We release our reference to the Backend, though it will probably still have
|
|
|