Skip to content

rocksdb: Upgrade (bump) rocksdb to latest facebook's v7.9.2#49006

Merged
neha-ojha merged 5 commits intoceph:mainfrom
yanghonggang:yhg-upgrade-rocksdb-7.7.3
Feb 28, 2023
Merged

rocksdb: Upgrade (bump) rocksdb to latest facebook's v7.9.2#49006
neha-ojha merged 5 commits intoceph:mainfrom
yanghonggang:yhg-upgrade-rocksdb-7.7.3

Conversation

@yanghonggang
Copy link
Contributor

@yanghonggang yanghonggang commented Nov 22, 2022

Signed-off-by: Yang Honggang yanghonggang_yewu@cmss.chinamobile.com

Contribution Guidelines

Checklist

  • Tracker (select at least one)
    • References tracker ticket
    • Very recent bug; references commit where it was introduced
    • New feature (ticket optional)
    • Doc update (no ticket needed)
    • Code cleanup (no ticket needed)
  • Component impact
    • Affects Dashboard, opened tracker ticket
    • Affects Orchestrator, opened tracker ticket
    • No impact that needs to be tracked
  • Documentation (select at least one)
    • Updates relevant documentation
    • No doc update is appropriate
  • Tests (select at least one)
Show available Jenkins commands
  • jenkins retest this please
  • jenkins test classic perf
  • jenkins test crimson perf
  • jenkins test signed
  • jenkins test make check
  • jenkins test make check arm64
  • jenkins test submodules
  • jenkins test dashboard
  • jenkins test dashboard cephadm
  • jenkins test api
  • jenkins test docs
  • jenkins render docs
  • jenkins test ceph-volume all
  • jenkins test ceph-volume tox
  • jenkins test windows

@markhpc markhpc requested a review from a team December 1, 2022 15:58
@markhpc
Copy link
Member

markhpc commented Dec 1, 2022

@yanghonggang very interesting! We'll need to run through testing, but facebook/rocksdb#9423 sounds like a good rationale to upgrade.

@ormandj
Copy link
Contributor

ormandj commented Dec 19, 2022

@markhpc with #47221 merged, in light of our production findings, we would be very interested in this moving forward since it may address some of the performance impact (at least some stalled writes) when compactions are running behind.

Just reading through the RocksDB change log, there's quite a few others that sound like they might be nice (just one of many examples):

7.7.0: Iterator performance is improved for DeleteRange() users. Internally, iterator will skip to the end of a range tombstone when possible, instead of looping through each key and check individually if a key is range deleted.

