andrewdavidmackenzie / anna Goto Github PK
View Code? Open in Web Editor NEWThis project forked from hydro-project/anna
A low-latency, cloud-native KVS
License: Apache License 2.0
This project forked from hydro-project/anna
A low-latency, cloud-native KVS
License: Apache License 2.0
move anna protobuf definition file into an anna only directory and remove the ones not used
/common/proto
We should have three client libraries that other apps can link into their code to interact with ann
and each one has a (small) CLI built using that client lib.
We should be able to use any of them in tests and all work the same.
Current Coverage report includes a lot of system files and files from libraries outside the project:
❯ lcov --list coverage.info
Reading tracefile coverage.info
|Lines |Functions |Branches
Filename |Rate Num|Rate Num|Rate Num
================================================================================
[/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.3.sdk/usr/include/]
_ctype.h |28.6% 28|30.8% 13| - 0
_wctype.h | 0.0% 2| 0.0% 1| - 0
c++/v1/__algorithm/comp.h | 100% 2| 100% 2| - 0
c++/v1/__algorithm/copy.h | 100% 10| 100% 2| - 0
c++/v1/__algorithm/equal.h |87.5% 8| 100% 2| - 0
c++/v1/__algorithm/fill_n.h | 100% 6| 100% 2| - 0
c++/v1/__algorithm/find.h | 100% 5|50.0% 2| - 0
c++/v1/__algorithm/find_first_of.h |85.7% 7| 100% 1| - 0
c++/v1/__algorithm/find_if.h | 100% 5|50.0% 2| - 0
c++/v1/__algorithm/for_each.h | 100% 4| 100% 5| - 0
c++/v1/__algorithm/iter_swap.h | 0.0% 3| 0.0% 1| - 0
c++/v1/__algorithm/max.h | 100% 4| 100% 2| - 0
c++/v1/__algorithm/min.h | 100% 4| 100% 2| - 0
c++/v1/__algorithm/move.h | 0.0% 10| 0.0% 8| - 0
c++/v1/__algorithm/move_backward.h | 0.0% 12| 0.0% 6| - 0
c++/v1/__algorithm/reverse.h | 0.0% 8| 0.0% 2| - 0
c++/v1/__algorithm/sort.h | 0.0% 214| 0.0% 7| - 0
c++/v1/__algorithm/unwrap_iter.h | 100% 6|26.3% 19| - 0
c++/v1/__bits | 0.0% 1| 0.0% 1| - 0
c++/v1/__functional/function.h |37.9% 177|46.2% 91| - 0
c++/v1/__functional/hash.h |43.1% 116|71.4% 14| - 0
c++/v1/__functional/invoke.h | 0.0% 3| 0.0% 1| - 0
c++/v1/__functional/operations.h | 100% 4|64.3% 14| - 0
c++/v1/__hash_table |81.6% 532|70.0% 1494| - 0
c++/v1/__iterator/access.h | 0.0% 2| 0.0% 1| - 0
c++/v1/__iterator/advance.h | 0.0% 14| 0.0% 12| - 0
c++/v1/__iterator/distance.h | 100% 9|44.4% 18| - 0
c++/v1/__iterator/move_iterator.h | 0.0% 6| 0.0% 18| - 0
c++/v1/__iterator/next.h | 0.0% 3| 0.0% 5| - 0
c++/v1/__iterator/ostreambuf_iterator.h | 100% 3| 100% 3| - 0
c++/v1/__iterator/reverse_iterator.h |66.7% 6|44.4% 9| - 0
c++/v1/__iterator/wrap_iter.h |64.9% 37|50.2% 235| - 0
c++/v1/__locale | 100% 4| 100% 2| - 0
c++/v1/__memory/addressof.h | 100% 2|53.2% 124| - 0
c++/v1/__memory/allocation_guard.h |87.5% 16|60.0% 30| - 0
c++/v1/__memory/allocator.h |85.0% 20|59.3% 734| - 0
c++/v1/__memory/allocator_traits.h |78.3% 23|52.7% 565| - 0
c++/v1/__memory/compressed_pair.h | 100% 37|70.8% 2653| - 0
c++/v1/__memory/pointer_traits.h | 100% 4|50.4% 139| - 0
c++/v1/__memory/shared_ptr.h |94.4% 125|53.8% 171| - 0
c++/v1/__memory/uninitialized_algorithms.h|66.7% 15|40.0% 5| - 0
c++/v1/__memory/unique_ptr.h |68.5% 73|64.5% 691| - 0
c++/v1/__mutex_base | 7.8% 64|30.0% 20| - 0
c++/v1/__split_buffer |17.9% 140|41.2% 306| - 0
c++/v1/__string |68.0% 75|72.2% 18| - 0
c++/v1/__threading_support | 0.0% 8| 0.0% 4| - 0
c++/v1/__tree |79.4% 597|47.8% 592| - 0
c++/v1/__utility/__decay_copy.h | 0.0% 2| 0.0% 2| - 0
c++/v1/__utility/forward.h | 100% 2|57.1% 408| - 0
c++/v1/__utility/move.h | 100% 4|49.5% 188| - 0
c++/v1/__utility/pair.h |50.0% 28|46.6% 328| - 0
c++/v1/__utility/swap.h | 100% 5|33.3% 42| - 0
c++/v1/atomic |84.2% 19|75.6% 41| - 0
c++/v1/chrono |33.3% 54|17.0% 100| - 0
c++/v1/condition_variable | 0.0% 2| 0.0% 4| - 0
c++/v1/deque | 0.0% 118| 0.0% 28| - 0
c++/v1/exception | 0.0% 1| 0.0% 1| - 0
c++/v1/initializer_list | 100% 3| 100% 12| - 0
c++/v1/iomanip |33.3% 18|33.3% 12| - 0
c++/v1/ios |55.1% 69|64.0% 25| - 0
c++/v1/istream |75.7% 37| 100% 4| - 0
c++/v1/limits |33.3% 6|16.7% 12| - 0
c++/v1/list | 0.0% 105| 0.0% 38| - 0
c++/v1/locale |55.2% 29| 100% 1| - 0
c++/v1/map |76.2% 63|45.7% 138| - 0
c++/v1/math.h | 7.7% 13| 9.1% 11| - 0
c++/v1/memory |70.6% 34|46.3% 41| - 0
c++/v1/new | 100% 11| 100% 5| - 0
c++/v1/ostream |53.8% 39|54.5% 11| - 0
c++/v1/queue | 0.0% 6| 0.0% 8| - 0
c++/v1/set |75.9% 54|52.6% 76| - 0
c++/v1/sstream |78.9% 19|77.8% 9| - 0
c++/v1/stdexcept | 0.0% 4| 0.0% 3| - 0
c++/v1/streambuf | 100% 7| 100% 2| - 0
c++/v1/string |68.2% 255|64.6% 96| - 0
c++/v1/string.h |33.3% 6|33.3% 6| - 0
c++/v1/string_view | 100% 6| 100% 4| - 0
c++/v1/thread | 0.0% 42| 0.0% 9| - 0
c++/v1/tuple | 100% 23|59.3% 177| - 0
c++/v1/type_traits |16.7% 6|25.0% 4| - 0
c++/v1/typeinfo |50.0% 8|50.0% 4| - 0
c++/v1/unordered_map |89.0% 91|69.2% 545| - 0
c++/v1/unordered_set |82.5% 57|77.3% 66| - 0
c++/v1/vector |67.7% 390|48.5% 1265| - 0
c++/v1/wchar.h | 0.0% 2| 0.0% 2| - 0
[/Users/andrew/workspace/anna/build/common/vendor/spdlog/spdlog-prefix/src/spdlog/include/spdlog/]
common.h |12.5% 16|10.0% 10| - 0
[/Users/andrew/workspace/anna/build/common/vendor/spdlog/spdlog-prefix/src/spdlog/include/spdlog/details/]
async_log_helper.h | 0.0% 120| 0.0% 25| - 0
async_logger_impl.h | 0.0% 35| 0.0% 8| - 0
file_helper.h |76.5% 34|87.5% 8| - 0
log_msg.h |83.3% 12|66.7% 6| - 0
logger_impl.h |56.4% 94|48.0% 50| - 0
mpmc_blocking_q.h | 0.0% 30| 0.0% 9| - 0
os.h |51.9% 27|50.0% 10| - 0
pattern_formatter_impl.h |19.1% 272| 6.2% 225| - 0
registry.h |77.8% 36| 100% 8| - 0
spdlog_impl.h |85.7% 7| 100% 2| - 0
[/Users/andrew/workspace/anna/build/common/vendor/spdlog/spdlog-prefix/src/spdlog/include/spdlog/fmt/bundled/]
format.cc | 7.2% 69| 4.8% 21| - 0
format.h |36.7% 1057|48.3% 327| - 0
[/Users/andrew/workspace/anna/build/common/vendor/spdlog/spdlog-prefix/src/spdlog/include/spdlog/]
formatter.h | 100% 1|50.0% 4| - 0
[/Users/andrew/workspace/anna/build/common/vendor/spdlog/spdlog-prefix/src/spdlog/include/spdlog/sinks/]
base_sink.h |55.6% 9|50.0% 6| - 0
file_sinks.h |64.3% 14|71.4% 7| - 0
sink.h | 100% 5|60.0% 5| - 0
[/Users/andrew/workspace/anna/build/common/vendor/zeromqcpp/zeromqcpp-prefix/src/zeromqcpp/]
zmq.hpp |85.7% 42|71.4% 21| - 0
[/Users/andrew/workspace/anna/build/googletest-src/googlemock/include/gmock/]
gmock-cardinalities.h | 0.0% 14| 0.0% 17| - 0
gmock-matchers.h |78.1% 196|72.6% 277| - 0
gmock-spec-builders.h | 0.0% 43| 0.0% 30| - 0
[/Users/andrew/workspace/anna/build/googletest-src/googlemock/include/gmock/internal/]
gmock-internal-utils.h |18.8% 16|25.0% 8| - 0
[/Users/andrew/workspace/anna/build/googletest-src/googlemock/src/]
gmock-all.cc | 100% 1| - 0| - 0
gmock-cardinalities.cc | 0.0% 63| 0.0% 17| - 0
gmock-internal-utils.cc | 0.0% 58| 0.0% 10| - 0
gmock-matchers.cc |36.2% 210|44.0% 25| - 0
gmock-spec-builders.cc | 1.5% 403| 6.9% 58| - 0
gmock.cc | 0.0% 46| 0.0% 7| - 0
[/Users/andrew/workspace/anna/build/googletest-src/googletest/include/gtest/]
gtest-message.h |50.0% 18|16.9% 65| - 0
gtest-printers.h |57.3% 89|14.3% 161| - 0
gtest-test-part.h | 5.6% 18|10.0% 20| - 0
gtest.h |50.4% 127|47.9% 163| - 0
[/Users/andrew/workspace/anna/build/googletest-src/googletest/include/gtest/internal/]
gtest-death-test-internal.h | 7.7% 13|35.0% 20| - 0
gtest-filepath.h |57.1% 14|61.5% 13| - 0
gtest-internal.h |47.3% 55|91.4% 383| - 0
gtest-linked_ptr.h |90.6% 53|50.0% 82| - 0
gtest-param-util.h |69.2% 13| 100% 5| - 0
gtest-port.h |47.8% 136|56.8% 183| - 0
gtest-type-util.h | 100% 8| 100% 5| - 0
[/Users/andrew/workspace/anna/build/googletest-src/googletest/src/]
gtest-death-test.cc | 0.8% 356| 1.4% 70| - 0
gtest-filepath.cc |22.2% 108|16.7% 18| - 0
gtest-internal-inl.h |58.9% 158|56.0% 75| - 0
gtest-port.cc |14.4% 209|12.1% 33| - 0
gtest-printers.cc |21.0% 138|24.0% 25| - 0
gtest-test-part.cc | 0.0% 37| 0.0% 11| - 0
gtest-typed-test.cc | 0.0% 53| 0.0% 3| - 0
gtest.cc |30.0% 2194|43.4% 394| - 0
[/Users/andrew/workspace/anna/build/]
kvs.pb.cc |42.5% 2239|47.3% 315| - 0
kvs.pb.h |53.1% 375|49.7% 175| - 0
metadata.pb.cc |32.0% 1786|38.9% 288| - 0
metadata.pb.h |34.9% 252|34.7% 118| - 0
shared.pb.cc |11.5% 496|20.2% 89| - 0
shared.pb.h | 1.7% 58| 3.1% 32| - 0
[/Users/andrew/workspace/anna/common/include/]
common.hpp |69.9% 123|66.7% 18| - 0
[/Users/andrew/workspace/anna/common/include/lattices/]
core_lattices.hpp |94.7% 76|81.7% 175| - 0
lattice.hpp |92.9% 14|65.6% 151| - 0
lww_pair_lattice.hpp | 100% 20|90.9% 22| - 0
priority_lattice.hpp | 0.0% 10| 0.0% 20| - 0
single_key_causal_lattice.hpp |87.0% 23|90.0% 20| - 0
[/Users/andrew/workspace/anna/common/include/]
requests.hpp | 0.0% 5| 0.0% 1| - 0
threads.hpp |85.7% 7| 100% 5| - 0
[/Users/andrew/workspace/anna/common/include/zmq/]
socket_cache.cpp |90.9% 11|66.7% 3| - 0
socket_cache.hpp | 100% 3| 100% 4| - 0
[/Users/andrew/workspace/anna/common/mock/]
mock_zmq_utils.cpp |50.0% 6|33.3% 3| - 0
[/Users/andrew/workspace/anna/include/]
consistent_hash_map.hpp |40.9% 22|37.5% 16| - 0
hash_ring.hpp |93.1% 29|69.2% 13| - 0
hashers.hpp |33.3% 6|33.3% 3| - 0
[/Users/andrew/workspace/anna/include/kvs/]
base_kv_store.hpp |60.0% 10|78.9% 38| - 0
server_utils.hpp |62.2% 74|62.5% 56| - 0
[/Users/andrew/workspace/anna/include/]
kvs_common.hpp | 0.0% 11| 0.0% 2| - 0
kvs_threads.hpp |59.7% 67|74.4% 43| - 0
metadata.hpp |60.6% 33|72.7% 11| - 0
[/Users/andrew/workspace/anna/src/hash_ring/]
hash_ring.cpp | 8.5% 130| 0.0% 8| - 0
[/Users/andrew/workspace/anna/src/kvs/]
cache_ip_response_handler.cpp |23.1% 26| 0.0% 1| - 0
gossip_handler.cpp |16.0% 50| 0.0% 1| - 0
management_node_response_handler.cpp |24.0% 25| 0.0% 1| - 0
node_depart_handler.cpp | 100% 21| 100% 1| - 0
node_join_handler.cpp |68.1% 72| 100% 1| - 0
replication_change_handler.cpp |12.6% 87| 0.0% 1| - 0
replication_response_handler.cpp | 7.4% 148| 0.0% 1| - 0
self_depart_handler.cpp |55.6% 45| 100% 1| - 0
user_request_handler.cpp |64.6% 82| 100% 1| - 0
utils.cpp |39.7% 58|75.0% 4| - 0
[/Users/andrew/workspace/anna/src/route/]
address_handler.cpp |78.7% 47| 100% 1| - 0
membership_handler.cpp |69.8% 53| 100% 1| - 0
replication_change_handler.cpp | 100% 21| 100% 1| - 0
replication_response_handler.cpp |43.4% 53| 100% 1| - 0
seed_handler.cpp | 100% 21| 100% 1| - 0
[/Users/andrew/workspace/anna/tests/include/lattices/]
run_lattice_tests.cpp | 100% 3| 100% 1| - 0
test_bool_lattice.hpp |95.8% 24|87.0% 23| - 0
test_map_lattice.hpp | 100% 51|95.1% 41| - 0
test_max_lattice.hpp | 100% 31|94.1% 102| - 0
test_ordered_set_lattice.hpp |97.6% 41|91.4% 35| - 0
test_set_lattice.hpp |97.1% 35|89.7% 29| - 0
[/Users/andrew/workspace/anna/tests/kvs/]
run_server_handler_tests.cpp | 100% 16| 100% 1| - 0
server_handler_base.hpp | 100% 67|77.8% 9| - 0
test_node_depart_handler.hpp | 100% 25| 100% 12| - 0
test_node_join_handler.hpp | 100% 33| 100% 12| - 0
test_self_depart_handler.hpp | 100% 17| 100% 6| - 0
test_user_request_handler.hpp | 100% 336| 100% 48| - 0
[/Users/andrew/workspace/anna/tests/mock/]
mock_hash_utils.cpp | 100% 7| 100% 1| - 0
mock_hash_utils.hpp | 100% 1|66.7% 3| - 0
[/Users/andrew/workspace/anna/tests/route/]
routing_handler_base.hpp | 100% 29|75.0% 8| - 0
run_routing_handler_tests.cpp | 100% 16| 100% 1| - 0
test_address_handler.hpp | 100% 25| 100% 6| - 0
test_membership_handler.hpp | 100% 13| 100% 6| - 0
test_replication_change_handler.hpp | 100% 32| 100% 6| - 0
test_replication_response_handler.hpp | 100% 37| 100% 6| - 0
test_seed_handler.hpp | 100% 13| 100% 6| - 0
================================================================================
Total:|42.9% 18366|56.6% 16716| - 0
Try to exclude them from lcov measurements so the coverage reflects the % of the code within the project we are trying to test.
Add a start command that starts required processes in background like the current start script.
with options:
will start only the specified service
Do a clean make and then fix all the deprecation warnings that appear
files like install-dependencies-osx.sh in /common/scripts/install-dependencies-osx.sh can be removed
Currently logs are generated in the CWD where it's run, and then deleted when stopping anna.
better would be to generate them in a correct location in the system, and have a limit on size and log rotation.
Already does
Looks like the linker can't find protobuf....
/workspaces/anna/common/include/common.hpp:97: undefined reference to `google::protobuf::MessageLite::SerializeToString(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*) const'
/usr/bin/ld: CMakeFiles/anna-kvs.dir/server.cpp.o: in function `google::protobuf::internal::GetEmptyStringAlreadyInited()':
/usr/include/google/protobuf/message_lite.h:134: undefined reference to `google::protobuf::internal::fixed_address_empty_string'
/usr/bin/ld: CMakeFiles/anna-kvs.dir/server.cpp.o: in function `deserialize_lww(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)':
/workspaces/anna/common/include/common.hpp:205: undefined reference to `google::protobuf::MessageLite::ParseFromString(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)'
/usr/bin/ld: CMakeFiles/anna-kvs.dir/server.cpp.o: in function `serialize(SetLattice<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > const&)':
/workspaces/anna/common/include/common.hpp:119: undefined reference to `google::protobuf::MessageLite::SerializeToString(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*) const'
/usr/bin/ld: CMakeFiles/anna-kvs.dir/server.cpp.o: in function `deserialize_set(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)':
/workspaces/anna/common/include/common.hpp:213: undefined reference to `google::protobuf::MessageLite::ParseFromString(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)'
/usr/bin/ld: CMakeFiles/anna-kvs.dir/server.cpp.o: in function `serialize(OrderedSetLattice<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > const&)':
/workspaces/anna/common/include/common.hpp:133: undefined reference to `google::protobuf::MessageLite::SerializeToString(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*) const'
/usr/bin/ld: CMakeFiles/anna-kvs.dir/server.cpp.o: in function `deserialize_ordered_set(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)':
/workspaces/anna/common/include/common.hpp:226: undefined reference to `google::protobuf::MessageLite::ParseFromString(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)'
/usr/bin/ld: CMakeFiles/anna-kvs.dir/server.cpp.o: in function `serialize(SingleKeyCausalLattice<SetLattice<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > > const&)':
/workspaces/anna/common/include/common.hpp:161: undefined reference to `google::protobuf::MessageLite::SerializeToString(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*) const'
/usr/bin/ld: CMakeFiles/anna-kvs.dir/server.cpp.o: in function `deserialize_causal(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)':
/workspaces/anna/common/include/common.hpp:236: undefined reference to `google::protobuf::MessageLite::ParseFromString(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)'
/usr/bin/ld: CMakeFiles/anna-kvs.dir/server.cpp.o: in function `serialize(MultiKeyCausalLattice<SetLattice<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > > const&)':
/workspaces/anna/common/include/common.hpp:189: undefined reference to `google::protobuf::MessageLite::SerializeToString(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*) const'
/usr/bin/ld: CMakeFiles/anna-kvs.dir/server.cpp.o: in function `deserialize_multi_key_causal(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)':
/workspaces/anna/common/include/common.hpp:243: undefined reference to `google::protobuf::MessageLite::ParseFromString(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)'
/usr/bin/ld: CMakeFiles/anna-kvs.dir/server.cpp.o: in function `serialize(PriorityLattice<double, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::less<double> > const&)':
/workspaces/anna/common/include/common.hpp:199: undefined reference to `google::protobuf::MessageLite::SerializeToString(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*) const'
/usr/bin/ld: CMakeFiles/anna-kvs.dir/server.cpp.o: in function `deserialize_priority(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)':
/workspaces/anna/common/include/common.hpp:250: undefined reference to `google::protobuf::MessageLite::ParseFromString(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)'
/usr/bin/ld: CMakeFiles/anna-kvs.dir/server.cpp.o: in function `DiskLWWSerializer::get(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, kvs::AnnaError&)':
/workspaces/anna/include/kvs/server_utils.hpp:224: undefined reference to `google::protobuf::Message::ParseFromIstream(std::__1::basic_istream<char, std::__1::char_traits<char> >*)'
/usr/bin/ld: /workspaces/anna/include/kvs/server_utils.hpp:231: undefined reference to `google::protobuf::MessageLite::SerializeToString(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*) const'
/usr/bin/ld: CMakeFiles/anna-kvs.dir/server.cpp.o: in function `DiskLWWSerializer::put(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)':
/workspaces/anna/include/kvs/server_utils.hpp:239: undefined reference to `google::protobuf::MessageLite::ParseFromString(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)'
/usr/bin/ld: /workspaces/anna/include/kvs/server_utils.hpp:252: undefined reference to `google::protobuf::Message::SerializeToOstream(std::__1::basic_ostream<char, std::__1::char_traits<char> >*) const'
/usr/bin/ld: /workspaces/anna/include/kvs/server_utils.hpp:256: undefined reference to `google::protobuf::Message::ParseFromIstream(std::__1::basic_istream<char, std::__1::char_traits<char> >*)'
/usr/bin/ld: /workspaces/anna/include/kvs/server_utils.hpp:265: undefined reference to `google::protobuf::Message::SerializeToOstream(std::__1::basic_ostream<char, std::__1::char_traits<char> >*) const'
/usr/bin/ld: CMakeFiles/anna-kvs.dir/server.cpp.o: in function `DiskSetSerializer::get(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, kvs::AnnaError&)':
/workspaces/anna/include/kvs/server_utils.hpp:309: undefined reference to `google::protobuf::Message::ParseFromIstream(std::__1::basic_istream<char, std::__1::char_traits<char> >*)'
/usr/bin/ld: /workspaces/anna/include/kvs/server_utils.hpp:316: undefined reference to `google::protobuf::MessageLite::SerializeToString(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*) const'
/usr/bin/ld: CMakeFiles/anna-kvs.dir/server.cpp.o: in function `DiskSetSerializer::put(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)':
/workspaces/anna/include/kvs/server_utils.hpp:324: undefined reference to `google::protobuf::MessageLite::ParseFromString(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)'
/usr/bin/ld: /workspaces/anna/include/kvs/server_utils.hpp:336: undefined reference to `google::protobuf::Message::SerializeToOstream(std::__1::basic_ostream<char, std::__1::char_traits<char> >*) const'
/usr/bin/ld: /workspaces/anna/include/kvs/server_utils.hpp:340: undefined reference to `google::protobuf::Message::ParseFromIstream(std::__1::basic_istream<char, std::__1::char_traits<char> >*)'
/usr/bin/ld: /workspaces/anna/include/kvs/server_utils.hpp:364: undefined reference to `google::protobuf::Message::SerializeToOstream(std::__1::basic_ostream<char, std::__1::char_traits<char> >*) const'
/usr/bin/ld: CMakeFiles/anna-kvs.dir/server.cpp.o: in function `DiskOrderedSetSerializer::get(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, kvs::AnnaError&)':
/workspaces/anna/include/kvs/server_utils.hpp:405: undefined reference to `google::protobuf::Message::ParseFromIstream(std::__1::basic_istream<char, std::__1::char_traits<char> >*)'
/usr/bin/ld: /workspaces/anna/include/kvs/server_utils.hpp:409: undefined reference to `google::protobuf::MessageLite::SerializeToString(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*) const'
/usr/bin/ld: CMakeFiles/anna-kvs.dir/server.cpp.o: in function `DiskOrderedSetSerializer::put(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)':
/workspaces/anna/include/kvs/server_utils.hpp:416: undefined reference to `google::protobuf::MessageLite::ParseFromString(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)'
/usr/bin/ld: /workspaces/anna/include/kvs/server_utils.hpp:428: undefined reference to `google::protobuf::Message::SerializeToOstream(std::__1::basic_ostream<char, std::__1::char_traits<char> >*) const'
/usr/bin/ld: /workspaces/anna/include/kvs/server_utils.hpp:432: undefined reference to `google::protobuf::Message::ParseFromIstream(std::__1::basic_istream<char, std::__1::char_traits<char> >*)'
/usr/bin/ld: /workspaces/anna/include/kvs/server_utils.hpp:456: undefined reference to `google::protobuf::Message::SerializeToOstream(std::__1::basic_ostream<char, std::__1::char_traits<char> >*) const'
/usr/bin/ld: CMakeFiles/anna-kvs.dir/server.cpp.o: in function `DiskSingleKeyCausalSerializer::get(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, kvs::AnnaError&)':
/workspaces/anna/include/kvs/server_utils.hpp:497: undefined reference to `google::protobuf::Message::ParseFromIstream(std::__1::basic_istream<char, std::__1::char_traits<char> >*)'
/usr/bin/ld: /workspaces/anna/include/kvs/server_utils.hpp:504: undefined reference to `google::protobuf::MessageLite::SerializeToString(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*) const'
/usr/bin/ld: CMakeFiles/anna-kvs.dir/server.cpp.o: in function `DiskSingleKeyCausalSerializer::put(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)':
/workspaces/anna/include/kvs/server_utils.hpp:512: undefined reference to `google::protobuf::MessageLite::ParseFromString(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)'
/usr/bin/ld: /workspaces/anna/include/kvs/server_utils.hpp:524: undefined reference to `google::protobuf::Message::SerializeToOstream(std::__1::basic_ostream<char, std::__1::char_traits<char> >*) const'
/usr/bin/ld: /workspaces/anna/include/kvs/server_utils.hpp:528: undefined reference to `google::protobuf::Message::ParseFromIstream(std::__1::basic_istream<char, std::__1::char_traits<char> >*)'
/usr/bin/ld: /workspaces/anna/include/kvs/server_utils.hpp:573: undefined reference to `google::protobuf::Message::SerializeToOstream(std::__1::basic_ostream<char, std::__1::char_traits<char> >*) const'
/usr/bin/ld: CMakeFiles/anna-kvs.dir/server.cpp.o: in function `DiskMultiKeyCausalSerializer::get(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, kvs::AnnaError&)':
/workspaces/anna/include/kvs/server_utils.hpp:614: undefined reference to `google::protobuf::Message::ParseFromIstream(std::__1::basic_istream<char, std::__1::char_traits<char> >*)'
/usr/bin/ld: /workspaces/anna/include/kvs/server_utils.hpp:621: undefined reference to `google::protobuf::MessageLite::SerializeToString(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*) const'
/usr/bin/ld: CMakeFiles/anna-kvs.dir/server.cpp.o: in function `DiskMultiKeyCausalSerializer::put(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)':
/workspaces/anna/include/kvs/server_utils.hpp:629: undefined reference to `google::protobuf::MessageLite::ParseFromString(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)'
/usr/bin/ld: /workspaces/anna/include/kvs/server_utils.hpp:642: undefined reference to `google::protobuf::Message::SerializeToOstream(std::__1::basic_ostream<char, std::__1::char_traits<char> >*) const'
/usr/bin/ld: /workspaces/anna/include/kvs/server_utils.hpp:646: undefined reference to `google::protobuf::Message::ParseFromIstream(std::__1::basic_istream<char, std::__1::char_traits<char> >*)'
/usr/bin/ld: /workspaces/anna/include/kvs/server_utils.hpp:721: undefined reference to `google::protobuf::Message::SerializeToOstream(std::__1::basic_ostream<char, std::__1::char_traits<char> >*) const'
/usr/bin/ld: CMakeFiles/anna-kvs.dir/server.cpp.o: in function `DiskPrioritySerializer::get(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, kvs::AnnaError&)':
/workspaces/anna/include/kvs/server_utils.hpp:765: undefined reference to `google::protobuf::Message::ParseFromIstream(std::__1::basic_istream<char, std::__1::char_traits<char> >*)'
/usr/bin/ld: /workspaces/anna/include/kvs/server_utils.hpp:771: undefined reference to `google::protobuf::MessageLite::SerializeToString(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*) const'
/usr/bin/ld: CMakeFiles/anna-kvs.dir/server.cpp.o: in function `DiskPrioritySerializer::put(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)':
/workspaces/anna/include/kvs/server_utils.hpp:778: undefined reference to `google::protobuf::MessageLite::ParseFromString(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)'
/usr/bin/ld: CMakeFiles/anna-kvs.dir/server.cpp.o: in function `kvs::LatticeType_Name(kvs::LatticeType)':
/workspaces/anna/build/kvs.pb.h:153: undefined reference to `google::protobuf::internal::NameOfEnum(google::protobuf::EnumDescriptor const*, int)'
/usr/bin/ld: CMakeFiles/anna-kvs.dir/node_join_handler.cpp.o: in function `bool google::protobuf::internal::ParseNamedEnum<Tier>(google::protobuf::EnumDescriptor const*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, Tier*)':
/usr/include/google/protobuf/generated_enum_reflection.h:73: undefined reference to `google::protobuf::internal::ParseNamedEnum(google::protobuf::EnumDescriptor const*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, int*)'
/usr/bin/ld: CMakeFiles/anna-kvs.dir/user_request_handler.cpp.o: in function `user_request_handler(unsigned int&, unsigned int&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&, std::__1::shared_ptr<spdlog::logger>, std::__1::unordered_map<Tier, HashRing<GlobalHasher>, TierEnumHash, std::__1::equal_to<Tier>, std::__1::allocator<std::__1::pair<Tier const, HashRing<GlobalHasher> > > >&, std::__1::unordered_map<Tier, HashRing<LocalHasher>, TierEnumHash, std::__1::equal_to<Tier>, std::__1::allocator<std::__1::pair<Tier const, HashRing<LocalHasher> > > >&, std::__1::unordered_map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::vector<PendingRequest, std::__1::allocator<PendingRequest> >, std::__1::hash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::equal_to<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, std::__1::vector<PendingRequest, std::__1::allocator<PendingRequest> > > > >&, std::__1::unordered_map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::multiset<std::__1::chrono::time_point<std::__1::chrono::system_clock, std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000000l> > >, std::__1::less<std::__1::chrono::time_point<std::__1::chrono::system_clock, std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000000l> > > >, std::__1::allocator<std::__1::chrono::time_point<std::__1::chrono::system_clock, std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000000l> > > > >, std::__1::hash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::equal_to<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, std::__1::multiset<std::__1::chrono::time_point<std::__1::chrono::system_clock, std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000000l> > >, std::__1::less<std::__1::chrono::time_point<std::__1::chrono::system_clock, std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000000l> > > >, std::__1::allocator<std::__1::chrono::time_point<std::__1::chrono::system_clock, std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000000l> > > > > > > >&, std::__1::unordered_map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, KeyProperty, std::__1::hash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::equal_to<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, KeyProperty> > >&, std::__1::unordered_map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, KeyReplication, std::__1::hash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::equal_to<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, KeyReplication> > >&, std::__1::unordered_set<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::hash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::equal_to<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >&, ServerThread&, std::__1::unordered_map<kvs::LatticeType, Serializer*, lattice_type_hash, std::__1::equal_to<kvs::LatticeType>, std::__1::allocator<std::__1::pair<kvs::LatticeType const, Serializer*> > >&, SocketCache&)':
/workspaces/anna/src/kvs/user_request_handler.cpp:26: undefined reference to `google::protobuf::MessageLite::ParseFromString(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)'
/usr/bin/ld: /workspaces/anna/src/kvs/user_request_handler.cpp:124: undefined reference to `google::protobuf::MessageLite::SerializeToString(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*) const'
/usr/bin/ld: CMakeFiles/anna-kvs.dir/gossip_handler.cpp.o: in function `gossip_handler(unsigned int&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&, std::__1::unordered_map<Tier, HashRing<GlobalHasher>, TierEnumHash, std::__1::equal_to<Tier>, std::__1::allocator<std::__1::pair<Tier const, HashRing<GlobalHasher> > > >&, std::__1::unordered_map<Tier, HashRing<LocalHasher>, TierEnumHash, std::__1::equal_to<Tier>, std::__1::allocator<std::__1::pair<Tier const, HashRing<LocalHasher> > > >&, std::__1::unordered_map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::vector<PendingGossip, std::__1::allocator<PendingGossip> >, std::__1::hash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::equal_to<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, std::__1::vector<PendingGossip, std::__1::allocator<PendingGossip> > > > >&, std::__1::unordered_map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, KeyProperty, std::__1::hash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::equal_to<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, KeyProperty> > >&, std::__1::unordered_map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, KeyReplication, std::__1::hash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::equal_to<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, KeyReplication> > >&, ServerThread&, std::__1::unordered_map<kvs::LatticeType, Serializer*, lattice_type_hash, std::__1::equal_to<kvs::LatticeType>, std::__1::allocator<std::__1::pair<kvs::LatticeType const, Serializer*> > >&, SocketCache&, std::__1::shared_ptr<spdlog::logger>)':
/workspaces/anna/src/kvs/gossip_handler.cpp:26: undefined reference to `google::protobuf::MessageLite::ParseFromString(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)'
/usr/bin/ld: /workspaces/anna/src/kvs/gossip_handler.cpp:83: undefined reference to `google::protobuf::MessageLite::SerializeToString(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*) const'
/usr/bin/ld: CMakeFiles/anna-kvs.dir/replication_response_handler.cpp.o: in function `replication_response_handler(unsigned int&, unsigned int&, std::__1::shared_ptr<spdlog::logger>, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&, std::__1::unordered_map<Tier, HashRing<GlobalHasher>, TierEnumHash, std::__1::equal_to<Tier>, std::__1::allocator<std::__1::pair<Tier const, HashRing<GlobalHasher> > > >&, std::__1::unordered_map<Tier, HashRing<LocalHasher>, TierEnumHash, std::__1::equal_to<Tier>, std::__1::allocator<std::__1::pair<Tier const, HashRing<LocalHasher> > > >&, std::__1::unordered_map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::vector<PendingRequest, std::__1::allocator<PendingRequest> >, std::__1::hash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::equal_to<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, std::__1::vector<PendingRequest, std::__1::allocator<PendingRequest> > > > >&, std::__1::unordered_map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::vector<PendingGossip, std::__1::allocator<PendingGossip> >, std::__1::hash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::equal_to<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, std::__1::vector<PendingGossip, std::__1::allocator<PendingGossip> > > > >&, std::__1::unordered_map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::multiset<std::__1::chrono::time_point<std::__1::chrono::system_clock, std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000000l> > >, std::__1::less<std::__1::chrono::time_point<std::__1::chrono::system_clock, std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000000l> > > >, std::__1::allocator<std::__1::chrono::time_point<std::__1::chrono::system_clock, std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000000l> > > > >, std::__1::hash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::equal_to<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, std::__1::multiset<std::__1::chrono::time_point<std::__1::chrono::system_clock, std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000000l> > >, std::__1::less<std::__1::chrono::time_point<std::__1::chrono::system_clock, std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000000l> > > >, std::__1::allocator<std::__1::chrono::time_point<std::__1::chrono::system_clock, std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000000l> > > > > > > >&, std::__1::unordered_map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, KeyProperty, std::__1::hash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::equal_to<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, KeyProperty> > >&, std::__1::unordered_map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, KeyReplication, std::__1::hash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::equal_to<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, KeyReplication> > >&, std::__1::unordered_set<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::hash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::equal_to<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >&, ServerThread&, std::__1::unordered_map<kvs::LatticeType, Serializer*, lattice_type_hash, std::__1::equal_to<kvs::LatticeType>, std::__1::allocator<std::__1::pair<kvs::LatticeType const, Serializer*> > >&, SocketCache&)':
/workspaces/anna/src/kvs/replication_response_handler.cpp:27: undefined reference to `google::protobuf::MessageLite::ParseFromString(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)'
/usr/bin/ld: /workspaces/anna/src/kvs/replication_response_handler.cpp:38: undefined reference to `google::protobuf::MessageLite::ParseFromString(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)'
/usr/bin/ld: /workspaces/anna/src/kvs/replication_response_handler.cpp:40: undefined reference to `google::protobuf::MessageLite::ParseFromString(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)'
/usr/bin/ld: /workspaces/anna/src/kvs/replication_response_handler.cpp:97: undefined reference to `google::protobuf::MessageLite::SerializeToString(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*) const'
/usr/bin/ld: /workspaces/anna/src/kvs/replication_response_handler.cpp:169: undefined reference to `google::protobuf::MessageLite::SerializeToString(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*) const'
/usr/bin/ld: /workspaces/anna/src/kvs/replication_response_handler.cpp:219: undefined reference to `google::protobuf::MessageLite::SerializeToString(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*) const'
/usr/bin/ld: CMakeFiles/anna-kvs.dir/replication_change_handler.cpp.o: in function `replication_change_handler(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, unsigned int, unsigned int&, std::__1::shared_ptr<spdlog::logger>, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&, std::__1::unordered_map<Tier, HashRing<GlobalHasher>, TierEnumHash, std::__1::equal_to<Tier>, std::__1::allocator<std::__1::pair<Tier const, HashRing<GlobalHasher> > > >&, std::__1::unordered_map<Tier, HashRing<LocalHasher>, TierEnumHash, std::__1::equal_to<Tier>, std::__1::allocator<std::__1::pair<Tier const, HashRing<LocalHasher> > > >&, std::__1::unordered_map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, KeyProperty, std::__1::hash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::equal_to<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, KeyProperty> > >&, std::__1::unordered_map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, KeyReplication, std::__1::hash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::equal_to<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, KeyReplication> > >&, std::__1::unordered_set<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::hash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::equal_to<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >&, ServerThread&, std::__1::unordered_map<kvs::LatticeType, Serializer*, lattice_type_hash, std::__1::equal_to<kvs::LatticeType>, std::__1::allocator<std::__1::pair<kvs::LatticeType const, Serializer*> > >&, SocketCache&)':
/workspaces/anna/src/kvs/replication_change_handler.cpp:34: undefined reference to `google::protobuf::MessageLite::ParseFromString(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)'
/usr/bin/ld: CMakeFiles/anna-kvs.dir/cache_ip_response_handler.cpp.o: in function `cache_ip_response_handler(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&, std::__1::unordered_map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::unordered_set<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::hash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::equal_to<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >, std::__1::hash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::equal_to<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, std::__1::unordered_set<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::hash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::equal_to<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > > > > >&, std::__1::unordered_map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::unordered_set<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::hash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::equal_to<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >, std::__1::hash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::equal_to<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, std::__1::unordered_set<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::hash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::equal_to<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > > > > >&)':
/workspaces/anna/src/kvs/cache_ip_response_handler.cpp:22: undefined reference to `google::protobuf::MessageLite::ParseFromString(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)'
/usr/bin/ld: /workspaces/anna/src/kvs/cache_ip_response_handler.cpp:35: undefined reference to `google::protobuf::MessageLite::ParseFromString(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)'
/usr/bin/ld: /workspaces/anna/src/kvs/cache_ip_response_handler.cpp:38: undefined reference to `google::protobuf::MessageLite::ParseFromString(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)'
/usr/bin/ld: CMakeFiles/anna-kvs.dir/management_node_response_handler.cpp.o: in function `management_node_response_handler(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&, std::__1::unordered_set<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::hash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::equal_to<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >&, std::__1::unordered_map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::unordered_set<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::hash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::equal_to<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >, std::__1::hash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::equal_to<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, std::__1::unordered_set<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::hash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::equal_to<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > > > > >&, std::__1::unordered_map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::unordered_set<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::hash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::equal_to<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >, std::__1::hash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::equal_to<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, std::__1::unordered_set<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::hash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::equal_to<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > > > > >&, std::__1::unordered_map<Tier, HashRing<GlobalHasher>, TierEnumHash, std::__1::equal_to<Tier>, std::__1::allocator<std::__1::pair<Tier const, HashRing<GlobalHasher> > > >&, std::__1::unordered_map<Tier, HashRing<LocalHasher>, TierEnumHash, std::__1::equal_to<Tier>, std::__1::allocator<std::__1::pair<Tier const, HashRing<LocalHasher> > > >&, SocketCache&, ServerThread&, unsigned int&)':
/workspaces/anna/src/kvs/management_node_response_handler.cpp:27: undefined reference to `google::protobuf::MessageLite::ParseFromString(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)'
/usr/bin/ld: CMakeFiles/anna-kvs.dir/management_node_response_handler.cpp.o: in function `void send_request<kvs::KeyRequest>(kvs::KeyRequest const&, zmq::socket_t&)':
/workspaces/anna/common/include/requests.hpp:63: undefined reference to `google::protobuf::MessageLite::SerializeToString(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*) const'
/usr/bin/ld: CMakeFiles/anna-kvs.dir/utils.cpp.o: in function `send_gossip(std::__1::unordered_map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::unordered_set<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::hash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::equal_to<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >, std::__1::hash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::equal_to<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, std::__1::unordered_set<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::hash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::equal_to<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > > > > >&, SocketCache&, std::__1::unordered_map<kvs::LatticeType, Serializer*, lattice_type_hash, std::__1::equal_to<kvs::LatticeType>, std::__1::allocator<std::__1::pair<kvs::LatticeType const, Serializer*> > >&, std::__1::unordered_map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, KeyProperty, std::__1::hash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::equal_to<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, KeyProperty> > >&)':
/workspaces/anna/src/kvs/utils.cpp:48: undefined reference to `google::protobuf::MessageLite::SerializeToString(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*) const'
/usr/bin/ld: CMakeFiles/anna-kvs.dir/utils.cpp.o: in function `bool google::protobuf::internal::ParseNamedEnum<kvs::RequestType>(google::protobuf::EnumDescriptor const*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, kvs::RequestType*)':
/usr/include/google/protobuf/generated_enum_reflection.h:73: undefined reference to `google::protobuf::internal::ParseNamedEnum(google::protobuf::EnumDescriptor const*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, int*)'
/usr/bin/ld: ../hash_ring/libanna-hash-ring.a(hash_ring.cpp.o): in function `HashRingUtilInterface::issue_replication_factor_request(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, HashRing<GlobalHasher>&, HashRing<LocalHasher>&, SocketCache&, unsigned int&)':
/workspaces/anna/src/hash_ring/hash_ring.cpp:215: undefined reference to `google::protobuf::MessageLite::SerializeToString(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*) const'
/usr/bin/ld: ../../libkvs-proto.a(kvs.pb.cc.o): in function `protobuf_kvs_2eproto::protobuf_AssignDescriptors()':
/workspaces/anna/build/kvs.pb.cc:445: undefined reference to `google::protobuf::internal::AssignDescriptors(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, google::protobuf::internal::MigrationSchema const*, google::protobuf::Message const* const*, unsigned int const*, google::protobuf::Metadata*, google::protobuf::EnumDescriptor const**, google::protobuf::ServiceDescriptor const**)'
/usr/bin/ld: ../../libkvs-proto.a(kvs.pb.cc.o): in function `protobuf_kvs_2eproto::AddDescriptorsImpl()':
/workspaces/anna/build/kvs.pb.cc:504: undefined reference to `google::protobuf::MessageFactory::InternalRegisterGeneratedFile(char const*, void (*)(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&))'
/usr/bin/ld: ../../libkvs-proto.a(kvs.pb.cc.o): in function `kvs::KeyTuple::MergePartialFromCodedStream(google::protobuf::io::CodedInputStream*)':
/workspaces/anna/build/kvs.pb.cc:718: undefined reference to `google::protobuf::internal::WireFormatLite::ReadBytes(google::protobuf::io::CodedInputStream*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*)'
/usr/bin/ld: ../../libkvs-proto.a(kvs.pb.cc.o): in function `kvs::KeyTuple::SerializeWithCachedSizes(google::protobuf::io::CodedOutputStream*) const':
/workspaces/anna/build/kvs.pb.cc:786: undefined reference to `google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(int, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, google::protobuf::io::CodedOutputStream*)'
/usr/bin/ld: /workspaces/anna/build/kvs.pb.cc:804: undefined reference to `google::protobuf::internal::WireFormatLite::WriteBytesMaybeAliased(int, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, google::protobuf::io::CodedOutputStream*)'
/usr/bin/ld: ../../libkvs-proto.a(kvs.pb.cc.o): in function `kvs::KeyRequest::SerializeWithCachedSizes(google::protobuf::io::CodedOutputStream*) const':
/workspaces/anna/build/kvs.pb.cc:1211: undefined reference to `google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(int, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, google::protobuf::io::CodedOutputStream*)'
/usr/bin/ld: /workspaces/anna/build/kvs.pb.cc:1221: undefined reference to `google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(int, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, google::protobuf::io::CodedOutputStream*)'
/usr/bin/ld: ../../libkvs-proto.a(kvs.pb.cc.o): in function `kvs::KeyResponse::SerializeWithCachedSizes(google::protobuf::io::CodedOutputStream*) const':
/workspaces/anna/build/kvs.pb.cc:1595: undefined reference to `google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(int, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, google::protobuf::io::CodedOutputStream*)'
/usr/bin/ld: ../../libkvs-proto.a(kvs.pb.cc.o): in function `kvs::KeyAddressRequest::SerializeWithCachedSizes(google::protobuf::io::CodedOutputStream*) const':
/workspaces/anna/build/kvs.pb.cc:1940: undefined reference to `google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(int, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, google::protobuf::io::CodedOutputStream*)'
/usr/bin/ld: /workspaces/anna/build/kvs.pb.cc:1950: undefined reference to `google::protobuf::internal::WireFormatLite::WriteString(int, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, google::protobuf::io::CodedOutputStream*)'
/usr/bin/ld: /workspaces/anna/build/kvs.pb.cc:1960: undefined reference to `google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(int, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, google::protobuf::io::CodedOutputStream*)'
/usr/bin/ld: ../../libkvs-proto.a(kvs.pb.cc.o): in function `kvs::KeyAddressResponse_KeyAddress::SerializeWithCachedSizes(google::protobuf::io::CodedOutputStream*) const':
/workspaces/anna/build/kvs.pb.cc:2266: undefined reference to `google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(int, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, google::protobuf::io::CodedOutputStream*)'
/usr/bin/ld: /workspaces/anna/build/kvs.pb.cc:2276: undefined reference to `google::protobuf::internal::WireFormatLite::WriteString(int, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, google::protobuf::io::CodedOutputStream*)'
/usr/bin/ld: ../../libkvs-proto.a(kvs.pb.cc.o): in function `kvs::KeyAddressResponse::SerializeWithCachedSizes(google::protobuf::io::CodedOutputStream*) const':
/workspaces/anna/build/kvs.pb.cc:2587: undefined reference to `google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(int, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, google::protobuf::io::CodedOutputStream*)'
/usr/bin/ld: ../../libkvs-proto.a(kvs.pb.cc.o): in function `kvs::LWWValue::MergePartialFromCodedStream(google::protobuf::io::CodedInputStream*)':
/workspaces/anna/build/kvs.pb.cc:2840: undefined reference to `google::protobuf::internal::WireFormatLite::ReadBytes(google::protobuf::io::CodedInputStream*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*)'
/usr/bin/ld: ../../libkvs-proto.a(kvs.pb.cc.o): in function `kvs::LWWValue::SerializeWithCachedSizes(google::protobuf::io::CodedOutputStream*) const':
/workspaces/anna/build/kvs.pb.cc:2881: undefined reference to `google::protobuf::internal::WireFormatLite::WriteBytesMaybeAliased(int, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, google::protobuf::io::CodedOutputStream*)'
/usr/bin/ld: ../../libkvs-proto.a(kvs.pb.cc.o): in function `kvs::SetValue::MergePartialFromCodedStream(google::protobuf::io::CodedInputStream*)':
/workspaces/anna/build/kvs.pb.cc:3086: undefined reference to `google::protobuf::internal::WireFormatLite::ReadBytes(google::protobuf::io::CodedInputStream*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*)'
/usr/bin/ld: ../../libkvs-proto.a(kvs.pb.cc.o): in function `kvs::SetValue::SerializeWithCachedSizes(google::protobuf::io::CodedOutputStream*) const':
/workspaces/anna/build/kvs.pb.cc:3122: undefined reference to `google::protobuf::internal::WireFormatLite::WriteBytes(int, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, google::protobuf::io::CodedOutputStream*)'
/usr/bin/ld: ../../libkvs-proto.a(kvs.pb.cc.o): in function `kvs::SingleKeyCausalValue::MergePartialFromCodedStream(google::protobuf::io::CodedInputStream*)':
/workspaces/anna/build/kvs.pb.cc:3350: undefined reference to `google::protobuf::internal::WireFormatLite::ReadBytes(google::protobuf::io::CodedInputStream*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*)'
/usr/bin/ld: ../../libkvs-proto.a(kvs.pb.cc.o): in function `kvs::SingleKeyCausalValue::SerializeWithCachedSizes(google::protobuf::io::CodedOutputStream*) const':
/workspaces/anna/build/kvs.pb.cc:3435: undefined reference to `google::protobuf::internal::WireFormatLite::WriteBytes(int, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, google::protobuf::io::CodedOutputStream*)'
/usr/bin/ld: ../../libkvs-proto.a(kvs.pb.cc.o): in function `kvs::MultiKeyCausalValue::MergePartialFromCodedStream(google::protobuf::io::CodedInputStream*)':
/workspaces/anna/build/kvs.pb.cc:3750: undefined reference to `google::protobuf::internal::WireFormatLite::ReadBytes(google::protobuf::io::CodedInputStream*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*)'
/usr/bin/ld: ../../libkvs-proto.a(kvs.pb.cc.o): in function `kvs::MultiKeyCausalValue::SerializeWithCachedSizes(google::protobuf::io::CodedOutputStream*) const':
/workspaces/anna/build/kvs.pb.cc:3844: undefined reference to `google::protobuf::internal::WireFormatLite::WriteBytes(int, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, google::protobuf::io::CodedOutputStream*)'
/usr/bin/ld: ../../libkvs-proto.a(kvs.pb.cc.o): in function `kvs::PriorityValue::MergePartialFromCodedStream(google::protobuf::io::CodedInputStream*)':
/workspaces/anna/build/kvs.pb.cc:4142: undefined reference to `google::protobuf::internal::WireFormatLite::ReadBytes(google::protobuf::io::CodedInputStream*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*)'
/usr/bin/ld: ../../libkvs-proto.a(kvs.pb.cc.o): in function `kvs::PriorityValue::SerializeWithCachedSizes(google::protobuf::io::CodedOutputStream*) const':
/workspaces/anna/build/kvs.pb.cc:4183: undefined reference to `google::protobuf::internal::WireFormatLite::WriteBytesMaybeAliased(int, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, google::protobuf::io::CodedOutputStream*)'
/usr/bin/ld: ../../libkvs-proto.a(kvs.pb.cc.o):(.rodata+0x918): undefined reference to `google::protobuf::Message::GetTypeName() const'
/usr/bin/ld: ../../libkvs-proto.a(kvs.pb.cc.o):(.rodata+0x950): undefined reference to `google::protobuf::Message::InitializationErrorString() const'
/usr/bin/ld: ../../libkvs-proto.a(kvs.pb.cc.o):(.rodata+0xa00): undefined reference to `google::protobuf::Message::GetTypeName() const'
/usr/bin/ld: ../../libkvs-proto.a(kvs.pb.cc.o):(.rodata+0xa38): undefined reference to `google::protobuf::Message::InitializationErrorString() const'
/usr/bin/ld: ../../libkvs-proto.a(kvs.pb.cc.o):(.rodata+0xae8): undefined reference to `google::protobuf::Message::GetTypeName() const'
/usr/bin/ld: ../../libkvs-proto.a(kvs.pb.cc.o):(.rodata+0xb20): undefined reference to `google::protobuf::Message::InitializationErrorString() const'
/usr/bin/ld: ../../libkvs-proto.a(kvs.pb.cc.o):(.rodata+0xbd0): undefined reference to `google::protobuf::Message::GetTypeName() const'
/usr/bin/ld: ../../libkvs-proto.a(kvs.pb.cc.o):(.rodata+0xc08): undefined reference to `google::protobuf::Message::InitializationErrorString() const'
/usr/bin/ld: ../../libkvs-proto.a(kvs.pb.cc.o):(.rodata+0xcb0): undefined reference to `google::protobuf::Message::GetTypeName() const'
/usr/bin/ld: ../../libkvs-proto.a(kvs.pb.cc.o):(.rodata+0xce8): undefined reference to `google::protobuf::Message::InitializationErrorString() const'
/usr/bin/ld: ../../libkvs-proto.a(kvs.pb.cc.o):(.rodata+0xd98): undefined reference to `google::protobuf::Message::GetTypeName() const'
/usr/bin/ld: ../../libkvs-proto.a(kvs.pb.cc.o):(.rodata+0xdd0): undefined reference to `google::protobuf::Message::InitializationErrorString() const'
/usr/bin/ld: ../../libkvs-proto.a(kvs.pb.cc.o):(.rodata+0xe78): undefined reference to `google::protobuf::Message::GetTypeName() const'
/usr/bin/ld: ../../libkvs-proto.a(kvs.pb.cc.o):(.rodata+0xeb0): undefined reference to `google::protobuf::Message::InitializationErrorString() const'
/usr/bin/ld: ../../libkvs-proto.a(kvs.pb.cc.o):(.rodata+0xf58): undefined reference to `google::protobuf::Message::GetTypeName() const'
/usr/bin/ld: ../../libkvs-proto.a(kvs.pb.cc.o):(.rodata+0xf90): undefined reference to `google::protobuf::Message::InitializationErrorString() const'
/usr/bin/ld: ../../libkvs-proto.a(kvs.pb.cc.o):(.rodata+0x1068): undefined reference to `google::protobuf::Message::InitializationErrorString() const'
/usr/bin/ld: ../../libkvs-proto.a(kvs.pb.cc.o):(.rodata+0x1120): undefined reference to `google::protobuf::Message::GetTypeName() const'
/usr/bin/ld: ../../libkvs-proto.a(kvs.pb.cc.o):(.rodata+0x1158): undefined reference to `google::protobuf::Message::InitializationErrorString() const'
/usr/bin/ld: ../../libkvs-proto.a(kvs.pb.cc.o):(.rodata+0x1230): undefined reference to `google::protobuf::Message::InitializationErrorString() const'
/usr/bin/ld: ../../libkvs-proto.a(kvs.pb.cc.o):(.rodata+0x12f0): undefined reference to `google::protobuf::Message::GetTypeName() const'
/usr/bin/ld: ../../libkvs-proto.a(kvs.pb.cc.o):(.rodata+0x1328): undefined reference to `google::protobuf::Message::InitializationErrorString() const'
/usr/bin/ld: ../../libkvs-proto.a(kvs.pb.cc.o):(.rodata+0x13d0): undefined reference to `google::protobuf::Message::GetTypeName() const'
/usr/bin/ld: ../../libkvs-proto.a(kvs.pb.cc.o):(.rodata+0x1408): undefined reference to `google::protobuf::Message::InitializationErrorString() const'
/usr/bin/ld: ../../libkvs-proto.a(kvs.pb.cc.o): in function `google::protobuf::internal::WireFormatLite::ReadString(google::protobuf::io::CodedInputStream*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*)':
/usr/include/google/protobuf/wire_format_lite.h:881: undefined reference to `google::protobuf::internal::WireFormatLite::ReadBytes(google::protobuf::io::CodedInputStream*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*)'
/usr/bin/ld: ../../libkvs-proto.a(kvs.pb.cc.o): in function `google::protobuf::internal::WireFormatLite::WriteStringToArray(int, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, unsigned char*)':
/usr/include/google/protobuf/wire_format_lite_inl.h:876: undefined reference to `google::protobuf::io::CodedOutputStream::WriteStringWithSizeToArray(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, unsigned char*)'
/usr/bin/ld: ../../libkvs-proto.a(kvs.pb.cc.o): in function `google::protobuf::internal::WireFormatLite::WriteBytesToArray(int, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, unsigned char*)':
/usr/include/google/protobuf/wire_format_lite_inl.h:882: undefined reference to `google::protobuf::io::CodedOutputStream::WriteStringWithSizeToArray(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, unsigned char*)'
/usr/bin/ld: ../../libkvs-proto.a(kvs.pb.cc.o): in function `google::protobuf::internal::MapTypeHandler<(google::protobuf::internal::WireFormatLite::FieldType)9, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >::Write(int, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, google::protobuf::io::CodedOutputStream*)':
/usr/include/google/protobuf/map_type_handler.h:396: undefined reference to `google::protobuf::internal::WireFormatLite::WriteString(int, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, google::protobuf::io::CodedOutputStream*)'
/usr/bin/ld: ../../libkvs-proto.a(kvs.pb.cc.o):(.rodata._ZTVN6google8protobuf8internal8MapEntryIN3kvs46SingleKeyCausalValue_VectorClockEntry_DoNotUseENSt3__112basic_stringIcNS5_11char_traitsIcEENS5_9allocatorIcEEEEjLNS1_14WireFormatLite9FieldTypeE9ELSD_13ELi0EEE[_ZTVN6google8protobuf8internal8MapEntryIN3kvs46SingleKeyCausalValue_VectorClockEntry_DoNotUseENSt3__112basic_stringIcNS5_11char_traitsIcEENS5_9allocatorIcEEEEjLNS1_14WireFormatLite9FieldTypeE9ELSD_13ELi0EEE]+0x58): undefined reference to `google::protobuf::Message::InitializationErrorString() const'
/usr/bin/ld: ../../libkvs-proto.a(kvs.pb.cc.o):(.rodata._ZTVN6google8protobuf8internal12MapEntryImplIN3kvs46SingleKeyCausalValue_VectorClockEntry_DoNotUseENS0_7MessageENSt3__112basic_stringIcNS6_11char_traitsIcEENS6_9allocatorIcEEEEjLNS1_14WireFormatLite9FieldTypeE9ELSE_13ELi0EEE[_ZTVN6google8protobuf8internal12MapEntryImplIN3kvs46SingleKeyCausalValue_VectorClockEntry_DoNotUseENS0_7MessageENSt3__112basic_stringIcNS6_11char_traitsIcEENS6_9allocatorIcEEEEjLNS1_14WireFormatLite9FieldTypeE9ELSE_13ELi0EEE]+0x58): undefined reference to `google::protobuf::Message::InitializationErrorString() const'
/usr/bin/ld: ../../libkvs-proto.a(kvs.pb.cc.o):(.rodata._ZTVN6google8protobuf8internal8MapEntryIN3kvs45MultiKeyCausalValue_VectorClockEntry_DoNotUseENSt3__112basic_stringIcNS5_11char_traitsIcEENS5_9allocatorIcEEEEjLNS1_14WireFormatLite9FieldTypeE9ELSD_13ELi0EEE[_ZTVN6google8protobuf8internal8MapEntryIN3kvs45MultiKeyCausalValue_VectorClockEntry_DoNotUseENSt3__112basic_stringIcNS5_11char_traitsIcEENS5_9allocatorIcEEEEjLNS1_14WireFormatLite9FieldTypeE9ELSD_13ELi0EEE]+0x58): undefined reference to `google::protobuf::Message::InitializationErrorString() const'
/usr/bin/ld: ../../libkvs-proto.a(kvs.pb.cc.o):(.rodata._ZTVN6google8protobuf8internal12MapEntryImplIN3kvs45MultiKeyCausalValue_VectorClockEntry_DoNotUseENS0_7MessageENSt3__112basic_stringIcNS6_11char_traitsIcEENS6_9allocatorIcEEEEjLNS1_14WireFormatLite9FieldTypeE9ELSE_13ELi0EEE[_ZTVN6google8protobuf8internal12MapEntryImplIN3kvs45MultiKeyCausalValue_VectorClockEntry_DoNotUseENS0_7MessageENSt3__112basic_stringIcNS6_11char_traitsIcEENS6_9allocatorIcEEEEjLNS1_14WireFormatLite9FieldTypeE9ELSE_13ELi0EEE]+0x58): undefined reference to `google::protobuf::Message::InitializationErrorString() const'
/usr/bin/ld: ../../libkvs-proto.a(kvs.pb.cc.o):(.rodata._ZTVN6google8protobuf8internal12MapEntryImplIN3kvs46SingleKeyCausalValue_VectorClockEntry_DoNotUseENS0_7MessageENSt3__112basic_stringIcNS6_11char_traitsIcEENS6_9allocatorIcEEEEjLNS1_14WireFormatLite9FieldTypeE9ELSE_13ELi0EE15MapEntryWrapperE[_ZTVN6google8protobuf8internal12MapEntryImplIN3kvs46SingleKeyCausalValue_VectorClockEntry_DoNotUseENS0_7MessageENSt3__112basic_stringIcNS6_11char_traitsIcEENS6_9allocatorIcEEEEjLNS1_14WireFormatLite9FieldTypeE9ELSE_13ELi0EE15MapEntryWrapperE]+0x58): undefined reference to `google::protobuf::Message::InitializationErrorString() const'
/usr/bin/ld: ../../libkvs-proto.a(kvs.pb.cc.o):(.rodata._ZTVN6google8protobuf8internal12MapEntryImplIN3kvs45MultiKeyCausalValue_VectorClockEntry_DoNotUseENS0_7MessageENSt3__112basic_stringIcNS6_11char_traitsIcEENS6_9allocatorIcEEEEjLNS1_14WireFormatLite9FieldTypeE9ELSE_13ELi0EE15MapEntryWrapperE[_ZTVN6google8protobuf8internal12MapEntryImplIN3kvs45MultiKeyCausalValue_VectorClockEntry_DoNotUseENS0_7MessageENSt3__112basic_stringIcNS6_11char_traitsIcEENS6_9allocatorIcEEEEjLNS1_14WireFormatLite9FieldTypeE9ELSE_13ELi0EE15MapEntryWrapperE]+0x58): more undefined references to `google::protobuf::Message::InitializationErrorString() const' follow
/usr/bin/ld: ../../libkvs-proto.a(shared.pb.cc.o): in function `protobuf_shared_2eproto::protobuf_AssignDescriptors()':
/workspaces/anna/build/shared.pb.cc:161: undefined reference to `google::protobuf::internal::AssignDescriptors(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, google::protobuf::internal::MigrationSchema const*, google::protobuf::Message const* const*, unsigned int const*, google::protobuf::Metadata*, google::protobuf::EnumDescriptor const**, google::protobuf::ServiceDescriptor const**)'
/usr/bin/ld: ../../libkvs-proto.a(shared.pb.cc.o): in function `protobuf_shared_2eproto::AddDescriptorsImpl()':
/workspaces/anna/build/shared.pb.cc:190: undefined reference to `google::protobuf::MessageFactory::InternalRegisterGeneratedFile(char const*, void (*)(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&))'
/usr/bin/ld: ../../libkvs-proto.a(shared.pb.cc.o): in function `shared::StringSet::SerializeWithCachedSizes(google::protobuf::io::CodedOutputStream*) const':
/workspaces/anna/build/shared.pb.cc:324: undefined reference to `google::protobuf::internal::WireFormatLite::WriteString(int, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, google::protobuf::io::CodedOutputStream*)'
/usr/bin/ld: ../../libkvs-proto.a(shared.pb.cc.o): in function `shared::KeyVersion::SerializeWithCachedSizes(google::protobuf::io::CodedOutputStream*) const':
/workspaces/anna/build/shared.pb.cc:605: undefined reference to `google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(int, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, google::protobuf::io::CodedOutputStream*)'
/usr/bin/ld: ../../libkvs-proto.a(shared.pb.cc.o):(.rodata+0x1e0): undefined reference to `google::protobuf::Message::GetTypeName() const'
/usr/bin/ld: ../../libkvs-proto.a(shared.pb.cc.o):(.rodata+0x218): undefined reference to `google::protobuf::Message::InitializationErrorString() const'
/usr/bin/ld: ../../libkvs-proto.a(shared.pb.cc.o):(.rodata+0x2f0): undefined reference to `google::protobuf::Message::InitializationErrorString() const'
/usr/bin/ld: ../../libkvs-proto.a(shared.pb.cc.o):(.rodata+0x3a8): undefined reference to `google::protobuf::Message::GetTypeName() const'
/usr/bin/ld: ../../libkvs-proto.a(shared.pb.cc.o):(.rodata+0x3e0): undefined reference to `google::protobuf::Message::InitializationErrorString() const'
/usr/bin/ld: ../../libkvs-proto.a(shared.pb.cc.o):(.rodata+0x488): undefined reference to `google::protobuf::Message::GetTypeName() const'
/usr/bin/ld: ../../libkvs-proto.a(shared.pb.cc.o):(.rodata+0x4c0): undefined reference to `google::protobuf::Message::InitializationErrorString() const'
/usr/bin/ld: ../../libkvs-proto.a(shared.pb.cc.o):(.rodata._ZTVN6google8protobuf8internal8MapEntryIN6shared36KeyVersion_VectorClockEntry_DoNotUseENSt3__112basic_stringIcNS5_11char_traitsIcEENS5_9allocatorIcEEEEjLNS1_14WireFormatLite9FieldTypeE9ELSD_13ELi0EEE[_ZTVN6google8protobuf8internal8MapEntryIN6shared36KeyVersion_VectorClockEntry_DoNotUseENSt3__112basic_stringIcNS5_11char_traitsIcEENS5_9allocatorIcEEEEjLNS1_14WireFormatLite9FieldTypeE9ELSD_13ELi0EEE]+0x58): undefined reference to `google::protobuf::Message::InitializationErrorString() const'
/usr/bin/ld: ../../libkvs-proto.a(shared.pb.cc.o):(.rodata._ZTVN6google8protobuf8internal12MapEntryImplIN6shared36KeyVersion_VectorClockEntry_DoNotUseENS0_7MessageENSt3__112basic_stringIcNS6_11char_traitsIcEENS6_9allocatorIcEEEEjLNS1_14WireFormatLite9FieldTypeE9ELSE_13ELi0EEE[_ZTVN6google8protobuf8internal12MapEntryImplIN6shared36KeyVersion_VectorClockEntry_DoNotUseENS0_7MessageENSt3__112basic_stringIcNS6_11char_traitsIcEENS6_9allocatorIcEEEEjLNS1_14WireFormatLite9FieldTypeE9ELSE_13ELi0EEE]+0x58): undefined reference to `google::protobuf::Message::InitializationErrorString() const'
/usr/bin/ld: ../../libkvs-proto.a(shared.pb.cc.o):(.rodata._ZTVN6google8protobuf8internal12MapEntryImplIN6shared36KeyVersion_VectorClockEntry_DoNotUseENS0_7MessageENSt3__112basic_stringIcNS6_11char_traitsIcEENS6_9allocatorIcEEEEjLNS1_14WireFormatLite9FieldTypeE9ELSE_13ELi0EE15MapEntryWrapperE[_ZTVN6google8protobuf8internal12MapEntryImplIN6shared36KeyVersion_VectorClockEntry_DoNotUseENS0_7MessageENSt3__112basic_stringIcNS6_11char_traitsIcEENS6_9allocatorIcEEEEjLNS1_14WireFormatLite9FieldTypeE9ELSE_13ELi0EE15MapEntryWrapperE]+0x58): undefined reference to `google::protobuf::Message::InitializationErrorString() const'
/usr/bin/ld: ../../libkvs-proto.a(metadata.pb.cc.o): in function `protobuf_metadata_2eproto::protobuf_AssignDescriptors()':
/workspaces/anna/build/metadata.pb.cc:371: undefined reference to `google::protobuf::internal::AssignDescriptors(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, google::protobuf::internal::MigrationSchema const*, google::protobuf::Message const* const*, unsigned int const*, google::protobuf::Metadata*, google::protobuf::EnumDescriptor const**, google::protobuf::ServiceDescriptor const**)'
/usr/bin/ld: ../../libkvs-proto.a(metadata.pb.cc.o): in function `protobuf_metadata_2eproto::AddDescriptorsImpl()':
/workspaces/anna/build/metadata.pb.cc:415: undefined reference to `google::protobuf::MessageFactory::InternalRegisterGeneratedFile(char const*, void (*)(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&))'
/usr/bin/ld: ../../libkvs-proto.a(metadata.pb.cc.o): in function `KeyAccessData_KeyCount::SerializeWithCachedSizes(google::protobuf::io::CodedOutputStream*) const':
/workspaces/anna/build/metadata.pb.cc:921: undefined reference to `google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(int, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, google::protobuf::io::CodedOutputStream*)'
/usr/bin/ld: ../../libkvs-proto.a(metadata.pb.cc.o): in function `ClusterMembership_TierMembership_Server::SerializeWithCachedSizes(google::protobuf::io::CodedOutputStream*) const':
/workspaces/anna/build/metadata.pb.cc:1437: undefined reference to `google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(int, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, google::protobuf::io::CodedOutputStream*)'
/usr/bin/ld: /workspaces/anna/build/metadata.pb.cc:1447: undefined reference to `google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(int, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, google::protobuf::io::CodedOutputStream*)'
/usr/bin/ld: ../../libkvs-proto.a(metadata.pb.cc.o): in function `KeySizeData_KeySize::SerializeWithCachedSizes(google::protobuf::io::CodedOutputStream*) const':
/workspaces/anna/build/metadata.pb.cc:2230: undefined reference to `google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(int, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, google::protobuf::io::CodedOutputStream*)'
/usr/bin/ld: ../../libkvs-proto.a(metadata.pb.cc.o): in function `ReplicationFactor::SerializeWithCachedSizes(google::protobuf::io::CodedOutputStream*) const':
/workspaces/anna/build/metadata.pb.cc:3019: undefined reference to `google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(int, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, google::protobuf::io::CodedOutputStream*)'
/usr/bin/ld: ../../libkvs-proto.a(metadata.pb.cc.o):(.rodata+0x5e8): undefined reference to `google::protobuf::Message::GetTypeName() const'
/usr/bin/ld: ../../libkvs-proto.a(metadata.pb.cc.o):(.rodata+0x620): undefined reference to `google::protobuf::Message::InitializationErrorString() const'
/usr/bin/ld: ../../libkvs-proto.a(metadata.pb.cc.o):(.rodata+0x6c8): undefined reference to `google::protobuf::Message::GetTypeName() const'
/usr/bin/ld: ../../libkvs-proto.a(metadata.pb.cc.o):(.rodata+0x700): undefined reference to `google::protobuf::Message::InitializationErrorString() const'
/usr/bin/ld: ../../libkvs-proto.a(metadata.pb.cc.o):(.rodata+0x7a8): undefined reference to `google::protobuf::Message::GetTypeName() const'
/usr/bin/ld: ../../libkvs-proto.a(metadata.pb.cc.o):(.rodata+0x7e0): undefined reference to `google::protobuf::Message::InitializationErrorString() const'
/usr/bin/ld: ../../libkvs-proto.a(metadata.pb.cc.o):(.rodata+0x888): undefined reference to `google::protobuf::Message::GetTypeName() const'
/usr/bin/ld: ../../libkvs-proto.a(metadata.pb.cc.o):(.rodata+0x8c0): undefined reference to `google::protobuf::Message::InitializationErrorString() const'
/usr/bin/ld: ../../libkvs-proto.a(metadata.pb.cc.o):(.rodata+0x968): undefined reference to `google::protobuf::Message::GetTypeName() const'
/usr/bin/ld: ../../libkvs-proto.a(metadata.pb.cc.o):(.rodata+0x9a0): undefined reference to `google::protobuf::Message::InitializationErrorString() const'
/usr/bin/ld: ../../libkvs-proto.a(metadata.pb.cc.o):(.rodata+0xa48): undefined reference to `google::protobuf::Message::GetTypeName() const'
/usr/bin/ld: ../../libkvs-proto.a(metadata.pb.cc.o):(.rodata+0xa80): undefined reference to `google::protobuf::Message::InitializationErrorString() const'
/usr/bin/ld: ../../libkvs-proto.a(metadata.pb.cc.o):(.rodata+0xb28): undefined reference to `google::protobuf::Message::GetTypeName() const'
/usr/bin/ld: ../../libkvs-proto.a(metadata.pb.cc.o):(.rodata+0xb60): undefined reference to `google::protobuf::Message::InitializationErrorString() const'
/usr/bin/ld: ../../libkvs-proto.a(metadata.pb.cc.o):(.rodata+0xc08): undefined reference to `google::protobuf::Message::GetTypeName() const'
/usr/bin/ld: ../../libkvs-proto.a(metadata.pb.cc.o):(.rodata+0xc40): undefined reference to `google::protobuf::Message::InitializationErrorString() const'
/usr/bin/ld: ../../libkvs-proto.a(metadata.pb.cc.o):(.rodata+0xce8): undefined reference to `google::protobuf::Message::GetTypeName() const'
/usr/bin/ld: ../../libkvs-proto.a(metadata.pb.cc.o):(.rodata+0xd20): undefined reference to `google::protobuf::Message::InitializationErrorString() const'
/usr/bin/ld: ../../libkvs-proto.a(metadata.pb.cc.o):(.rodata+0xdd0): undefined reference to `google::protobuf::Message::GetTypeName() const'
/usr/bin/ld: ../../libkvs-proto.a(metadata.pb.cc.o):(.rodata+0xe08): undefined reference to `google::protobuf::Message::InitializationErrorString() const'
/usr/bin/ld: ../../libkvs-proto.a(metadata.pb.cc.o):(.rodata+0xeb0): undefined reference to `google::protobuf::Message::GetTypeName() const'
/usr/bin/ld: ../../libkvs-proto.a(metadata.pb.cc.o):(.rodata+0xee8): undefined reference to `google::protobuf::Message::InitializationErrorString() const'
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[3]: *** [src/kvs/CMakeFiles/anna-kvs.dir/build.make:238: target/kvs/anna-kvs] Error 1
make[3]: Leaving directory '/workspaces/anna/build'
make[2]: *** [CMakeFiles/Makefile2:740: src/kvs/CMakeFiles/anna-kvs.dir/all] Error 2
make[2]: Leaving directory '/workspaces/anna/build'
make[1]: *** [Makefile:141: all] Error 2
make[1]: Leaving directory '/workspaces/anna/build'
make: *** [Makefile:69: build] Error 2
Binary and Lib, so other apps can link with just the lib.
cd build && make test
fails with no such target as test:
start/stop command with no options starts/stops all of kvs, monitor and route
add options to stop to allow to stop only one of them
Development works fine loclly on macos and linux (Ubuntu).
GH Action passes on Macos, but after a lot of time spent trying to get GH Linux build passing I decided to give up and move on to other things.
I may come back to it, but probably someone more knowledgeable on Linux could fix this much faster than I can.
I will be checking it continues to build and pass tests on Linux locally in the meantime.
Example of failing linux build:
https://github.com/andrewdavidmackenzie/anna/runs/6918613871?check_suite_focus=true
build.rs so that cargo build works.
Initially, it will just exec build.sh, or maybe commands from that?
use std::io;
const PROTO_FILES: &[&str] = &[
"shared.proto",
"anna.proto",
"cloudburst.proto",
"causal.proto",
];
fn main() -> io::Result<()> {
// Rust code generation for protobuf definitions
prost_build::compile_protos(PROTO_FILES, &["src/lib/proto/"])
}
should not generate in source
See if this could fix the Unix linking issues
will tell you which of the expected binaries were:
and which processes among them are currently running and their pids (and maybe who started them?)
Running tests...
dyld: Library not loaded: /usr/local/lib/libzmq.5.dylib
Referenced from: /Users/travis/build/andrewdavidmackenzie/anna/./build/target/kvs/anna-monitor
Reason: image not found
dyld: Library not loaded: /usr/local/lib/libzmq.5.dylib
Referenced from: /Users/travis/build/andrewdavidmackenzie/anna/./build/target/kvs/anna-route
Reason: image not found
dyld: Library not loaded: /usr/local/lib/libzmq.5.dylib
Referenced from: /Users/travis/build/andrewdavidmackenzie/anna/./build/target/kvs/anna-kvs
Reason: image not found
dyld: Library not loaded: /usr/local/lib/libzmq.5.dylib
Referenced from: /Users/travis/build/andrewdavidmackenzie/anna/./build/cli/anna-cli
Reason: image not found
./tests/simple/test-simple.sh: line 35: 12575 Abort trap: 6 ./build/cli/anna-cli conf/anna-local.yml tests/simple/input > tmp.out
Output did not match expected output (tests/simple/expected.out). Observed output was:
0a1,14 > Success! > 1 > Success! > 2 > Success! > 10 > Success! > { 3 2 1 } > Success! > { 4 3 2 1 } > Success! > {test : 1} > dep1 : {test1 : 1} > hello
I think cli also needs a config file so, this case should also accept optional config file option
echo the config file that is being used when starting, either the default or the one specified on the command line
Check if the processes are running, and if they are not then start them using the same config file - echoing this to the terminal so the user knows.
Is the modified ones work with the C++ code then great, can do sooner.
If not, wait until server re-written and do then.
echo the config file that is being used when starting, either the default or the one specified on the command line
Have a status command that shows status of processes
Start starts them
stop stops them
Add test to build.rs so that 'cargo test' will test the project.
Initially using run_tests.sh or high level commands in there...
See failure here https://github.com/andrewdavidmackenzie/anna/runs/6957370519?check_suite_focus=true
probably need to declare/install zeromq dependency first
combine results from grcov and lcov into one coverage file and upload as one
see scripts/travis/upload-codecov.sh for lcov part
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.