summaryrefslogtreecommitdiff
path: root/db/db_impl/db_impl.cc
diff options
context:
space:
mode:
Diffstat (limited to 'db/db_impl/db_impl.cc')
-rw-r--r--db/db_impl/db_impl.cc16
1 files changed, 11 insertions, 5 deletions
diff --git a/db/db_impl/db_impl.cc b/db/db_impl/db_impl.cc
index 20c3c2bd4..d617fe3e7 100644
--- a/db/db_impl/db_impl.cc
+++ b/db/db_impl/db_impl.cc
@@ -3945,10 +3945,10 @@ Status DBImpl::GetDbSessionId(std::string& session_id) const {
return Status::OK();
}
-void DBImpl::SetDbSessionId() {
+std::string DBImpl::GenerateDbSessionId(Env* env) {
// GenerateUniqueId() generates an identifier that has a negligible
// probability of being duplicated, ~128 bits of entropy
- std::string uuid = env_->GenerateUniqueId();
+ std::string uuid = env->GenerateUniqueId();
// Hash and reformat that down to a more compact format, 20 characters
// in base-36 ([0-9A-Z]), which is ~103 bits of entropy, which is enough
@@ -3959,15 +3959,21 @@ void DBImpl::SetDbSessionId() {
// * Visually distinct from DB id format
uint64_t a = NPHash64(uuid.data(), uuid.size(), 1234U);
uint64_t b = NPHash64(uuid.data(), uuid.size(), 5678U);
- db_session_id_.resize(20);
+ std::string db_session_id;
+ db_session_id.resize(20);
static const char* const base36 = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
size_t i = 0;
for (; i < 10U; ++i, a /= 36U) {
- db_session_id_[i] = base36[a % 36];
+ db_session_id[i] = base36[a % 36];
}
for (; i < 20U; ++i, b /= 36U) {
- db_session_id_[i] = base36[b % 36];
+ db_session_id[i] = base36[b % 36];
}
+ return db_session_id;
+}
+
+void DBImpl::SetDbSessionId() {
+ db_session_id_ = GenerateDbSessionId(env_);
TEST_SYNC_POINT_CALLBACK("DBImpl::SetDbSessionId", &db_session_id_);
}