int LMDBEngine::CommitBatchWrite() { BatchHolder& holder = m_batch_local.GetValue(); holder.ReleaseRef(); if (holder.EmptyRef()) { return FlushWriteBatch(holder); } return 0; }
int LevelDBEngine::CommitBatchWrite() { ContextHolder& holder = m_context.GetValue(); holder.ReleaseRef(); if (holder.EmptyRef()) { return FlushWriteBatch(holder); } return 0; }
int LevelDBEngine::Del(const Slice& key) { leveldb::Status s = leveldb::Status::OK(); ContextHolder& holder = m_context.GetValue(); if (!holder.EmptyRef()) { holder.Del(key); if (holder.count >= (uint32) m_cfg.batch_commit_watermark) { FlushWriteBatch(holder); } } else { s = m_db->Delete(leveldb::WriteOptions(), LEVELDB_SLICE(key)); } return s.ok() ? 0 : -1; }
int LevelDBEngine::Put(const Slice& key, const Slice& value) { leveldb::Status s = leveldb::Status::OK(); ContextHolder& holder = m_context.GetValue(); int ret = 0; if (!holder.EmptyRef()) { holder.Put(key, value); if (holder.count >= (uint32) m_cfg.batch_commit_watermark) { FlushWriteBatch(holder); } } else { s = m_db->Put(leveldb::WriteOptions(), LEVELDB_SLICE(key), LEVELDB_SLICE(value)); if (!s.ok()) { WARN_LOG("Failed to write data for reason:%s", s.ToString().c_str()); ret = -1; } } return ret; }