Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Can't compile in Ubunbu 22.04 #33

Closed
sergio-com-ai opened this issue Mar 2, 2025 · 9 comments
Closed

Can't compile in Ubunbu 22.04 #33

sergio-com-ai opened this issue Mar 2, 2025 · 9 comments

Comments

@sergio-com-ai
Copy link

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?

@iamazy
Copy link

iamazy commented Mar 2, 2025

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

@SF-Zhou
Copy link
Collaborator

SF-Zhou commented Mar 2, 2025

Please pull the latest code and try again.

@iamazy
Copy link

iamazy commented Mar 2, 2025

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

@SF-Zhou
Copy link
Collaborator

SF-Zhou commented 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.

@sergio-com-ai
Copy link
Author

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!

@SF-Zhou
Copy link
Collaborator

SF-Zhou commented 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

@sergio-com-ai
Copy link
Author

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!

@huww98
Copy link
Contributor

huww98 commented 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?

@SF-Zhou
Copy link
Collaborator

SF-Zhou commented 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 up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants