From 14d2d68cf79e58235475d1ca08453a17299f0c40 Mon Sep 17 00:00:00 2001 From: bharatnc Date: Thu, 4 Feb 2021 11:34:18 -0800 Subject: [PATCH] ServerUUID - generate random uuid --- src/Common/ServerUUIDFile.cpp | 31 +++++++++++++++++++++++++------ src/Common/ServerUUIDFile.h | 5 ++--- 2 files changed, 27 insertions(+), 9 deletions(-) diff --git a/src/Common/ServerUUIDFile.cpp b/src/Common/ServerUUIDFile.cpp index 76dc3996dd4..92fc94e34d9 100644 --- a/src/Common/ServerUUIDFile.cpp +++ b/src/Common/ServerUUIDFile.cpp @@ -5,10 +5,9 @@ #include #include +#include #include #include -#include -#include #include #include @@ -28,10 +27,30 @@ extern const int CANNOT_SEEK_THROUGH_FILE; } -ServerUUIDFile::FillFunction ServerUUIDFile::write_server_uuid = [](WriteBuffer & out) -{ - // TODO: compute random uuid - out << "736833cf-2224-475b-82e2-cbc114407345"; +ServerUUIDFile::FillFunction ServerUUIDFile::write_server_uuid = [](WriteBuffer & out) { + union + { + char bytes[16]; + struct + { + UInt64 a; + UInt64 b; + } words; + __uint128_t uuid; + } random; + + random.words.a = thread_local_rng(); //-V656 + random.words.b = thread_local_rng(); //-V656 + + struct QueryUUID : Poco::UUID + { + QueryUUID(const char * bytes, Poco::UUID::Version version) + : Poco::UUID(bytes, version) {} + }; + + auto server_uuid = QueryUUID(random.bytes, Poco::UUID::UUID_RANDOM).toString(); + + out << server_uuid; }; diff --git a/src/Common/ServerUUIDFile.h b/src/Common/ServerUUIDFile.h index 1783527d75a..b85ce91d8a2 100644 --- a/src/Common/ServerUUIDFile.h +++ b/src/Common/ServerUUIDFile.h @@ -1,13 +1,12 @@ #pragma once -#include #include +#include #include namespace DB { - class WriteBuffer; @@ -16,7 +15,7 @@ class WriteBuffer; class ServerUUIDFile : private boost::noncopyable { public: - using FillFunction = std::function; + using FillFunction = std::function; ServerUUIDFile(std::string path_, FillFunction fill_); ~ServerUUIDFile();