[GH-ISSUE #33] Can't compile in Ubunbu 22.04 #24

Closed
opened 2026-10-26 09:43:34 +00:00 by bsakaguchi · 9 comments
Owner

Originally created by @sergio-com-ai on GitHub (Mar 2, 2025).
Original GitHub issue: https://github.com/deepseek-ai/3FS/issues/33

Hi I tried compiling first in Arch Linux and Ubuntu 22.04 and both of them fail at the samepart which is apache-arrow-cpp:

[ 54%] Completed 'apache-arrow-cpp' [ 54%] Built target apache-arrow-cpp gmake: *** [Makefile:146: all] Error 2

I followed the instructions in the repo, and also looked at your build CI/CD for more insights but it just don't want to compile.

In Arch I tried with some package and deactivated apache-arrow-cpp from CMakeLists.txt and it failed at the folly compillation. I am currently installing folly manually to see if that fixes the issue.

Any clues?

Originally created by @sergio-com-ai on GitHub (Mar 2, 2025). Original GitHub issue: https://github.com/deepseek-ai/3FS/issues/33 Hi I tried compiling first in Arch Linux and Ubuntu 22.04 and both of them fail at the samepart which is apache-arrow-cpp: ` [ 54%] Completed 'apache-arrow-cpp' [ 54%] Built target apache-arrow-cpp gmake: *** [Makefile:146: all] Error 2` I followed the instructions in the repo, and also looked at your build CI/CD for more insights but it just don't want to compile. In Arch I tried with some package and deactivated apache-arrow-cpp from CMakeLists.txt and it failed at the folly compillation. I am currently installing folly manually to see if that fixes the issue. Any clues?
Author
Owner

@iamazy commented on GitHub (Mar 2, 2025):

@sergio-com-ai I got the same error, have you addressed this issue?

<!-- gh-comment-id:2692555033 --> @iamazy commented on GitHub (Mar 2, 2025): @sergio-com-ai I got the same error, have you addressed this issue?
Author
Owner

@SF-Zhou commented on GitHub (Mar 2, 2025):

Please pull the latest code and try again.

<!-- gh-comment-id:2692565958 --> @SF-Zhou commented on GitHub (Mar 2, 2025): Please pull the latest code and try again.
Author
Owner

@iamazy commented on GitHub (Mar 2, 2025):

@SF-Zhou Hi, I have tried again but still compiled error, see error page

<!-- gh-comment-id:2692581644 --> @iamazy commented on GitHub (Mar 2, 2025): @SF-Zhou Hi, I have tried again but still compiled error, see [error page](https://github.com/iamazy/3FS/actions/runs/13612700189/job/38051860472)
Author
Owner

@SF-Zhou commented on GitHub (Mar 2, 2025):

@SF-Zhou Hi, I have tried again but still compiled error, see error page

Killed
gmake[2]: *** [third_party/rocksdb/CMakeFiles/rocksdb.dir/build.make:961: third_party/rocksdb/CMakeFiles/rocksdb.dir/db/internal_stats.cc.o] Error 137

It appears to be an Out-of-Memory (OOM) error. Your CI Runner may not have sufficient memory. You could consider reducing the compilation concurrency.

<!-- gh-comment-id:2692588925 --> @SF-Zhou commented on GitHub (Mar 2, 2025): > [@SF-Zhou](https://github.com/SF-Zhou) Hi, I have tried again but still compiled error, see [error page](https://github.com/iamazy/3FS/actions/runs/13612700189/job/38051860472) ``` Killed gmake[2]: *** [third_party/rocksdb/CMakeFiles/rocksdb.dir/build.make:961: third_party/rocksdb/CMakeFiles/rocksdb.dir/db/internal_stats.cc.o] Error 137 ``` It appears to be an Out-of-Memory (OOM) error. Your CI Runner may not have sufficient memory. You could consider reducing the compilation concurrency.
Author
Owner

@sergio-com-ai commented on GitHub (Mar 2, 2025):

Hello, thank you for the speedy patch. It was able to compile apache-arrow-cpp but got stuck now on the `test_mgmtd:

[ 81%] Linking CXX static library libsimple_example.a
[ 82%] Built target simple_example
[ 82%] Building CXX object src/simple_example/CMakeFiles/simple_example_main.dir/main.cpp.o
[ 82%] Linking CXX static library libmigration.a
[ 82%] Built target migration
[ 83%] Building CXX object src/migration/CMakeFiles/migration_main.dir/main.cpp.o
[ 83%] Linking CXX static library libmgmtd.a
[ 83%] Built target mgmtd
[ 83%] Building CXX object tests/mgmtd/CMakeFiles/mgmtd-test-helper.dir/MgmtdTestHelper.cpp.o
[ 83%] Building CXX object src/mgmtd/CMakeFiles/mgmtd_main.dir/mgmtd.cpp.o
[ 83%] Linking CXX static library libmeta-stub.a
[ 83%] Built target meta-stub
[ 83%] Building CXX object src/client/meta/CMakeFiles/meta-client.dir/MetaClient.cc.o
[ 83%] Building CXX object src/client/meta/CMakeFiles/meta-client.dir/ServerSelectionStrategy.cc.o
[ 83%] Linking CXX static library libstorage.a
[ 83%] Built target storage
[ 83%] Building CXX object src/storage/CMakeFiles/storage_main.dir/storage.cpp.o
[ 83%] Linking CXX static library libmgmtd-test-helper.a
[ 83%] Built target mgmtd-test-helper
[ 83%] Building CXX object tests/mgmtd/CMakeFiles/test_mgmtd.dir/TestMgmtdStore.cc.o
[ 83%] Building CXX object tests/mgmtd/CMakeFiles/test_mgmtd.dir/TestMgmtdOperator.cc.o
[ 83%] Building CXX object tests/mgmtd/CMakeFiles/test_mgmtd.dir/TestNodeSelector.cc.o
[ 83%] Building CXX object tests/mgmtd/CMakeFiles/test_mgmtd.dir/TestUpdateChain.cc.o
[ 83%] Linking CXX executable ../../bin/migration_main
[ 83%] Linking CXX executable ../../bin/simple_example_main
[ 83%] Linking CXX executable ../../bin/mgmtd_main
[ 83%] Built target migration_main
[ 83%] Built target simple_example_main
[ 83%] Linking CXX executable ../test_mgmtd
ld.lld: error: undefined symbol: hf3fs::mgmtd::MgmtdData::reset(hf3fs::StrongTypedef<unsigned long, hf3fs::flat::RoutingInfoVersionTag>, robin_hood::detail::Table<false, 80ul, hf3fs::Stro
>>> referenced by MgmtdLeaseExtender.cc:173 (/home/ubuntu/Data/Git/3fs/src/mgmtd/background/MgmtdLeaseExtender.cc:173)
>>>               MgmtdLeaseExtender.cc.o:(hf3fs::mgmtd::(anonymous namespace)::onNewLease(hf3fs::mgmtd::MgmtdState&, hf3fs::core::ServiceOperation&, hf3fs::mgmtd::MgmtdData&, hf3fs::UtcT

ld.lld: error: undefined symbol: hf3fs::mgmtd::GetPrimaryMgmtdOperation::handle(hf3fs::mgmtd::MgmtdState&) const
>>> referenced by MgmtdServiceDef.h:3 (/home/ubuntu/Data/Git/3fs/src/fbs/mgmtd/MgmtdServiceDef.h:3)
>>>               MgmtdOperator.cc.o:(hf3fs::mgmtd::MgmtdOperator::getPrimaryMgmtd(hf3fs::mgmtd::GetPrimaryMgmtdReq, hf3fs::net::PeerInfo const&) (.resume)) in archive ../../src/mgmtd/lib

ld.lld: error: undefined symbol: hf3fs::mgmtd::GetConfigVersionsOperation::handle(hf3fs::mgmtd::MgmtdState&)
>>> referenced by MgmtdServiceDef.h:20 (/home/ubuntu/Data/Git/3fs/src/fbs/mgmtd/MgmtdServiceDef.h:20)
>>>               MgmtdOperator.cc.o:(hf3fs::mgmtd::MgmtdOperator::getConfigVersions(hf3fs::mgmtd::GetConfigVersionsReq, hf3fs::net::PeerInfo const&) (.resume)) in archive ../../src/mgmtd

ld.lld: error: undefined symbol: hf3fs::mgmtd::ListOrphanTargetsOperation::handle(hf3fs::mgmtd::MgmtdState&)
>>> referenced by MgmtdServiceDef.h:23 (/home/ubuntu/Data/Git/3fs/src/fbs/mgmtd/MgmtdServiceDef.h:23)
>>>               MgmtdOperator.cc.o:(hf3fs::mgmtd::MgmtdOperator::listOrphanTargets(hf3fs::mgmtd::ListOrphanTargetsReq, hf3fs::net::PeerInfo const&) (.resume)) in archive ../../src/mgmtd

ld.lld: error: undefined symbol: hf3fs::mgmtd::MgmtdRoutingInfoVersionUpdater::MgmtdRoutingInfoVersionUpdater(hf3fs::mgmtd::MgmtdState&)
>>> referenced by unique_ptr.h:1065 (/usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/unique_ptr.h:1065)
>>>               MgmtdBackgroundRunner.cc.o:(hf3fs::mgmtd::MgmtdBackgroundRunner::MgmtdBackgroundRunner(hf3fs::mgmtd::MgmtdState&)) in archive ../../src/mgmtd/libmgmtd.a

ld.lld: error: undefined symbol: hf3fs::mgmtd::MgmtdRoutingInfoVersionUpdater::update()
>>> referenced by MgmtdBackgroundRunner.cc:65 (/home/ubuntu/Data/Git/3fs/src/mgmtd/background/MgmtdBackgroundRunner.cc:65)
>>>               MgmtdBackgroundRunner.cc.o:(std::_Function_handler<folly::coro::Task<void> (), hf3fs::mgmtd::MgmtdBackgroundRunner::start()::$_6>::_M_invoke(std::_Any_data const&)) in a

ld.lld: error: undefined symbol: hf3fs::mgmtd::MgmtdData::appendChangedChains(hf3fs::StrongTypedef<unsigned int, hf3fs::flat::ChainIdTag>, std::vector<hf3fs::flat::ChainInfo, std::allocat
>>> referenced by MgmtdChainsUpdater.cc:35 (/home/ubuntu/Data/Git/3fs/src/mgmtd/background/MgmtdChainsUpdater.cc:35)
>>>               MgmtdChainsUpdater.cc.o:(hf3fs::mgmtd::(anonymous namespace)::Op::handle(hf3fs::mgmtd::MgmtdState&, std::chrono::time_point<std::chrono::_V2::steady_clock, std::chrono::

ld.lld: error: undefined symbol: hf3fs::mgmtd::MgmtdData::getLatestConfigVersion(hf3fs::flat::NodeType) const
>>> referenced by MgmtdMetricsUpdater.cc:91 (/home/ubuntu/Data/Git/3fs/src/mgmtd/background/MgmtdMetricsUpdater.cc:91)
>>>               MgmtdMetricsUpdater.cc.o:(hf3fs::mgmtd::(anonymous namespace)::Op::handle(hf3fs::mgmtd::MgmtdState&) (.resume)) in archive ../../src/mgmtd/libmgmtd.a
>>> referenced by MgmtdMetricsUpdater.cc:91 (/home/ubuntu/Data/Git/3fs/src/mgmtd/background/MgmtdMetricsUpdater.cc:91)
>>>               MgmtdMetricsUpdater.cc.o:(hf3fs::mgmtd::(anonymous namespace)::Op::handle(hf3fs::mgmtd::MgmtdState&) (.resume)) in archive ../../src/mgmtd/libmgmtd.a

ld.lld: error: undefined symbol: hf3fs::mgmtd::MgmtdData::checkConfigVersion(hf3fs::core::ServiceOperation&, hf3fs::flat::NodeType, hf3fs::StrongTypedef<unsigned long, hf3fs::flat::Config
>>> referenced by HeartbeatOperation.cc:73 (/home/ubuntu/Data/Git/3fs/src/mgmtd/ops/HeartbeatOperation.cc:73)
>>>               HeartbeatOperation.cc.o:(hf3fs::mgmtd::(anonymous namespace)::prepareHandleHeartbeat(hf3fs::mgmtd::MgmtdState&, hf3fs::core::ServiceOperation&, hf3fs::mgmtd::MgmtdData c
>>> referenced by ExtendClientSessionOperation.cc:35 (/home/ubuntu/Data/Git/3fs/src/mgmtd/ops/ExtendClientSessionOperation.cc:35)
>>>               ExtendClientSessionOperation.cc.o:(hf3fs::mgmtd::ExtendClientSessionOperation::handle(hf3fs::mgmtd::MgmtdState&)::$_0::operator()() const (.resume)) in archive ../../src

ld.lld: error: undefined symbol: hf3fs::mgmtd::MgmtdData::getConfig(hf3fs::flat::NodeType, hf3fs::StrongTypedef<unsigned long, hf3fs::flat::ConfigVersionTag>, bool) const
>>> referenced by HeartbeatOperation.cc:196 (/home/ubuntu/Data/Git/3fs/src/mgmtd/ops/HeartbeatOperation.cc:196)
>>>               HeartbeatOperation.cc.o:(hf3fs::mgmtd::HeartbeatOperation::handle(hf3fs::mgmtd::MgmtdState&)::$_0::operator()() const (.resume)) in archive ../../src/mgmtd/libmgmtd.a
>>> referenced by GetConfigOperation.cc:13 (/home/ubuntu/Data/Git/3fs/src/mgmtd/ops/GetConfigOperation.cc:13)
>>>               GetConfigOperation.cc.o:(hf3fs::mgmtd::GetConfigOperation::handle(hf3fs::mgmtd::MgmtdState&)::$_0::operator()() const (.resume)) in archive ../../src/mgmtd/libmgmtd.a
>>> referenced by ExtendClientSessionOperation.cc:36 (/home/ubuntu/Data/Git/3fs/src/mgmtd/ops/ExtendClientSessionOperation.cc:36)
>>>               ExtendClientSessionOperation.cc.o:(hf3fs::mgmtd::ExtendClientSessionOperation::handle(hf3fs::mgmtd::MgmtdState&)::$_0::operator()() const (.resume)) in archive ../../src

ld.lld: error: undefined symbol: hf3fs::mgmtd::MgmtdData::checkRoutingInfoVersion(hf3fs::core::ServiceOperation&, hf3fs::StrongTypedef<unsigned long, hf3fs::flat::RoutingInfoVersionTag>)
>>> referenced by GetRoutingInfoOperation.cc:11 (/home/ubuntu/Data/Git/3fs/src/mgmtd/ops/GetRoutingInfoOperation.cc:11)
>>>               GetRoutingInfoOperation.cc.o:(hf3fs::mgmtd::GetRoutingInfoOperation::handle(hf3fs::mgmtd::MgmtdState&)::$_0::operator()() const (.resume)) in archive ../../src/mgmtd/lib

ld.lld: error: undefined symbol: hf3fs::mgmtd::MgmtdData::getRoutingInfo(hf3fs::StrongTypedef<unsigned long, hf3fs::flat::RoutingInfoVersionTag>, hf3fs::mgmtd::MgmtdConfig const&) const
>>> referenced by GetRoutingInfoOperation.cc:12 (/home/ubuntu/Data/Git/3fs/src/mgmtd/ops/GetRoutingInfoOperation.cc:12)
>>>               GetRoutingInfoOperation.cc.o:(hf3fs::mgmtd::GetRoutingInfoOperation::handle(hf3fs::mgmtd::MgmtdState&)::$_0::operator()() const (.resume)) in archive ../../src/mgmtd/lib
clang: error: linker command failed with exit code 1 (use -v to see invocation)
gmake[2]: *** [tests/mgmtd/CMakeFiles/test_mgmtd.dir/build.make:203: tests/test_mgmtd] Error 1
gmake[1]: *** [CMakeFiles/Makefile2:6060: tests/mgmtd/CMakeFiles/test_mgmtd.dir/all] Error 2
gmake[1]: *** Waiting for unfinished jobs....
ld.lld: error: undefined symbol: hf3fs::mgmtd::GetPrimaryMgmtdOperation::handle(hf3fs::mgmtd::MgmtdState&) const
>>> referenced by MgmtdServiceDef.h:3 (/home/ubuntu/Data/Git/3fs/src/fbs/mgmtd/MgmtdServiceDef.h:3)
>>>               MgmtdOperator.cc.o:(hf3fs::mgmtd::MgmtdOperator::getPrimaryMgmtd(hf3fs::mgmtd::GetPrimaryMgmtdReq, hf3fs::net::PeerInfo const&) (.resume)) in archive libmgmtd.a

ld.lld: error: undefined symbol: hf3fs::mgmtd::GetConfigVersionsOperation::handle(hf3fs::mgmtd::MgmtdState&)
>>> referenced by MgmtdServiceDef.h:20 (/home/ubuntu/Data/Git/3fs/src/fbs/mgmtd/MgmtdServiceDef.h:20)
>>>               MgmtdOperator.cc.o:(hf3fs::mgmtd::MgmtdOperator::getConfigVersions(hf3fs::mgmtd::GetConfigVersionsReq, hf3fs::net::PeerInfo const&) (.resume)) in archive libmgmtd.a

ld.lld: error: undefined symbol: hf3fs::mgmtd::ListOrphanTargetsOperation::handle(hf3fs::mgmtd::MgmtdState&)
>>> referenced by MgmtdServiceDef.h:23 (/home/ubuntu/Data/Git/3fs/src/fbs/mgmtd/MgmtdServiceDef.h:23)
>>>               MgmtdOperator.cc.o:(hf3fs::mgmtd::MgmtdOperator::listOrphanTargets(hf3fs::mgmtd::ListOrphanTargetsReq, hf3fs::net::PeerInfo const&) (.resume)) in archive libmgmtd.a

ld.lld: error: undefined symbol: hf3fs::mgmtd::MgmtdRoutingInfoVersionUpdater::MgmtdRoutingInfoVersionUpdater(hf3fs::mgmtd::MgmtdState&)
>>> referenced by unique_ptr.h:1065 (/usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/unique_ptr.h:1065)
>>>               MgmtdBackgroundRunner.cc.o:(hf3fs::mgmtd::MgmtdBackgroundRunner::MgmtdBackgroundRunner(hf3fs::mgmtd::MgmtdState&)) in archive libmgmtd.a

ld.lld: error: undefined symbol: hf3fs::mgmtd::MgmtdRoutingInfoVersionUpdater::update()
>>> referenced by MgmtdBackgroundRunner.cc:65 (/home/ubuntu/Data/Git/3fs/src/mgmtd/background/MgmtdBackgroundRunner.cc:65)
>>>               MgmtdBackgroundRunner.cc.o:(std::_Function_handler<folly::coro::Task<void> (), hf3fs::mgmtd::MgmtdBackgroundRunner::start()::$_6>::_M_invoke(std::_Any_data const&)) in archive libmgmtd.a

ld.lld: error: undefined symbol: hf3fs::mgmtd::MgmtdData::reset(hf3fs::StrongTypedef<unsigned long, hf3fs::flat::RoutingInfoVersionTag>, robin_hood::detail::Table<false, 80ul, hf3fs::StrongTypedef<unsigned int, hf3fs::flat::NodeIdTag>, hf3fs::mgmtd::NodeInfoWrapper, robin_hood::hash<hf3fs::StrongTypedef<unsigned int, hf3fs::flat::NodeIdTag>, void>, std::equal_to<hf3fs::StrongTypedef<unsigned int, hf3fs::flat::NodeIdTag> > >, std::map<hf3fs::flat::NodeType, std::map<hf3fs::StrongTypedef<unsigned long, hf3fs::flat::ConfigVersionTag>, hf3fs::flat::ConfigInfo, std::less<hf3fs::StrongTypedef<unsigned long, hf3fs::flat::ConfigVersionTag> >, std::allocator<std::pair<hf3fs::StrongTypedef<unsigned long, hf3fs::flat::ConfigVersionTag> const, hf3fs::flat::ConfigInfo> > >, std::less<hf3fs::flat::NodeType>, std::allocator<std::pair<hf3fs::flat::NodeType const, std::map<hf3fs::StrongTypedef<unsigned long, hf3fs::flat::ConfigVersionTag>, hf3fs::flat::ConfigInfo, std::less<hf3fs::StrongTypedef<unsigned long, hf3fs::flat::ConfigVersionTag> >, std::allocator<std::pair<hf3fs::StrongTypedef<unsigned long, hf3fs::flat::ConfigVersionTag> const, hf3fs::flat::ConfigInfo> > > > > >, robin_hood::detail::Table<false, 80ul, hf3fs::StrongTypedef<unsigned int, hf3fs::flat::ChainTableIdTag>, std::map<hf3fs::StrongTypedef<unsigned int, hf3fs::flat::ChainTableVersionTag>, hf3fs::flat::ChainTable, std::less<hf3fs::StrongTypedef<unsigned int, hf3fs::flat::ChainTableVersionTag> >, std::allocator<std::pair<hf3fs::StrongTypedef<unsigned int, hf3fs::flat::ChainTableVersionTag> const, hf3fs::flat::ChainTable> > >, robin_hood::hash<hf3fs::StrongTypedef<unsigned int, hf3fs::flat::ChainTableIdTag>, void>, std::equal_to<hf3fs::StrongTypedef<unsigned int, hf3fs::flat::ChainTableIdTag> > >, robin_hood::detail::Table<false, 80ul, hf3fs::StrongTypedef<unsigned int, hf3fs::flat::ChainIdTag>, hf3fs::flat::ChainInfo, robin_hood::hash<hf3fs::StrongTypedef<unsigned int, hf3fs::flat::ChainIdTag>, void>, std::equal_to<hf3fs::StrongTypedef<unsigned int, hf3fs::flat::ChainIdTag> > >, robin_hood::detail::Table<false, 80ul, hf3fs::StrongTypedef<unsigned long, hf3fs::flat::TargetIdTag>, hf3fs::mgmtd::TargetInfo, robin_hood::hash<hf3fs::StrongTypedef<unsigned long, hf3fs::flat::TargetIdTag>, void>, std::equal_to<hf3fs::StrongTypedef<unsigned long, hf3fs::flat::TargetIdTag> > >, robin_hood::detail::Table<false, 80ul, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::vector<hf3fs::flat::TagPair, std::allocator<hf3fs::flat::TagPair> >, hf3fs::StringHash, std::equal_to<void> >)
>>> referenced by MgmtdLeaseExtender.cc:173 (/home/ubuntu/Data/Git/3fs/src/mgmtd/background/MgmtdLeaseExtender.cc:173)
>>>               MgmtdLeaseExtender.cc.o:(hf3fs::mgmtd::(anonymous namespace)::onNewLease(hf3fs::mgmtd::MgmtdState&, hf3fs::core::ServiceOperation&, hf3fs::mgmtd::MgmtdData&, hf3fs::UtcTime) (.resume)) in archive libmgmtd.a

ld.lld: error: undefined symbol: hf3fs::mgmtd::MgmtdData::appendChangedChains(hf3fs::StrongTypedef<unsigned int, hf3fs::flat::ChainIdTag>, std::vector<hf3fs::flat::ChainInfo, std::allocator<hf3fs::flat::ChainInfo> >&, bool) const
>>> referenced by MgmtdChainsUpdater.cc:35 (/home/ubuntu/Data/Git/3fs/src/mgmtd/background/MgmtdChainsUpdater.cc:35)
>>>               MgmtdChainsUpdater.cc.o:(hf3fs::mgmtd::(anonymous namespace)::Op::handle(hf3fs::mgmtd::MgmtdState&, std::chrono::time_point<std::chrono::_V2::steady_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > >, bool) (.resume)) in archive libmgmtd.a

ld.lld: error: undefined symbol: hf3fs::mgmtd::MgmtdData::getLatestConfigVersion(hf3fs::flat::NodeType) const
>>> referenced by MgmtdMetricsUpdater.cc:91 (/home/ubuntu/Data/Git/3fs/src/mgmtd/background/MgmtdMetricsUpdater.cc:91)
>>>               MgmtdMetricsUpdater.cc.o:(hf3fs::mgmtd::(anonymous namespace)::Op::handle(hf3fs::mgmtd::MgmtdState&) (.resume)) in archive libmgmtd.a
>>> referenced by MgmtdMetricsUpdater.cc:91 (/home/ubuntu/Data/Git/3fs/src/mgmtd/background/MgmtdMetricsUpdater.cc:91)
>>>               MgmtdMetricsUpdater.cc.o:(hf3fs::mgmtd::(anonymous namespace)::Op::handle(hf3fs::mgmtd::MgmtdState&) (.resume)) in archive libmgmtd.a

ld.lld: error: undefined symbol: hf3fs::mgmtd::MgmtdData::checkConfigVersion(hf3fs::core::ServiceOperation&, hf3fs::flat::NodeType, hf3fs::StrongTypedef<unsigned long, hf3fs::flat::ConfigVersionTag>) const
>>> referenced by HeartbeatOperation.cc:73 (/home/ubuntu/Data/Git/3fs/src/mgmtd/ops/HeartbeatOperation.cc:73)
>>>               HeartbeatOperation.cc.o:(hf3fs::mgmtd::(anonymous namespace)::prepareHandleHeartbeat(hf3fs::mgmtd::MgmtdState&, hf3fs::core::ServiceOperation&, hf3fs::mgmtd::MgmtdData const&, hf3fs::UtcTime, hf3fs::flat::HeartbeatInfo const&, hf3fs::mgmtd::NodeInfoWrapper const**, hf3fs::flat::NodeInfo&)) in archive libmgmtd.a
>>> referenced by ExtendClientSessionOperation.cc:35 (/home/ubuntu/Data/Git/3fs/src/mgmtd/ops/ExtendClientSessionOperation.cc:35)
>>>               ExtendClientSessionOperation.cc.o:(hf3fs::mgmtd::ExtendClientSessionOperation::handle(hf3fs::mgmtd::MgmtdState&)::$_0::operator()() const (.resume)) in archive libmgmtd.a

ld.lld: error: undefined symbol: hf3fs::mgmtd::MgmtdData::getConfig(hf3fs::flat::NodeType, hf3fs::StrongTypedef<unsigned long, hf3fs::flat::ConfigVersionTag>, bool) const
>>> referenced by HeartbeatOperation.cc:196 (/home/ubuntu/Data/Git/3fs/src/mgmtd/ops/HeartbeatOperation.cc:196)
>>>               HeartbeatOperation.cc.o:(hf3fs::mgmtd::HeartbeatOperation::handle(hf3fs::mgmtd::MgmtdState&)::$_0::operator()() const (.resume)) in archive libmgmtd.a
>>> referenced by GetConfigOperation.cc:13 (/home/ubuntu/Data/Git/3fs/src/mgmtd/ops/GetConfigOperation.cc:13)
>>>               GetConfigOperation.cc.o:(hf3fs::mgmtd::GetConfigOperation::handle(hf3fs::mgmtd::MgmtdState&)::$_0::operator()() const (.resume)) in archive libmgmtd.a
>>> referenced by ExtendClientSessionOperation.cc:36 (/home/ubuntu/Data/Git/3fs/src/mgmtd/ops/ExtendClientSessionOperation.cc:36)
>>>               ExtendClientSessionOperation.cc.o:(hf3fs::mgmtd::ExtendClientSessionOperation::handle(hf3fs::mgmtd::MgmtdState&)::$_0::operator()() const (.resume)) in archive libmgmtd.a

ld.lld: error: undefined symbol: hf3fs::mgmtd::MgmtdData::checkRoutingInfoVersion(hf3fs::core::ServiceOperation&, hf3fs::StrongTypedef<unsigned long, hf3fs::flat::RoutingInfoVersionTag>) const
>>> referenced by GetRoutingInfoOperation.cc:11 (/home/ubuntu/Data/Git/3fs/src/mgmtd/ops/GetRoutingInfoOperation.cc:11)
>>>               GetRoutingInfoOperation.cc.o:(hf3fs::mgmtd::GetRoutingInfoOperation::handle(hf3fs::mgmtd::MgmtdState&)::$_0::operator()() const (.resume)) in archive libmgmtd.a

ld.lld: error: undefined symbol: hf3fs::mgmtd::MgmtdData::getRoutingInfo(hf3fs::StrongTypedef<unsigned long, hf3fs::flat::RoutingInfoVersionTag>, hf3fs::mgmtd::MgmtdConfig const&) const
>>> referenced by GetRoutingInfoOperation.cc:12 (/home/ubuntu/Data/Git/3fs/src/mgmtd/ops/GetRoutingInfoOperation.cc:12)
>>>               GetRoutingInfoOperation.cc.o:(hf3fs::mgmtd::GetRoutingInfoOperation::handle(hf3fs::mgmtd::MgmtdState&)::$_0::operator()() const (.resume)) in archive libmgmtd.a
clang: error: linker command failed with exit code 1 (use -v to see invocation)
gmake[2]: *** [src/mgmtd/CMakeFiles/mgmtd_main.dir/build.make:150: bin/mgmtd_main] Error 1
gmake[1]: *** [CMakeFiles/Makefile2:4531: src/mgmtd/CMakeFiles/mgmtd_main.dir/all] Error 2
[ 85%] Linking CXX static library libmeta.a
[ 85%] Built target meta
[ 85%] Linking CXX executable ../../bin/storage_main
[ 85%] Linking CXX static library libmeta-client.a
[ 85%] Built target meta-client
[ 85%] Built target storage_main
gmake: *** [Makefile:146: all] Error 2

I'm using 100GB of memory to avoid OOM.

The Arch Linux build still get's stuck with arrow -- but don't worry about this one just yet, let's first try to figure out the Ubuntu 22.04 issue.
cat /etc/os-release

PRETTY_NAME="Ubuntu 22.04.5 LTS"
NAME="Ubuntu"
VERSION_ID="22.04"
VERSION="22.04.5 LTS (Jammy Jellyfish)"
VERSION_CODENAME=jammy
ID=ubuntu
ID_LIKE=debian
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
UBUNTU_CODENAME=jammy

I posted the OS info, just in case I might be missing something. I can also spin up an Ubuntu 20 version if needed.

Thanks for the support!

<!-- gh-comment-id:2692614716 --> @sergio-com-ai commented on GitHub (Mar 2, 2025): Hello, thank you for the speedy patch. It was able to compile apache-arrow-cpp but got stuck now on the `test_mgmtd: ``` [ 81%] Linking CXX static library libsimple_example.a [ 82%] Built target simple_example [ 82%] Building CXX object src/simple_example/CMakeFiles/simple_example_main.dir/main.cpp.o [ 82%] Linking CXX static library libmigration.a [ 82%] Built target migration [ 83%] Building CXX object src/migration/CMakeFiles/migration_main.dir/main.cpp.o [ 83%] Linking CXX static library libmgmtd.a [ 83%] Built target mgmtd [ 83%] Building CXX object tests/mgmtd/CMakeFiles/mgmtd-test-helper.dir/MgmtdTestHelper.cpp.o [ 83%] Building CXX object src/mgmtd/CMakeFiles/mgmtd_main.dir/mgmtd.cpp.o [ 83%] Linking CXX static library libmeta-stub.a [ 83%] Built target meta-stub [ 83%] Building CXX object src/client/meta/CMakeFiles/meta-client.dir/MetaClient.cc.o [ 83%] Building CXX object src/client/meta/CMakeFiles/meta-client.dir/ServerSelectionStrategy.cc.o [ 83%] Linking CXX static library libstorage.a [ 83%] Built target storage [ 83%] Building CXX object src/storage/CMakeFiles/storage_main.dir/storage.cpp.o [ 83%] Linking CXX static library libmgmtd-test-helper.a [ 83%] Built target mgmtd-test-helper [ 83%] Building CXX object tests/mgmtd/CMakeFiles/test_mgmtd.dir/TestMgmtdStore.cc.o [ 83%] Building CXX object tests/mgmtd/CMakeFiles/test_mgmtd.dir/TestMgmtdOperator.cc.o [ 83%] Building CXX object tests/mgmtd/CMakeFiles/test_mgmtd.dir/TestNodeSelector.cc.o [ 83%] Building CXX object tests/mgmtd/CMakeFiles/test_mgmtd.dir/TestUpdateChain.cc.o [ 83%] Linking CXX executable ../../bin/migration_main [ 83%] Linking CXX executable ../../bin/simple_example_main [ 83%] Linking CXX executable ../../bin/mgmtd_main [ 83%] Built target migration_main [ 83%] Built target simple_example_main [ 83%] Linking CXX executable ../test_mgmtd ld.lld: error: undefined symbol: hf3fs::mgmtd::MgmtdData::reset(hf3fs::StrongTypedef<unsigned long, hf3fs::flat::RoutingInfoVersionTag>, robin_hood::detail::Table<false, 80ul, hf3fs::Stro >>> referenced by MgmtdLeaseExtender.cc:173 (/home/ubuntu/Data/Git/3fs/src/mgmtd/background/MgmtdLeaseExtender.cc:173) >>> MgmtdLeaseExtender.cc.o:(hf3fs::mgmtd::(anonymous namespace)::onNewLease(hf3fs::mgmtd::MgmtdState&, hf3fs::core::ServiceOperation&, hf3fs::mgmtd::MgmtdData&, hf3fs::UtcT ld.lld: error: undefined symbol: hf3fs::mgmtd::GetPrimaryMgmtdOperation::handle(hf3fs::mgmtd::MgmtdState&) const >>> referenced by MgmtdServiceDef.h:3 (/home/ubuntu/Data/Git/3fs/src/fbs/mgmtd/MgmtdServiceDef.h:3) >>> MgmtdOperator.cc.o:(hf3fs::mgmtd::MgmtdOperator::getPrimaryMgmtd(hf3fs::mgmtd::GetPrimaryMgmtdReq, hf3fs::net::PeerInfo const&) (.resume)) in archive ../../src/mgmtd/lib ld.lld: error: undefined symbol: hf3fs::mgmtd::GetConfigVersionsOperation::handle(hf3fs::mgmtd::MgmtdState&) >>> referenced by MgmtdServiceDef.h:20 (/home/ubuntu/Data/Git/3fs/src/fbs/mgmtd/MgmtdServiceDef.h:20) >>> MgmtdOperator.cc.o:(hf3fs::mgmtd::MgmtdOperator::getConfigVersions(hf3fs::mgmtd::GetConfigVersionsReq, hf3fs::net::PeerInfo const&) (.resume)) in archive ../../src/mgmtd ld.lld: error: undefined symbol: hf3fs::mgmtd::ListOrphanTargetsOperation::handle(hf3fs::mgmtd::MgmtdState&) >>> referenced by MgmtdServiceDef.h:23 (/home/ubuntu/Data/Git/3fs/src/fbs/mgmtd/MgmtdServiceDef.h:23) >>> MgmtdOperator.cc.o:(hf3fs::mgmtd::MgmtdOperator::listOrphanTargets(hf3fs::mgmtd::ListOrphanTargetsReq, hf3fs::net::PeerInfo const&) (.resume)) in archive ../../src/mgmtd ld.lld: error: undefined symbol: hf3fs::mgmtd::MgmtdRoutingInfoVersionUpdater::MgmtdRoutingInfoVersionUpdater(hf3fs::mgmtd::MgmtdState&) >>> referenced by unique_ptr.h:1065 (/usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/unique_ptr.h:1065) >>> MgmtdBackgroundRunner.cc.o:(hf3fs::mgmtd::MgmtdBackgroundRunner::MgmtdBackgroundRunner(hf3fs::mgmtd::MgmtdState&)) in archive ../../src/mgmtd/libmgmtd.a ld.lld: error: undefined symbol: hf3fs::mgmtd::MgmtdRoutingInfoVersionUpdater::update() >>> referenced by MgmtdBackgroundRunner.cc:65 (/home/ubuntu/Data/Git/3fs/src/mgmtd/background/MgmtdBackgroundRunner.cc:65) >>> MgmtdBackgroundRunner.cc.o:(std::_Function_handler<folly::coro::Task<void> (), hf3fs::mgmtd::MgmtdBackgroundRunner::start()::$_6>::_M_invoke(std::_Any_data const&)) in a ld.lld: error: undefined symbol: hf3fs::mgmtd::MgmtdData::appendChangedChains(hf3fs::StrongTypedef<unsigned int, hf3fs::flat::ChainIdTag>, std::vector<hf3fs::flat::ChainInfo, std::allocat >>> referenced by MgmtdChainsUpdater.cc:35 (/home/ubuntu/Data/Git/3fs/src/mgmtd/background/MgmtdChainsUpdater.cc:35) >>> MgmtdChainsUpdater.cc.o:(hf3fs::mgmtd::(anonymous namespace)::Op::handle(hf3fs::mgmtd::MgmtdState&, std::chrono::time_point<std::chrono::_V2::steady_clock, std::chrono:: ld.lld: error: undefined symbol: hf3fs::mgmtd::MgmtdData::getLatestConfigVersion(hf3fs::flat::NodeType) const >>> referenced by MgmtdMetricsUpdater.cc:91 (/home/ubuntu/Data/Git/3fs/src/mgmtd/background/MgmtdMetricsUpdater.cc:91) >>> MgmtdMetricsUpdater.cc.o:(hf3fs::mgmtd::(anonymous namespace)::Op::handle(hf3fs::mgmtd::MgmtdState&) (.resume)) in archive ../../src/mgmtd/libmgmtd.a >>> referenced by MgmtdMetricsUpdater.cc:91 (/home/ubuntu/Data/Git/3fs/src/mgmtd/background/MgmtdMetricsUpdater.cc:91) >>> MgmtdMetricsUpdater.cc.o:(hf3fs::mgmtd::(anonymous namespace)::Op::handle(hf3fs::mgmtd::MgmtdState&) (.resume)) in archive ../../src/mgmtd/libmgmtd.a ld.lld: error: undefined symbol: hf3fs::mgmtd::MgmtdData::checkConfigVersion(hf3fs::core::ServiceOperation&, hf3fs::flat::NodeType, hf3fs::StrongTypedef<unsigned long, hf3fs::flat::Config >>> referenced by HeartbeatOperation.cc:73 (/home/ubuntu/Data/Git/3fs/src/mgmtd/ops/HeartbeatOperation.cc:73) >>> HeartbeatOperation.cc.o:(hf3fs::mgmtd::(anonymous namespace)::prepareHandleHeartbeat(hf3fs::mgmtd::MgmtdState&, hf3fs::core::ServiceOperation&, hf3fs::mgmtd::MgmtdData c >>> referenced by ExtendClientSessionOperation.cc:35 (/home/ubuntu/Data/Git/3fs/src/mgmtd/ops/ExtendClientSessionOperation.cc:35) >>> ExtendClientSessionOperation.cc.o:(hf3fs::mgmtd::ExtendClientSessionOperation::handle(hf3fs::mgmtd::MgmtdState&)::$_0::operator()() const (.resume)) in archive ../../src ld.lld: error: undefined symbol: hf3fs::mgmtd::MgmtdData::getConfig(hf3fs::flat::NodeType, hf3fs::StrongTypedef<unsigned long, hf3fs::flat::ConfigVersionTag>, bool) const >>> referenced by HeartbeatOperation.cc:196 (/home/ubuntu/Data/Git/3fs/src/mgmtd/ops/HeartbeatOperation.cc:196) >>> HeartbeatOperation.cc.o:(hf3fs::mgmtd::HeartbeatOperation::handle(hf3fs::mgmtd::MgmtdState&)::$_0::operator()() const (.resume)) in archive ../../src/mgmtd/libmgmtd.a >>> referenced by GetConfigOperation.cc:13 (/home/ubuntu/Data/Git/3fs/src/mgmtd/ops/GetConfigOperation.cc:13) >>> GetConfigOperation.cc.o:(hf3fs::mgmtd::GetConfigOperation::handle(hf3fs::mgmtd::MgmtdState&)::$_0::operator()() const (.resume)) in archive ../../src/mgmtd/libmgmtd.a >>> referenced by ExtendClientSessionOperation.cc:36 (/home/ubuntu/Data/Git/3fs/src/mgmtd/ops/ExtendClientSessionOperation.cc:36) >>> ExtendClientSessionOperation.cc.o:(hf3fs::mgmtd::ExtendClientSessionOperation::handle(hf3fs::mgmtd::MgmtdState&)::$_0::operator()() const (.resume)) in archive ../../src ld.lld: error: undefined symbol: hf3fs::mgmtd::MgmtdData::checkRoutingInfoVersion(hf3fs::core::ServiceOperation&, hf3fs::StrongTypedef<unsigned long, hf3fs::flat::RoutingInfoVersionTag>) >>> referenced by GetRoutingInfoOperation.cc:11 (/home/ubuntu/Data/Git/3fs/src/mgmtd/ops/GetRoutingInfoOperation.cc:11) >>> GetRoutingInfoOperation.cc.o:(hf3fs::mgmtd::GetRoutingInfoOperation::handle(hf3fs::mgmtd::MgmtdState&)::$_0::operator()() const (.resume)) in archive ../../src/mgmtd/lib ld.lld: error: undefined symbol: hf3fs::mgmtd::MgmtdData::getRoutingInfo(hf3fs::StrongTypedef<unsigned long, hf3fs::flat::RoutingInfoVersionTag>, hf3fs::mgmtd::MgmtdConfig const&) const >>> referenced by GetRoutingInfoOperation.cc:12 (/home/ubuntu/Data/Git/3fs/src/mgmtd/ops/GetRoutingInfoOperation.cc:12) >>> GetRoutingInfoOperation.cc.o:(hf3fs::mgmtd::GetRoutingInfoOperation::handle(hf3fs::mgmtd::MgmtdState&)::$_0::operator()() const (.resume)) in archive ../../src/mgmtd/lib clang: error: linker command failed with exit code 1 (use -v to see invocation) gmake[2]: *** [tests/mgmtd/CMakeFiles/test_mgmtd.dir/build.make:203: tests/test_mgmtd] Error 1 gmake[1]: *** [CMakeFiles/Makefile2:6060: tests/mgmtd/CMakeFiles/test_mgmtd.dir/all] Error 2 gmake[1]: *** Waiting for unfinished jobs.... ld.lld: error: undefined symbol: hf3fs::mgmtd::GetPrimaryMgmtdOperation::handle(hf3fs::mgmtd::MgmtdState&) const >>> referenced by MgmtdServiceDef.h:3 (/home/ubuntu/Data/Git/3fs/src/fbs/mgmtd/MgmtdServiceDef.h:3) >>> MgmtdOperator.cc.o:(hf3fs::mgmtd::MgmtdOperator::getPrimaryMgmtd(hf3fs::mgmtd::GetPrimaryMgmtdReq, hf3fs::net::PeerInfo const&) (.resume)) in archive libmgmtd.a ld.lld: error: undefined symbol: hf3fs::mgmtd::GetConfigVersionsOperation::handle(hf3fs::mgmtd::MgmtdState&) >>> referenced by MgmtdServiceDef.h:20 (/home/ubuntu/Data/Git/3fs/src/fbs/mgmtd/MgmtdServiceDef.h:20) >>> MgmtdOperator.cc.o:(hf3fs::mgmtd::MgmtdOperator::getConfigVersions(hf3fs::mgmtd::GetConfigVersionsReq, hf3fs::net::PeerInfo const&) (.resume)) in archive libmgmtd.a ld.lld: error: undefined symbol: hf3fs::mgmtd::ListOrphanTargetsOperation::handle(hf3fs::mgmtd::MgmtdState&) >>> referenced by MgmtdServiceDef.h:23 (/home/ubuntu/Data/Git/3fs/src/fbs/mgmtd/MgmtdServiceDef.h:23) >>> MgmtdOperator.cc.o:(hf3fs::mgmtd::MgmtdOperator::listOrphanTargets(hf3fs::mgmtd::ListOrphanTargetsReq, hf3fs::net::PeerInfo const&) (.resume)) in archive libmgmtd.a ld.lld: error: undefined symbol: hf3fs::mgmtd::MgmtdRoutingInfoVersionUpdater::MgmtdRoutingInfoVersionUpdater(hf3fs::mgmtd::MgmtdState&) >>> referenced by unique_ptr.h:1065 (/usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/unique_ptr.h:1065) >>> MgmtdBackgroundRunner.cc.o:(hf3fs::mgmtd::MgmtdBackgroundRunner::MgmtdBackgroundRunner(hf3fs::mgmtd::MgmtdState&)) in archive libmgmtd.a ld.lld: error: undefined symbol: hf3fs::mgmtd::MgmtdRoutingInfoVersionUpdater::update() >>> referenced by MgmtdBackgroundRunner.cc:65 (/home/ubuntu/Data/Git/3fs/src/mgmtd/background/MgmtdBackgroundRunner.cc:65) >>> MgmtdBackgroundRunner.cc.o:(std::_Function_handler<folly::coro::Task<void> (), hf3fs::mgmtd::MgmtdBackgroundRunner::start()::$_6>::_M_invoke(std::_Any_data const&)) in archive libmgmtd.a ld.lld: error: undefined symbol: hf3fs::mgmtd::MgmtdData::reset(hf3fs::StrongTypedef<unsigned long, hf3fs::flat::RoutingInfoVersionTag>, robin_hood::detail::Table<false, 80ul, hf3fs::StrongTypedef<unsigned int, hf3fs::flat::NodeIdTag>, hf3fs::mgmtd::NodeInfoWrapper, robin_hood::hash<hf3fs::StrongTypedef<unsigned int, hf3fs::flat::NodeIdTag>, void>, std::equal_to<hf3fs::StrongTypedef<unsigned int, hf3fs::flat::NodeIdTag> > >, std::map<hf3fs::flat::NodeType, std::map<hf3fs::StrongTypedef<unsigned long, hf3fs::flat::ConfigVersionTag>, hf3fs::flat::ConfigInfo, std::less<hf3fs::StrongTypedef<unsigned long, hf3fs::flat::ConfigVersionTag> >, std::allocator<std::pair<hf3fs::StrongTypedef<unsigned long, hf3fs::flat::ConfigVersionTag> const, hf3fs::flat::ConfigInfo> > >, std::less<hf3fs::flat::NodeType>, std::allocator<std::pair<hf3fs::flat::NodeType const, std::map<hf3fs::StrongTypedef<unsigned long, hf3fs::flat::ConfigVersionTag>, hf3fs::flat::ConfigInfo, std::less<hf3fs::StrongTypedef<unsigned long, hf3fs::flat::ConfigVersionTag> >, std::allocator<std::pair<hf3fs::StrongTypedef<unsigned long, hf3fs::flat::ConfigVersionTag> const, hf3fs::flat::ConfigInfo> > > > > >, robin_hood::detail::Table<false, 80ul, hf3fs::StrongTypedef<unsigned int, hf3fs::flat::ChainTableIdTag>, std::map<hf3fs::StrongTypedef<unsigned int, hf3fs::flat::ChainTableVersionTag>, hf3fs::flat::ChainTable, std::less<hf3fs::StrongTypedef<unsigned int, hf3fs::flat::ChainTableVersionTag> >, std::allocator<std::pair<hf3fs::StrongTypedef<unsigned int, hf3fs::flat::ChainTableVersionTag> const, hf3fs::flat::ChainTable> > >, robin_hood::hash<hf3fs::StrongTypedef<unsigned int, hf3fs::flat::ChainTableIdTag>, void>, std::equal_to<hf3fs::StrongTypedef<unsigned int, hf3fs::flat::ChainTableIdTag> > >, robin_hood::detail::Table<false, 80ul, hf3fs::StrongTypedef<unsigned int, hf3fs::flat::ChainIdTag>, hf3fs::flat::ChainInfo, robin_hood::hash<hf3fs::StrongTypedef<unsigned int, hf3fs::flat::ChainIdTag>, void>, std::equal_to<hf3fs::StrongTypedef<unsigned int, hf3fs::flat::ChainIdTag> > >, robin_hood::detail::Table<false, 80ul, hf3fs::StrongTypedef<unsigned long, hf3fs::flat::TargetIdTag>, hf3fs::mgmtd::TargetInfo, robin_hood::hash<hf3fs::StrongTypedef<unsigned long, hf3fs::flat::TargetIdTag>, void>, std::equal_to<hf3fs::StrongTypedef<unsigned long, hf3fs::flat::TargetIdTag> > >, robin_hood::detail::Table<false, 80ul, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::vector<hf3fs::flat::TagPair, std::allocator<hf3fs::flat::TagPair> >, hf3fs::StringHash, std::equal_to<void> >) >>> referenced by MgmtdLeaseExtender.cc:173 (/home/ubuntu/Data/Git/3fs/src/mgmtd/background/MgmtdLeaseExtender.cc:173) >>> MgmtdLeaseExtender.cc.o:(hf3fs::mgmtd::(anonymous namespace)::onNewLease(hf3fs::mgmtd::MgmtdState&, hf3fs::core::ServiceOperation&, hf3fs::mgmtd::MgmtdData&, hf3fs::UtcTime) (.resume)) in archive libmgmtd.a ld.lld: error: undefined symbol: hf3fs::mgmtd::MgmtdData::appendChangedChains(hf3fs::StrongTypedef<unsigned int, hf3fs::flat::ChainIdTag>, std::vector<hf3fs::flat::ChainInfo, std::allocator<hf3fs::flat::ChainInfo> >&, bool) const >>> referenced by MgmtdChainsUpdater.cc:35 (/home/ubuntu/Data/Git/3fs/src/mgmtd/background/MgmtdChainsUpdater.cc:35) >>> MgmtdChainsUpdater.cc.o:(hf3fs::mgmtd::(anonymous namespace)::Op::handle(hf3fs::mgmtd::MgmtdState&, std::chrono::time_point<std::chrono::_V2::steady_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > >, bool) (.resume)) in archive libmgmtd.a ld.lld: error: undefined symbol: hf3fs::mgmtd::MgmtdData::getLatestConfigVersion(hf3fs::flat::NodeType) const >>> referenced by MgmtdMetricsUpdater.cc:91 (/home/ubuntu/Data/Git/3fs/src/mgmtd/background/MgmtdMetricsUpdater.cc:91) >>> MgmtdMetricsUpdater.cc.o:(hf3fs::mgmtd::(anonymous namespace)::Op::handle(hf3fs::mgmtd::MgmtdState&) (.resume)) in archive libmgmtd.a >>> referenced by MgmtdMetricsUpdater.cc:91 (/home/ubuntu/Data/Git/3fs/src/mgmtd/background/MgmtdMetricsUpdater.cc:91) >>> MgmtdMetricsUpdater.cc.o:(hf3fs::mgmtd::(anonymous namespace)::Op::handle(hf3fs::mgmtd::MgmtdState&) (.resume)) in archive libmgmtd.a ld.lld: error: undefined symbol: hf3fs::mgmtd::MgmtdData::checkConfigVersion(hf3fs::core::ServiceOperation&, hf3fs::flat::NodeType, hf3fs::StrongTypedef<unsigned long, hf3fs::flat::ConfigVersionTag>) const >>> referenced by HeartbeatOperation.cc:73 (/home/ubuntu/Data/Git/3fs/src/mgmtd/ops/HeartbeatOperation.cc:73) >>> HeartbeatOperation.cc.o:(hf3fs::mgmtd::(anonymous namespace)::prepareHandleHeartbeat(hf3fs::mgmtd::MgmtdState&, hf3fs::core::ServiceOperation&, hf3fs::mgmtd::MgmtdData const&, hf3fs::UtcTime, hf3fs::flat::HeartbeatInfo const&, hf3fs::mgmtd::NodeInfoWrapper const**, hf3fs::flat::NodeInfo&)) in archive libmgmtd.a >>> referenced by ExtendClientSessionOperation.cc:35 (/home/ubuntu/Data/Git/3fs/src/mgmtd/ops/ExtendClientSessionOperation.cc:35) >>> ExtendClientSessionOperation.cc.o:(hf3fs::mgmtd::ExtendClientSessionOperation::handle(hf3fs::mgmtd::MgmtdState&)::$_0::operator()() const (.resume)) in archive libmgmtd.a ld.lld: error: undefined symbol: hf3fs::mgmtd::MgmtdData::getConfig(hf3fs::flat::NodeType, hf3fs::StrongTypedef<unsigned long, hf3fs::flat::ConfigVersionTag>, bool) const >>> referenced by HeartbeatOperation.cc:196 (/home/ubuntu/Data/Git/3fs/src/mgmtd/ops/HeartbeatOperation.cc:196) >>> HeartbeatOperation.cc.o:(hf3fs::mgmtd::HeartbeatOperation::handle(hf3fs::mgmtd::MgmtdState&)::$_0::operator()() const (.resume)) in archive libmgmtd.a >>> referenced by GetConfigOperation.cc:13 (/home/ubuntu/Data/Git/3fs/src/mgmtd/ops/GetConfigOperation.cc:13) >>> GetConfigOperation.cc.o:(hf3fs::mgmtd::GetConfigOperation::handle(hf3fs::mgmtd::MgmtdState&)::$_0::operator()() const (.resume)) in archive libmgmtd.a >>> referenced by ExtendClientSessionOperation.cc:36 (/home/ubuntu/Data/Git/3fs/src/mgmtd/ops/ExtendClientSessionOperation.cc:36) >>> ExtendClientSessionOperation.cc.o:(hf3fs::mgmtd::ExtendClientSessionOperation::handle(hf3fs::mgmtd::MgmtdState&)::$_0::operator()() const (.resume)) in archive libmgmtd.a ld.lld: error: undefined symbol: hf3fs::mgmtd::MgmtdData::checkRoutingInfoVersion(hf3fs::core::ServiceOperation&, hf3fs::StrongTypedef<unsigned long, hf3fs::flat::RoutingInfoVersionTag>) const >>> referenced by GetRoutingInfoOperation.cc:11 (/home/ubuntu/Data/Git/3fs/src/mgmtd/ops/GetRoutingInfoOperation.cc:11) >>> GetRoutingInfoOperation.cc.o:(hf3fs::mgmtd::GetRoutingInfoOperation::handle(hf3fs::mgmtd::MgmtdState&)::$_0::operator()() const (.resume)) in archive libmgmtd.a ld.lld: error: undefined symbol: hf3fs::mgmtd::MgmtdData::getRoutingInfo(hf3fs::StrongTypedef<unsigned long, hf3fs::flat::RoutingInfoVersionTag>, hf3fs::mgmtd::MgmtdConfig const&) const >>> referenced by GetRoutingInfoOperation.cc:12 (/home/ubuntu/Data/Git/3fs/src/mgmtd/ops/GetRoutingInfoOperation.cc:12) >>> GetRoutingInfoOperation.cc.o:(hf3fs::mgmtd::GetRoutingInfoOperation::handle(hf3fs::mgmtd::MgmtdState&)::$_0::operator()() const (.resume)) in archive libmgmtd.a clang: error: linker command failed with exit code 1 (use -v to see invocation) gmake[2]: *** [src/mgmtd/CMakeFiles/mgmtd_main.dir/build.make:150: bin/mgmtd_main] Error 1 gmake[1]: *** [CMakeFiles/Makefile2:4531: src/mgmtd/CMakeFiles/mgmtd_main.dir/all] Error 2 [ 85%] Linking CXX static library libmeta.a [ 85%] Built target meta [ 85%] Linking CXX executable ../../bin/storage_main [ 85%] Linking CXX static library libmeta-client.a [ 85%] Built target meta-client [ 85%] Built target storage_main gmake: *** [Makefile:146: all] Error 2 ``` I'm using 100GB of memory to avoid OOM. The Arch Linux build still get's stuck with arrow -- but don't worry about this one just yet, let's first try to figure out the Ubuntu 22.04 issue. ` cat /etc/os-release` ``` PRETTY_NAME="Ubuntu 22.04.5 LTS" NAME="Ubuntu" VERSION_ID="22.04" VERSION="22.04.5 LTS (Jammy Jellyfish)" VERSION_CODENAME=jammy ID=ubuntu ID_LIKE=debian HOME_URL="https://www.ubuntu.com/" SUPPORT_URL="https://help.ubuntu.com/" BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/" PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy" UBUNTU_CODENAME=jammy ``` I posted the OS info, just in case I might be missing something. I can also spin up an Ubuntu 20 version if needed. Thanks for the support!
Author
Owner

@SF-Zhou commented on GitHub (Mar 2, 2025):

This is strange. You can try deleting the existing build directory and rerunning the compilation command:

rm -rf build

sudo apt install -y cmake libuv1-dev liblz4-dev liblzma-dev libdouble-conversion-dev libprocps-dev libdwarf-dev libunwind-dev \
  libaio-dev libgflags-dev libgoogle-glog-dev libgtest-dev libgmock-dev clang-format-14 clang-14 clang-tidy-14 lld-14 \
  libgoogle-perftools-dev google-perftools libssl-dev gcc-12 g++-12 libboost-all-dev

cmake -S . -B build -DCMAKE_CXX_COMPILER=clang++-14 -DCMAKE_C_COMPILER=clang-14 -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_EXPORT_COMPILE_COMMANDS=ON

cmake --build build -j 32
<!-- gh-comment-id:2692640532 --> @SF-Zhou commented on GitHub (Mar 2, 2025): This is strange. You can try deleting the existing build directory and rerunning the compilation command: ```bash rm -rf build sudo apt install -y cmake libuv1-dev liblz4-dev liblzma-dev libdouble-conversion-dev libprocps-dev libdwarf-dev libunwind-dev \ libaio-dev libgflags-dev libgoogle-glog-dev libgtest-dev libgmock-dev clang-format-14 clang-14 clang-tidy-14 lld-14 \ libgoogle-perftools-dev google-perftools libssl-dev gcc-12 g++-12 libboost-all-dev cmake -S . -B build -DCMAKE_CXX_COMPILER=clang++-14 -DCMAKE_C_COMPILER=clang-14 -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_EXPORT_COMPILE_COMMANDS=ON cmake --build build -j 32 ```
Author
Owner

@sergio-com-ai commented on GitHub (Mar 2, 2025):

Ok did the rm and compile again, and I think it went through. I'll report back tomorrow I'm falling asleep, thank for the support so far. I'll close this ticket for now as the compile went through, will open another ticket for further issues (and the one related to Arch Linux).

Thanks for the support!

<!-- gh-comment-id:2692675179 --> @sergio-com-ai commented on GitHub (Mar 2, 2025): Ok did the rm and compile again, and I think it went through. I'll report back tomorrow I'm falling asleep, thank for the support so far. I'll close this ticket for now as the compile went through, will open another ticket for further issues (and the one related to Arch Linux). Thanks for the support!
Author
Owner

@huww98 commented on GitHub (Mar 2, 2025):

It seems we build arrow with unlimited number of jobs. This is not friendly to those who want to try this on small machines with less RAM.

Maybe we should apply this patch, to let the sub-make share the jobserver with outer make.

--- a/cmake/ApacheArrow.cmake
+++ b/cmake/ApacheArrow.cmake
@@ -36,7 +36,8 @@ ExternalProject_Add(
         -DARROW_BUILD_EXAMPLES=OFF \
         -DARROW_PARQUET=ON -DARROW_CSV=ON \
         -DARROW_WITH_ZSTD=ON -DARROW_WITH_LZ4=ON -DARROW_WITH_ZLIB=ON"
-    BUILD_COMMAND bash -x -c "source thirdparty/export.sh && cmake --build . -j"
+    BUILD_COMMAND bash -x -c "source thirdparty/export.sh && cmake --build ."
+    BUILD_JOB_SERVER_AWARE 1
     INSTALL_COMMAND cmake --install . --prefix "${PREFIX}"
     BUILD_BYPRODUCTS
         "${ARROW_RELEASE_BUILD_DIR}/libarrow.a"

But BUILD_JOB_SERVER_AWARE is added in cmake 1.28. Older cmake will also work, but only run one job for arrow, with warning like: make[3]: warning: jobserver unavailable: using -j1. Add '+' to parent make rule..

Install new cmake in Ubuntu is pretty easy, just pip install cmake. So I think we can use this new feature. Or we may just change this to something safer, maybe -j 16, which works for me on 16GiB RAM. What do you think?

<!-- gh-comment-id:2692843447 --> @huww98 commented on GitHub (Mar 2, 2025): It seems we build arrow with unlimited number of jobs. This is not friendly to those who want to try this on small machines with less RAM. Maybe we should apply this patch, to let the sub-make share the jobserver with outer make. ```diff --- a/cmake/ApacheArrow.cmake +++ b/cmake/ApacheArrow.cmake @@ -36,7 +36,8 @@ ExternalProject_Add( -DARROW_BUILD_EXAMPLES=OFF \ -DARROW_PARQUET=ON -DARROW_CSV=ON \ -DARROW_WITH_ZSTD=ON -DARROW_WITH_LZ4=ON -DARROW_WITH_ZLIB=ON" - BUILD_COMMAND bash -x -c "source thirdparty/export.sh && cmake --build . -j" + BUILD_COMMAND bash -x -c "source thirdparty/export.sh && cmake --build ." + BUILD_JOB_SERVER_AWARE 1 INSTALL_COMMAND cmake --install . --prefix "${PREFIX}" BUILD_BYPRODUCTS "${ARROW_RELEASE_BUILD_DIR}/libarrow.a" ``` But `BUILD_JOB_SERVER_AWARE` is added in cmake 1.28. Older cmake will also work, but only run one job for arrow, with warning like: `make[3]: warning: jobserver unavailable: using -j1. Add '+' to parent make rule.`. Install new cmake in Ubuntu is pretty easy, just `pip install cmake`. So I think we can use this new feature. Or we may just change this to something safer, maybe `-j 16`, which works for me on 16GiB RAM. What do you think?
Author
Owner

@SF-Zhou commented on GitHub (Mar 3, 2025):

It seems we build arrow with unlimited number of jobs. This is not friendly to those who want to try this on small machines with less RAM.

Maybe we should apply this patch, to let the sub-make share the jobserver with outer make.

--- a/cmake/ApacheArrow.cmake
+++ b/cmake/ApacheArrow.cmake
@@ -36,7 +36,8 @@ ExternalProject_Add(
-DARROW_BUILD_EXAMPLES=OFF
-DARROW_PARQUET=ON -DARROW_CSV=ON
-DARROW_WITH_ZSTD=ON -DARROW_WITH_LZ4=ON -DARROW_WITH_ZLIB=ON"

  • BUILD_COMMAND bash -x -c "source thirdparty/export.sh && cmake --build . -j"
  • BUILD_COMMAND bash -x -c "source thirdparty/export.sh && cmake --build ."
  • BUILD_JOB_SERVER_AWARE 1
    INSTALL_COMMAND cmake --install . --prefix "${PREFIX}"
    BUILD_BYPRODUCTS
    "${ARROW_RELEASE_BUILD_DIR}/libarrow.a"

But BUILD_JOB_SERVER_AWARE is added in cmake 1.28. Older cmake will also work, but only run one job for arrow, with warning like: make[3]: warning: jobserver unavailable: using -j1. Add '+' to parent make rule..

Install new cmake in Ubuntu is pretty easy, just pip install cmake. So I think we can use this new feature. Or we may just change this to something safer, maybe -j 16, which works for me on 16GiB RAM. What do you think?

I’ve merged your patch. Thanks!

<!-- gh-comment-id:2694327344 --> @SF-Zhou commented on GitHub (Mar 3, 2025): > It seems we build arrow with unlimited number of jobs. This is not friendly to those who want to try this on small machines with less RAM. > > Maybe we should apply this patch, to let the sub-make share the jobserver with outer make. > > --- a/cmake/ApacheArrow.cmake > +++ b/cmake/ApacheArrow.cmake > @@ -36,7 +36,8 @@ ExternalProject_Add( > -DARROW_BUILD_EXAMPLES=OFF \ > -DARROW_PARQUET=ON -DARROW_CSV=ON \ > -DARROW_WITH_ZSTD=ON -DARROW_WITH_LZ4=ON -DARROW_WITH_ZLIB=ON" > - BUILD_COMMAND bash -x -c "source thirdparty/export.sh && cmake --build . -j" > + BUILD_COMMAND bash -x -c "source thirdparty/export.sh && cmake --build ." > + BUILD_JOB_SERVER_AWARE 1 > INSTALL_COMMAND cmake --install . --prefix "${PREFIX}" > BUILD_BYPRODUCTS > "${ARROW_RELEASE_BUILD_DIR}/libarrow.a" > > But `BUILD_JOB_SERVER_AWARE` is added in cmake 1.28. Older cmake will also work, but only run one job for arrow, with warning like: `make[3]: warning: jobserver unavailable: using -j1. Add '+' to parent make rule.`. > > Install new cmake in Ubuntu is pretty easy, just `pip install cmake`. So I think we can use this new feature. Or we may just change this to something safer, maybe `-j 16`, which works for me on 16GiB RAM. What do you think? I’ve merged your patch. Thanks!
Sign in to join this conversation.
No labels
pull-request
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
deepseek-ai/3FS#24
No description provided.