DeleteRange() users should see improvement in get/iterator performance from mutable memtable (see #10547).

It looks like 7.8.3 is out, and there have been some bugfixes since 7.7.3, so I do suggest that the PR be updated to reflect the newer version if we're going to spend the effort testing/validating safety/performance.

@yanghonggang yanghonggang force-pushed the yhg-upgrade-rocksdb-7.7.3 branch from 2aa69ba to f615ccd Compare December 27, 2022 07:45
@yanghonggang yanghonggang changed the title rocksdb: Upgrade rocksdb to latest facebook's v7.7.3 rocksdb: Upgrade rocksdb to latest facebook's v7.8.3 Dec 27, 2022
@yanghonggang
Copy link
Contributor Author

It looks like 7.8.3 is out, and there have been some bugfixes since 7.7.3, so I do suggest that the PR be updated to reflect the newer version if we're going to spend the effort testing/validating safety/performance.

Upgrade rocksdb to latest v7.8.3.
@ormandj @markhpc

@jianwei1216
Copy link
Contributor

If we don't make ceph-specific modifications to rocksdb,
we really don't need to maintain ceph/rocksdb.
Using facebook/rocksdb directly can follow up the update of rocksdb more quickly,
saving the work of maintaining ceph/rocksdb and cherry-pick.

@markhpc
Copy link
Member

markhpc commented Jan 12, 2023

@yanghonggang We discussed this at the performance meeting last week. I think we definitely want to get this into testing for Reef. We are still recovering from an infrastructure failure in the lab, but hopefully we can get this into testing soon.

@markhpc markhpc self-requested a review January 17, 2023 13:46
Copy link
Member

@markhpc markhpc left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@yanghonggang

Unfortunately we can't switch over to RocksDB's repo. We still need this commit for our builds to fix a bug that was introduced several years ago:

ceph/rocksdb@6a2bb94

That's why we've had to continue to use the custom versions in the ceph rocksdb repo. We discussed dropping it at the perf meeting, but I think we still want to leave the fix in place for now. Can you make a new branch with that commit applied based on the newest version and we can try switching to that?

Mark

@jianwei1216
Copy link
Contributor

Looks like we still have the baggage of history, can't give up ceph/rocksdb

@yanghonggang
Copy link
Contributor Author

@yanghonggang

Unfortunately we can't switch over to RocksDB's repo. We still need this commit for our builds to fix a bug that was introduced several years ago:

ceph/rocksdb@6a2bb94

That's why we've had to continue to use the custom versions in the ceph rocksdb repo. We discussed dropping it at the perf meeting, but I think we still want to leave the fix in place for now. Can you make a new branch with that commit applied based on the newest version and we can try switching to that?

Mark

@markhpc https://github.com/yanghonggang/rocksdb/tree/7.9.2.fb this is the new branch with ceph/rocksdb@6a2bb94 applied. But I don't know how to make a PR to create a new branch in ceph/rocksdb.

@jianwei1216
Copy link
Contributor

1. git clone git@github.com:ceph/rocksdb.git
2. vim .git/config ==> url = git@github.com:facebook/rocksdb.git
3. git pull
4. git checkout v7.9.2
5. git checkout -b 7.9.2.fb
6. vim .git/config  ==> url = git@github.com:ceph/rocksdb.git
7. git push origin 7.9.2.fb:7.9.2.fb

error  :  
# git push origin 7.9.2.fb:7.9.2.fb 
ERROR: Permission to ceph/rocksdb.git denied to jianwei1216.
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

@jianwei1216
Copy link
Contributor

Unable to push 7.9.2.fb branch to ceph/rocksdb

image

@jianwei1216
Copy link
Contributor

jianwei1216 commented Jan 20, 2023

Another way is to sync fork directly in ceph/rocksdb

1674222945625

@markhpc
Copy link
Member

markhpc commented Jan 24, 2023

@jianwei1216 Let me see if I can find out who controls that repo and what the policy is

@markhpc
Copy link
Member

markhpc commented Jan 26, 2023

@yanghonggang out of curiosity, does it work to fork the ceph rocksdb branch, make your own branch with the update from that one, and issue a pull request rather than trying to push a branch on the ceph rocksdb fork directly?

@yanghonggang
Copy link
Contributor Author

@yanghonggang
Copy link
Contributor Author

@yanghonggang out of curiosity, does it work to fork the ceph rocksdb branch, make your own branch with the update from that one, and issue a pull request rather than trying to push a branch on the ceph rocksdb fork directly?

@markhpc

In order to create a pull request, I have to specify a dest branch. But now all the existing ceph/rocksdb branches are not suitable. The ceph/rocksdb owner(or someone with privilege) can create a 7.9.2.fb branch, then I can create a pull request with ceph/rocksdb@6a2bb94 applied.

To create a 7.9.2.fb branch:

/// $ cd ceph/rocksdb.git/
$ git remote add upstream https://github.com/facebook/rocksdb.git
$ git fetch upstream v7.9.2
$ git checkout -b 7.9.2.fb 444b3f4
$ git push origin 7.9.2.fb

@markhpc
Copy link
Member

markhpc commented Feb 2, 2023

@yanghonggang ok, let me see what I can do. Sorry for the slow responses, but I do really want to get this in for Reef (which now is delays for 3 months, so we have a little more breathing room).

@markhpc
Copy link
Member

markhpc commented Feb 9, 2023

@rzarzynski mentioned he can take a look as well as he has updated RocksDB via this method in the past as well.

@rzarzynski
Copy link
Contributor

I think we should:

  1. rebase (or perhaps cherry-pick) c540de6f709b66efd41436694f72d6f7986a325b (we really need it due to historic issues) on top of upstream v7.8.3.
  2. Push such the branch to our RocksDB's fork.
  3. Update the submodule in the main of ceph.git.

WIP.

@rzarzynski
Copy link
Contributor

Just pushed https://github.com/ceph/rocksdb/tree/ceph-reef-v7.8.fb.
The cherry-pick commit is ceph/rocksdb@97bc382.
Not tested yet.

@ormandj
Copy link
Contributor

ormandj commented Feb 13, 2023

Just pushed https://github.com/ceph/rocksdb/tree/ceph-reef-v7.8.fb. The cherry-pick commit is ceph/rocksdb@97bc382. Not tested yet.

@rzarzynski is it possible to use the current upstream release, as this PR is quite old - the title just wasn't updated?: https://github.com/facebook/rocksdb/releases

7.9.2 is the current upstream release. Thank you for doing this!

@rzarzynski
Copy link
Contributor

I took the previous one from the submodule update of the current commit (f615ccd) in this PR.

Pushed https://github.com/ceph/rocksdb/tree/ceph-reef-v7.9.2.

- RocksDB community has confirmed the bad performance when compacting in 6.x and fixed in 7.5.3
  * facebook/rocksdb#9423
  * apache/kvrocks#1056
- new features(e.g., wal compression)

Signed-off-by: Yang Honggang <yanghonggang_yewu@cmss.chinamobile.com>
@yanghonggang yanghonggang force-pushed the yhg-upgrade-rocksdb-7.7.3 branch from f615ccd to c743ed2 Compare February 13, 2023 15:42
@yanghonggang yanghonggang changed the title rocksdb: Upgrade rocksdb to latest facebook's v7.8.3 rocksdb: Upgrade rocksdb to latest facebook's v7.9.2 Feb 13, 2023
@yanghonggang
Copy link
Contributor Author

@rzarzynski thank you
@markhpc pr is updated to use https://github.com/ceph/rocksdb/tree/ceph-reef-v7.9.2

2023-02-13T15:39:07.444+0000 7fa1763ce640  4 rocksdb: RocksDB version: 7.9.2

2023-02-13T15:39:07.444+0000 7fa1763ce640  4 rocksdb: Git sha 473534bffa129e8f49e25c75020b0190d528572d
2023-02-13T15:39:07.444+0000 7fa1763ce640  4 rocksdb: Compile date 2018-08-21 21:47:48
2023-02-13T15:39:07.444+0000 7fa1763ce640  4 rocksdb: DB SUMMARY

@yanghonggang
Copy link
Contributor Author

ping @markhpc

Copy link
Contributor

@rzarzynski rzarzynski left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Personally I'm a bit nervous about merging this just before the freeze. However, I see the benefits, so let's at least try to get it in.

Adding needs-qa to allow testing to start sooner, without waiting for further approvals.

@markhpc
Copy link
Member

markhpc commented Feb 16, 2023

@rzarzynski I hear you. It's always scary doing these, but I think we've got to at least try given some of the fixes/improvements.

@ljflores
Copy link
Member

ljflores commented Feb 22, 2023

Hi @yanghonggang, we tested your PR in teuthology and found some failures that look related:

http://pulpito.ceph.com/lflores-2023-02-20_21:22:20-rados-wip-yuri-testing-2023-02-16-0839-distro-default-smithi/

/a/lflores-2023-02-20_21:22:20-rados-wip-yuri-testing-2023-02-16-0839-distro-default-smithi/7181478
/a/lflores-2023-02-20_21:22:20-rados-wip-yuri-testing-2023-02-16-0839-distro-default-smithi/7181480
/a/lflores-2023-02-20_21:22:20-rados-wip-yuri-testing-2023-02-16-0839-distro-default-smithi/7181483
/a/lflores-2023-02-20_21:22:20-rados-wip-yuri-testing-2023-02-16-0839-distro-default-smithi/7181485
/a/lflores-2023-02-20_21:22:20-rados-wip-yuri-testing-2023-02-16-0839-distro-default-smithi/7181488
/a/lflores-2023-02-20_21:22:20-rados-wip-yuri-testing-2023-02-16-0839-distro-default-smithi/7181498

These all show the same valgrind memory leak error:

<error>
  <unique>0x9455c16</unique>
  <tid>1</tid>
  <threadname>ceph-mon</threadname>
  <kind>Leak_StillReachable</kind>
  <xwhat>
    <text>8 bytes in 1 blocks are still reachable in loss record 3 of 173</text>
    <leakedbytes>8</leakedbytes>
    <leakedblocks>1</leakedblocks>
  </xwhat>
  <stack>
    <frame>
      <ip>0x4C38B6F</ip>
      <obj>/usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so</obj>
      <fn>operator new[](unsigned long)</fn>
      <dir>/builddir/build/BUILD/valgrind-3.19.0/coregrind/m_replacemalloc</dir>
      <file>vg_replace_malloc.c</file>
      <line>640</line>
    </frame>
    <frame>
      <ip>0x908F71</ip>
      <obj>/usr/bin/ceph-mon</obj>
      <fn>allocate</fn>
      <dir>/opt/rh/gcc-toolset-11/root/usr/include/c++/11/ext</dir>
      <file>new_allocator.h</file>
      <line>127</line>
    </frame>
    <frame>
      <ip>0x908F71</ip>
      <obj>/usr/bin/ceph-mon</obj>
      <fn>allocate</fn>
      <dir>/opt/rh/gcc-toolset-11/root/usr/include/c++/11/bits</dir>
      <file>alloc_traits.h</file>
      <line>464</line>
    </frame>
    <frame>
      <ip>0x908F71</ip>
      <obj>/usr/bin/ceph-mon</obj>
      <fn>_M_allocate</fn>
      <dir>/opt/rh/gcc-toolset-11/root/usr/include/c++/11/bits</dir>
      <file>stl_vector.h</file>
      <line>346</line>
    </frame>
    <frame>
      <ip>0x908F71</ip>
      <obj>/usr/bin/ceph-mon</obj>
      <fn>void std::vector&lt;std::unique_ptr&lt;rocksdb::ObjectLibrary::Entry, std::default_delete&lt;rocksdb::ObjectLibrary::Entry&gt; &gt;, std::allocator&lt;std::unique_ptr&lt;rocksdb::ObjectLibrary::Entry, std::default_delete&lt;rocksdb::ObjectLibrary::Entry&gt; &gt; &gt; &gt;::_M_realloc_insert&lt;std::unique_ptr&lt;rocksdb::ObjectLibrary::Entry, std::default_delete&lt;rocksdb::ObjectLibrary::Entry&gt; &gt; &gt;(__gnu_cxx::__normal_iterator&lt;std::unique_ptr&lt;rocksdb::ObjectLibrary::Entry, std::default_delete&lt;rocksdb::ObjectLibrary::Entry&gt; &gt;*, std::vector&lt;std::unique_ptr&lt;rocksdb::ObjectLibrary::Entry, std::default_delete&lt;rocksdb::ObjectLibrary::Entry&gt; &gt;, std::allocator&lt;std::unique_ptr&lt;rocksdb::ObjectLibrary::Entry, std::default_delete&lt;rocksdb::ObjectLibrary::Entry&gt; &gt; &gt; &gt; &gt;, std::unique_ptr&lt;rocksdb::ObjectLibrary::Entry, std::default_delete&lt;rocksdb::ObjectLibrary::Entry&gt; &gt;&amp;&amp;)</fn>
      <dir>/opt/rh/gcc-toolset-11/root/usr/include/c++/11/bits</dir>
      <file>vector.tcc</file>
      <line>440</line>
    </frame>
    <frame>
      <ip>0xA2D64E</ip>
      <obj>/usr/bin/ceph-mon</obj>
      <fn>std::once_flag::_Prepare_execution::_Prepare_execution&lt;std::call_once&lt;rocksdb::FileChecksumGenFactory::CreateFromString(rocksdb::ConfigOptions const&amp;, std::__cxx11::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; const&amp;, std::shared_ptr&lt;rocksdb::FileChecksumGenFactory&gt;*)::{lambda()#1}&gt;(std::once_flag&amp;, rocksdb::FileChecksumGenFactory::CreateFromString(rocksdb::ConfigOptions const&amp;, std::__cxx11::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; const&amp;, std::shared_ptr&lt;rocksdb::FileChecksumGenFactory&gt;*)::{lambda()#1}&amp;&amp;)::{lambda()#1}&gt;(rocksdb::FileChecksumGenFactory::CreateFromString(rocksdb::ConfigOptions const&amp;, std::__cxx11::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; const&amp;, std::shared_ptr&lt;rocksdb::FileChecksumGenFactory&gt;*)::{lambda()#1}&amp;)::{lambda()#1}::_FUN()</fn>
      <dir>/opt/rh/gcc-toolset-11/root/usr/include/c++/11/bits</dir>
      <file>vector.tcc</file>
      <line>121</line>
    </frame>
    <frame>
      <ip>0x7DD8E66</ip>
      <obj>/usr/lib64/libpthread-2.28.so</obj>
      <fn>__pthread_once_slow</fn>
    </frame>
    <frame>
      <ip>0xA2D9A0</ip>
      <obj>/usr/bin/ceph-mon</obj>
      <fn>UnknownInlinedFun</fn>
      <dir>/opt/rh/gcc-toolset-11/root/usr/include/c++/11/x86_64-redhat-linux/bits</dir>
      <file>gthr-default.h</file>
      <line>700</line>
    </frame>
    <frame>
      <ip>0xA2D9A0</ip>
      <obj>/usr/bin/ceph-mon</obj>
      <fn>call_once&lt;rocksdb::FileChecksumGenFactory::CreateFromString(const rocksdb::ConfigOptions&amp;, const string&amp;, std::shared_ptr&lt;rocksdb::FileChecksumGenFactory&gt;*)::&lt;lambda()&gt; &gt;</fn>
      <dir>/opt/rh/gcc-toolset-11/root/usr/include/c++/11</dir>
      <file>mutex</file>
      <line>783</line>
    </frame>
    <frame>
      <ip>0xA2D9A0</ip>
      <obj>/usr/bin/ceph-mon</obj>
      <fn>rocksdb::FileChecksumGenFactory::CreateFromString(rocksdb::ConfigOptions const&amp;, std::__cxx11::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; const&amp;, std::shared_ptr&lt;rocksdb::FileChecksumGenFactory&gt;*)</fn>
      <dir>/usr/src/debug/ceph-18.0.0-2342.g35d33aea.el8.x86_64/src/rocksdb/util</dir>
      <file>file_checksum_helper.cc</file>
      <line>159</line>
    </frame>
    <frame>
      <ip>0x96A452</ip>
      <obj>/usr/bin/ceph-mon</obj>
      <fn>operator()</fn>
      <dir>/usr/src/debug/ceph-18.0.0-2342.g35d33aea.el8.x86_64/src/rocksdb/include/rocksdb/utilities</dir>
      <file>options_type.h</file>
      <line>495</line>
    </frame>
    <frame>
      <ip>0x96A452</ip>
      <obj>/usr/bin/ceph-mon</obj>
      <fn>__invoke_impl&lt;rocksdb::Status, rocksdb::OptionTypeInfo::AsCustomSharedPtr&lt;rocksdb::FileChecksumGenFactory&gt;(int, rocksdb::OptionVerificationType, rocksdb::OptionTypeFlags)::&lt;lambda(const rocksdb::ConfigOptions&amp;, const string&amp;, const string&amp;, void*)&gt;&amp;, const rocksdb::ConfigOptions&amp;, const std::__cxx11::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt;&amp;, const std::__cxx11::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt;&amp;, void*&gt;</fn>
      <dir>/opt/rh/gcc-toolset-11/root/usr/include/c++/11/bits</dir>
      <file>invoke.h</file>
      <line>61</line>
    </frame>
    <frame>
      <ip>0x96A452</ip>
      <obj>/usr/bin/ceph-mon</obj>
      <fn>__invoke_r&lt;rocksdb::Status, rocksdb::OptionTypeInfo::AsCustomSharedPtr&lt;rocksdb::FileChecksumGenFactory&gt;(int, rocksdb::OptionVerificationType, rocksdb::OptionTypeFlags)::&lt;lambda(const rocksdb::ConfigOptions&amp;, const string&amp;, const string&amp;, void*)&gt;&amp;, const rocksdb::ConfigOptions&amp;, const std::__cxx11::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt;&amp;, const std::__cxx11::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt;&amp;, void*&gt;</fn>
      <dir>/opt/rh/gcc-toolset-11/root/usr/include/c++/11/bits</dir>
      <file>invoke.h</file>
      <line>116</line>
    </frame>
    <frame>
      <ip>0x96A452</ip>
      <obj>/usr/bin/ceph-mon</obj>
      <fn>std::_Function_handler&lt;rocksdb::Status (rocksdb::ConfigOptions const&amp;, std::__cxx11::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; const&amp;, std::__cxx11::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; const&amp;, void*), rocksdb::OptionTypeInfo::AsCustomSharedPtr&lt;rocksdb::FileChecksumGenFactory&gt;(int, rocksdb::OptionVerificationType, rocksdb::OptionTypeFlags)::{lambda(rocksdb::ConfigOptions const&amp;, std::__cxx11::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; const&amp;, std::__cxx11::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; const&amp;, void*)#1}&gt;::_M_invoke(std::_Any_data const&amp;, rocksdb::ConfigOptions const&amp;, std::__cxx11::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; const&amp;, std::__cxx11::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; const&amp;, void*&amp;&amp;)</fn>
      <dir>/opt/rh/gcc-toolset-11/root/usr/include/c++/11/bits</dir>
      <file>std_function.h</file>
      <line>291</line>
    </frame>
    <frame>
      <ip>0x9814A3</ip>
      <obj>/usr/bin/ceph-mon</obj>
      <fn>operator()</fn>
      <dir>/opt/rh/gcc-toolset-11/root/usr/include/c++/11/bits</dir>
      <file>std_function.h</file>
      <line>590</line>
    </frame>
    <frame>
      <ip>0x9814A3</ip>
      <obj>/usr/bin/ceph-mon</obj>
      <fn>rocksdb::OptionTypeInfo::Parse(rocksdb::ConfigOptions const&amp;, std::__cxx11::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; const&amp;, std::__cxx11::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; const&amp;, void*) const</fn>
      <dir>/usr/src/debug/ceph-18.0.0-2342.g35d33aea.el8.x86_64/src/rocksdb/options</dir>
      <file>options_helper.cc</file>
      <line>938</line>
    </frame>
    <frame>
      <ip>0x9622DC</ip>
      <obj>/usr/bin/ceph-mon</obj>
      <fn>rocksdb::Configurable::ParseOption(rocksdb::ConfigOptions const&amp;, rocksdb::OptionTypeInfo const&amp;, std::__cxx11::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; const&amp;, std::__cxx11::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; const&amp;, void*)</fn>
      <dir>/usr/src/debug/ceph-18.0.0-2342.g35d33aea.el8.x86_64/src/rocksdb/options</dir>
      <file>configurable.cc</file>
      <line>251</line>
    </frame>

Take a look and see what you think. See http://sprunge.us/QSf8ya for the full valgrind leak. @markhpc FYI

@markhpc
Copy link
Member

markhpc commented Feb 27, 2023

Radek and I discussed this, I think we need to add a valgrind supression that looks something like:

{
	rocksdb config parsing
	Memcheck:Leak
	...
	fun:rocksdb*Configurable*ParseOption*
	...
}

inslde https://github.com/ceph/ceph/blob/main/qa/valgrind.supp

The gist of it is that this appears to only be a one time config parsing leak and a very small (8 byte) one at that. They may have changed something such that our previous supressions caught it but now they do not.

@ljflores
Copy link
Member

@markhpc @rzarzynski I reran the same tests that failed without this PR, and they passed. Just wanted to confirm with you guys that this PR is solely responsible.
http://pulpito.front.sepia.ceph.com/lflores-2023-02-23_17:54:36-rados-wip-yuri-testing-2023-02-22-2037-distro-default-smithi/

rzarzynski added a commit to yanghonggang/ceph that referenced this pull request Feb 28, 2023
This suppression is needed since upgrading to v7.9.2.
See PR ceph#49006.

Signed-off-by: Radoslaw Zarzynski <rzarzyns@redhat.com>
This suppression is needed since upgrading to v7.9.2.
See PR ceph#49006.

Signed-off-by: Radoslaw Zarzynski <rzarzyns@redhat.com>
Signed-off-by: Radoslaw Zarzynski <rzarzyns@redhat.com>
```
// Get an CacheItemHelper pointer for value type T and role R.
template <typename T, CacheEntryRole R>
Cache::CacheItemHelper* GetCacheItemHelperForRole() {
  static Cache::CacheItemHelper cache_helper(
      BlocklikeTraits<T>::SizeCallback, BlocklikeTraits<T>::SaveToCallback,
      GetCacheEntryDeleterForRole<T, R>());
  return &cache_helper;
}
```

Signed-off-by: Radoslaw Zarzynski <rzarzyns@redhat.com>
@rzarzynski rzarzynski force-pushed the yhg-upgrade-rocksdb-7.7.3 branch from 339bb6c to 0de4d99 Compare February 28, 2023 20:46
```
    <frame>
      <ip>0x1712F1E</ip>
      <obj>/home/rzarzynski/ceph3/build/bin/ceph-mon</obj>
      <fn>rocksdb::BytewiseComparator()</fn>
      <dir>/home/rzarzynski/ceph3/src/rocksdb/util</dir>
      <file>comparator.cc</file>
      <line>304</line>
    </frame>
    <frame>
      <ip>0x162361C</ip>
      <obj>/home/rzarzynski/ceph3/build/bin/ceph-mon</obj>
      <fn>rocksdb::ColumnFamilyOptions::ColumnFamilyOptions()</fn>
      <dir>/home/rzarzynski/ceph3/src/rocksdb/options</dir>
      <file>options.cc</file>
      <line>123</line>
    </frame>
    <frame>
      <ip>0x12CA21E</ip>
      <obj>/home/rzarzynski/ceph3/build/bin/ceph-mon</obj>
      <fn>Options</fn>
      <dir>/home/rzarzynski/ceph3/build/../src/rocksdb/include/rocksdb</dir>
      <file>options.h</file>
      <line>1409</line>
    </frame>
    <frame>
      <ip>0x12CA21E</ip>
      <obj>/home/rzarzynski/ceph3/build/bin/ceph-mon</obj>
      <fn>RocksDBStore::init(std::__cxx11::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt;)</fn>
      <dir>/home/rzarzynski/ceph3/build/../src/kv</dir>
      <file>RocksDBStore.cc</file>
      <line>400</line>
    </frame>
```

Signed-off-by: Radoslaw Zarzynski <rzarzyns@redhat.com>
@ljflores
Copy link
Member

Rados suite review: http://pulpito.front.sepia.ceph.com/?branch=wip-yuri-testing-2023-02-16-0839

Some failures were related to #49006, but were fixed locally due to lab issues.

Failures, unrelated:

  1. https://tracker.ceph.com/issues/58585
  2. https://tracker.ceph.com/issues/58560
  3. https://tracker.ceph.com/issues/58496
  4. https://tracker.ceph.com/issues/49961
  5. https://tracker.ceph.com/issues/58861
  6. https://tracker.ceph.com/issues/58797
  7. https://tracker.ceph.com/issues/49428

Details:

  1. rook: failed to pull kubelet image - Ceph - Orchestrator
  2. test_envlibrados_for_rocksdb.sh failed to subscribe to repo - Infrastructure
  3. osd/PeeringState: FAILED ceph_assert(!acting_recovery_backfill.empty()) - Ceph - RADOS
  4. scrub/osd-recovery-scrub.sh: TEST_recovery_scrub_1 failed - Ceph - RADOS
  5. OSError: cephadm config file not found - Ceph - Orchestrator
  6. scrub/osd-scrub-dump.sh: TEST_recover_unexpected fails from "ERROR: Unexpectedly low amount of scrub reservations seen during test" - Ceph - RADOS
  7. ceph_test_rados_api_snapshots fails with "rados_mon_command osd pool create failed with error -22" - Ceph - RADOS

@neha-ojha neha-ojha merged commit 707af78 into ceph:main Feb 28, 2023
dparmar18 pushed a commit to dparmar18/ceph that referenced this pull request Mar 1, 2023
This suppression is needed since upgrading to v7.9.2.
See PR ceph#49006.

Signed-off-by: Radoslaw Zarzynski <rzarzyns@redhat.com>
@rzarzynski rzarzynski changed the title rocksdb: Upgrade rocksdb to latest facebook's v7.9.2 rocksdb: Upgrade (bump) rocksdb to latest facebook's v7.9.2 Jun 7, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants