1
0
Fork 0
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:
ton 2020-04-27 16:01:46 +04:00
parent 16a4566091
commit 9f008b129f
129 changed files with 8438 additions and 879 deletions

View file

@ -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();
}

View file

@ -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();

View file

@ -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;

View file

@ -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();

View file

@ -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;