mirror of
https://github.com/ton-blockchain/ton
synced 2025-03-09 15:40:10 +00:00
updated submodules, bugfixes
- added new fift/func code for validator complaint creation - bugfixes in validator - updates in tonlib - new versions of rocksdb/abseil - hardfork support
This commit is contained in:
parent
16a4566091
commit
9f008b129f
129 changed files with 8438 additions and 879 deletions
|
@ -55,6 +55,10 @@ class KeyValue : public KeyValueReader {
|
|||
virtual Status set(Slice key, Slice value) = 0;
|
||||
virtual Status erase(Slice key) = 0;
|
||||
|
||||
virtual Status begin_write_batch() = 0;
|
||||
virtual Status commit_write_batch() = 0;
|
||||
virtual Status abort_write_batch() = 0;
|
||||
|
||||
virtual Status begin_transaction() = 0;
|
||||
virtual Status commit_transaction() = 0;
|
||||
virtual Status abort_transaction() = 0;
|
||||
|
@ -86,6 +90,16 @@ class PrefixedKeyValue : public KeyValue {
|
|||
return kv_->erase(PSLICE() << prefix_ << key);
|
||||
}
|
||||
|
||||
Status begin_write_batch() override {
|
||||
return kv_->begin_write_batch();
|
||||
}
|
||||
Status commit_write_batch() override {
|
||||
return kv_->commit_write_batch();
|
||||
}
|
||||
Status abort_write_batch() override {
|
||||
return kv_->abort_write_batch();
|
||||
}
|
||||
|
||||
Status begin_transaction() override {
|
||||
return kv_->begin_transaction();
|
||||
}
|
||||
|
|
|
@ -61,6 +61,15 @@ std::unique_ptr<KeyValueReader> MemoryKeyValue::snapshot() {
|
|||
std::string MemoryKeyValue::stats() const {
|
||||
return PSTRING() << "MemoryKeyValueStats{" << tag("get_count", get_count_) << "}";
|
||||
}
|
||||
Status MemoryKeyValue::begin_write_batch() {
|
||||
UNREACHABLE();
|
||||
}
|
||||
Status MemoryKeyValue::commit_write_batch() {
|
||||
UNREACHABLE();
|
||||
}
|
||||
Status MemoryKeyValue::abort_write_batch() {
|
||||
UNREACHABLE();
|
||||
}
|
||||
|
||||
Status MemoryKeyValue::begin_transaction() {
|
||||
UNREACHABLE();
|
||||
|
|
|
@ -29,6 +29,10 @@ class MemoryKeyValue : public KeyValue {
|
|||
Status erase(Slice key) override;
|
||||
Result<size_t> count(Slice prefix) override;
|
||||
|
||||
Status begin_write_batch() override;
|
||||
Status commit_write_batch() override;
|
||||
Status abort_write_batch() override;
|
||||
|
||||
Status begin_transaction() override;
|
||||
Status commit_transaction() override;
|
||||
Status abort_transaction() override;
|
||||
|
|
|
@ -78,7 +78,18 @@ Result<RocksDb> RocksDb::open(std::string path) {
|
|||
options.bytes_per_sync = 1 << 20;
|
||||
options.writable_file_max_buffer_size = 2 << 14;
|
||||
options.statistics = statistics;
|
||||
TRY_STATUS(from_rocksdb(rocksdb::OptimisticTransactionDB::Open(options, std::move(path), &db)));
|
||||
rocksdb::OptimisticTransactionDBOptions occ_options;
|
||||
occ_options.validate_policy = rocksdb::OccValidationPolicy::kValidateSerial;
|
||||
rocksdb::ColumnFamilyOptions cf_options(options);
|
||||
std::vector<rocksdb::ColumnFamilyDescriptor> column_families;
|
||||
column_families.push_back(rocksdb::ColumnFamilyDescriptor(rocksdb::kDefaultColumnFamilyName, cf_options));
|
||||
std::vector<rocksdb::ColumnFamilyHandle *> handles;
|
||||
TRY_STATUS(from_rocksdb(
|
||||
rocksdb::OptimisticTransactionDB::Open(options, occ_options, std::move(path), column_families, &handles, &db)));
|
||||
CHECK(handles.size() == 1);
|
||||
// i can delete the handle since DBImpl is always holding a reference to
|
||||
// default column family
|
||||
delete handles[0];
|
||||
}
|
||||
return RocksDb(std::shared_ptr<rocksdb::OptimisticTransactionDB>(db), std::move(statistics));
|
||||
}
|
||||
|
@ -161,31 +172,41 @@ Result<size_t> RocksDb::count(Slice prefix) {
|
|||
return res;
|
||||
}
|
||||
|
||||
Status RocksDb::begin_write_batch() {
|
||||
CHECK(!transaction_);
|
||||
write_batch_ = std::make_unique<rocksdb::WriteBatch>();
|
||||
return Status::OK();
|
||||
}
|
||||
|
||||
Status RocksDb::begin_transaction() {
|
||||
//write_batch_ = std::make_unique<rocksdb::WriteBatch>();
|
||||
CHECK(!write_batch_);
|
||||
rocksdb::WriteOptions options;
|
||||
options.sync = true;
|
||||
transaction_.reset(db_->BeginTransaction(options, {}));
|
||||
return Status::OK();
|
||||
}
|
||||
|
||||
Status RocksDb::commit_transaction() {
|
||||
//CHECK(write_batch_);
|
||||
//auto write_batch = std::move(write_batch_);
|
||||
//rocksdb::WriteOptions options;
|
||||
//options.sync = true;
|
||||
//TRY_STATUS(from_rocksdb(db_->Write(options, write_batch.get())));
|
||||
//return Status::OK();
|
||||
Status RocksDb::commit_write_batch() {
|
||||
CHECK(write_batch_);
|
||||
auto write_batch = std::move(write_batch_);
|
||||
rocksdb::WriteOptions options;
|
||||
options.sync = true;
|
||||
return from_rocksdb(db_->Write(options, write_batch.get()));
|
||||
}
|
||||
|
||||
Status RocksDb::commit_transaction() {
|
||||
CHECK(transaction_);
|
||||
auto res = from_rocksdb(transaction_->Commit());
|
||||
transaction_.reset();
|
||||
return res;
|
||||
auto transaction = std::move(transaction_);
|
||||
return from_rocksdb(transaction->Commit());
|
||||
}
|
||||
|
||||
Status RocksDb::abort_write_batch() {
|
||||
CHECK(write_batch_);
|
||||
write_batch_.reset();
|
||||
return Status::OK();
|
||||
}
|
||||
|
||||
Status RocksDb::abort_transaction() {
|
||||
//CHECK(write_batch_);
|
||||
//write_batch_.reset();
|
||||
CHECK(transaction_);
|
||||
transaction_.reset();
|
||||
return Status::OK();
|
||||
|
|
|
@ -45,6 +45,10 @@ class RocksDb : public KeyValue {
|
|||
Status erase(Slice key) override;
|
||||
Result<size_t> count(Slice prefix) override;
|
||||
|
||||
Status begin_write_batch() override;
|
||||
Status commit_write_batch() override;
|
||||
Status abort_write_batch() override;
|
||||
|
||||
Status begin_transaction() override;
|
||||
Status commit_transaction() override;
|
||||
Status abort_transaction() override;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue