git: 45ec0da059c5 - main - databases/rocksdb: unbreak with clang13

From: Pietro Cerutti <gahr_at_FreeBSD.org>
Date: Tue, 18 Jan 2022 08:42:10 UTC
The branch main has been updated by gahr:

URL: https://cgit.FreeBSD.org/ports/commit/?id=45ec0da059c5e8251f7615b0c6429d19a6ec0aec

commit 45ec0da059c5e8251f7615b0c6429d19a6ec0aec
Author:     Pietro Cerutti <gahr@FreeBSD.org>
AuthorDate: 2022-01-18 08:40:39 +0000
Commit:     Pietro Cerutti <gahr@FreeBSD.org>
CommitDate: 2022-01-18 08:42:06 +0000

    databases/rocksdb: unbreak with clang13
    
    PR:             261187
    Reported by:    nc@
---
 databases/rocksdb/files/patch-clang13 | 180 ++++++++++++++++++++++++++++++++++
 1 file changed, 180 insertions(+)

diff --git a/databases/rocksdb/files/patch-clang13 b/databases/rocksdb/files/patch-clang13
new file mode 100644
index 000000000000..1de95fda6e94
--- /dev/null
+++ b/databases/rocksdb/files/patch-clang13
@@ -0,0 +1,180 @@
+From 9c6fb26033fe83ff8b931b72dc9d1f8496ad5ebd Mon Sep 17 00:00:00 2001
+From: Jay Zhuang <zjay@fb.com>
+Date: Tue, 11 Jan 2022 10:35:22 -0800
+Subject: [PATCH] Fix clang13 build error (#9374)
+
+Summary: Pull Request resolved: https://github.com/facebook/rocksdb/pull/9374
+
+Test Plan: Add CI for clang13 build
+
+Reviewed By: riversand963
+
+Differential Revision: D33522867
+
+Pulled By: jay-zhuang
+
+fbshipit-source-id: 642756825cf0b51e35861fb847ebaee4611b76ca
+---
+ .circleci/config.yml                    | 22 ++++++++++++++++++++++
+ db/compaction/compaction_picker_test.cc |  6 ++----
+ db/db_basic_test.cc                     |  3 ---
+ db/db_test2.cc                          |  5 -----
+ options/db_options.h                    |  1 -
+ utilities/env_mirror.cc                 |  4 ++++
+ 6 files changed, 28 insertions(+), 13 deletions(-)
+
+diff --git a/.circleci/config.yml b/.circleci/config.yml
+index 05eb3a419bc..42f01a2dd40 100644
+--- .circleci/config.yml.orig
++++ .circleci/config.yml
+@@ -83,6 +83,17 @@ commands:
+             echo "APT::Acquire::Retries \"10\";" | sudo tee -a /etc/apt/apt.conf.d/80-retries # llvm.org unreliable
+             sudo apt-get update -y && sudo apt-get install -y clang-10
+ 
++  install-clang-13:
++    steps:
++      - run:
++          name: Install Clang 13
++          command: |
++            echo "deb http://apt.llvm.org/focal/ llvm-toolchain-focal-13 main" | sudo tee -a /etc/apt/sources.list
++            echo "deb-src http://apt.llvm.org/focal/ llvm-toolchain-focal-13 main" | sudo tee -a /etc/apt/sources.list
++            echo "APT::Acquire::Retries \"10\";" | sudo tee -a /etc/apt/apt.conf.d/80-retries # llvm.org unreliable
++            wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key|sudo apt-key add -
++            sudo apt-get update -y && sudo apt-get install -y clang-13
++
+   install-gflags:
+     steps:
+       - run:
+@@ -396,6 +407,16 @@ jobs:
+       - run: CC=gcc-11 CXX=g++-11 V=1 SKIP_LINK=1 make -j16 all 2>&1 | .circleci/cat_ignore_eagain # Linking broken because libgflags compiled with newer ABI
+       - post-steps
+ 
++  build-linux-clang-13-no_test_run:
++    machine:
++      image: ubuntu-2004:202010-01
++    resource_class: xlarge
++    steps:
++      - pre-steps
++      - install-clang-13
++      - run: CC=clang-13 CXX=clang++-13 USE_CLANG=1 make -j16 all 2>&1 | .circleci/cat_ignore_eagain
++      - post-steps
++
+   # This job is only to make sure the microbench tests are able to run, the benchmark result is not meaningful as the CI host is changing.
+   build-linux-microbench:
+     machine:
+@@ -792,6 +813,7 @@ workflows:
+   build-linux-compilers-no_test_run:
+     jobs:
+       - build-linux-clang-no_test_run
++      - build-linux-clang-13-no_test_run
+       - build-linux-gcc-4_8-no_test_run
+       - build-linux-gcc-8-no_test_run
+       - build-linux-gcc-9-no_test_run
+diff --git a/db/compaction/compaction_picker_test.cc b/db/compaction/compaction_picker_test.cc
+index 6b005db0b4c..1c928ad4ab4 100644
+--- db/compaction/compaction_picker_test.cc.orig
++++ db/compaction/compaction_picker_test.cc
+@@ -964,13 +964,11 @@ TEST_F(CompactionPickerTest, NeedsCompactionFIFO) {
+ 
+   // verify whether compaction is needed based on the current
+   // size of L0 files.
+-  uint64_t current_size = 0;
+   for (int i = 1; i <= kFileCount; ++i) {
+     NewVersionStorage(1, kCompactionStyleFIFO);
+     Add(0, i, ToString((i + 100) * 1000).c_str(),
+-        ToString((i + 100) * 1000 + 999).c_str(),
+-        kFileSize, 0, i * 100, i * 100 + 99);
+-    current_size += kFileSize;
++        ToString((i + 100) * 1000 + 999).c_str(), kFileSize, 0, i * 100,
++        i * 100 + 99);
+     UpdateVersionStorageInfo();
+     ASSERT_EQ(fifo_compaction_picker.NeedsCompaction(vstorage_.get()),
+               vstorage_->CompactionScore(0) >= 1);
+diff --git a/db/db_basic_test.cc b/db/db_basic_test.cc
+index 81ac829b49c..96687ba7433 100644
+--- db/db_basic_test.cc.orig
++++ db/db_basic_test.cc
+@@ -1892,7 +1892,6 @@ TEST_F(DBBasicTest, MultiGetBatchedValueSizeMultiLevelMerge) {
+ 
+   ASSERT_EQ(values.size(), keys.size());
+ 
+-  uint64_t curr_value_size = 0;
+   for (unsigned int j = 0; j < 26; ++j) {
+     int key = j + 10;
+     std::string value;
+@@ -1909,11 +1908,9 @@ TEST_F(DBBasicTest, MultiGetBatchedValueSizeMultiLevelMerge) {
+       value.append(",");
+       value.append("val_mem_" + std::to_string(key));
+     }
+-    curr_value_size += value.size();
+     ASSERT_EQ(values[j], value);
+     ASSERT_OK(statuses[j]);
+   }
+-  // ASSERT_TRUE(curr_value_size <= read_options.value_size_hard_limit);
+ 
+   // All remaning keys status is set Status::Abort
+   for (unsigned int j = 26; j < 40; j++) {
+diff --git a/db/db_test2.cc b/db/db_test2.cc
+index e09d05d45df..c123d7351a7 100644
+--- db/db_test2.cc.orig
++++ db/db_test2.cc
+@@ -2827,7 +2827,6 @@ TEST_F(DBTest2, ReadAmpBitmapLiveInCacheAfterDBClose) {
+     Close();
+     Reopen(options);
+ 
+-    uint64_t total_useful_bytes = 0;
+     std::set<int> read_keys;
+     std::string value;
+     // Iter1: Read half the DB, Read even keys
+@@ -2838,8 +2837,6 @@ TEST_F(DBTest2, ReadAmpBitmapLiveInCacheAfterDBClose) {
+ 
+       if (read_keys.find(i) == read_keys.end()) {
+         auto internal_key = InternalKey(key, 0, ValueType::kTypeValue);
+-        total_useful_bytes +=
+-            GetEncodedEntrySize(internal_key.size(), value.size());
+         read_keys.insert(i);
+       }
+     }
+@@ -2866,8 +2863,6 @@ TEST_F(DBTest2, ReadAmpBitmapLiveInCacheAfterDBClose) {
+ 
+       if (read_keys.find(i) == read_keys.end()) {
+         auto internal_key = InternalKey(key, 0, ValueType::kTypeValue);
+-        total_useful_bytes +=
+-            GetEncodedEntrySize(internal_key.size(), value.size());
+         read_keys.insert(i);
+       }
+     }
+diff --git a/options/db_options.h b/options/db_options.h
+index 5244460e899..d44331b06cf 100644
+--- options/db_options.h.orig
++++ options/db_options.h
+@@ -116,7 +116,6 @@ struct ImmutableDBOptions {
+ struct MutableDBOptions {
+   static const char* kName() { return "MutableDBOptions"; }
+   MutableDBOptions();
+-  explicit MutableDBOptions(const MutableDBOptions& options) = default;
+   explicit MutableDBOptions(const DBOptions& options);
+ 
+   void Dump(Logger* log) const;
+diff --git a/utilities/env_mirror.cc b/utilities/env_mirror.cc
+index 061b9863246..3ea323b4297 100644
+--- utilities/env_mirror.cc.orig
++++ utilities/env_mirror.cc
+@@ -27,13 +27,17 @@ class SequentialFileMirror : public SequentialFile {
+     if (as == Status::OK()) {
+       char* bscratch = new char[n];
+       Slice bslice;
++#ifndef NDEBUG
+       size_t off = 0;
++#endif
+       size_t left = aslice.size();
+       while (left) {
+         Status bs = b_->Read(left, &bslice, bscratch);
++#ifndef NDEBUG
+         assert(as == bs);
+         assert(memcmp(bscratch, scratch + off, bslice.size()) == 0);
+         off += bslice.size();
++#endif
+         left -= bslice.size();
+       }
+       delete[] bscratch;