Giter Site home page Giter Site logo

andrewdavidmackenzie / anna Goto Github PK

View Code? Open in Web Editor NEW

This project forked from hydro-project/anna

2.0 2.0 1.0 3.72 MB

A low-latency, cloud-native KVS

License: Apache License 2.0

CMake 5.81% C++ 73.01% Python 6.79% Shell 1.13% Dockerfile 0.22% Rust 11.95% Makefile 1.09%

anna's People

Contributors

andrewdavidmackenzie avatar avinash-arjavalingam avatar cw75 avatar dependabot[bot] avatar eagle-dai avatar jeffi avatar jhellerstein avatar marcoroenfeldt avatar vsreekanti avatar wildcryptofox avatar xcharleslin avatar zhang-tianxu avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar

Forkers

kvtb

anna's Issues

move proto files

move anna protobuf definition file into an anna only directory and remove the ones not used

/common/proto

Use rust cli in tests

We should have three client libraries that other apps can link into their code to interact with ann

  • rust
  • cpp
  • python

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.

Exclude system files and other libs from coverage

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 'start' command to 'anna'

Add a start command that starts required processes in background like the current start script.

  • start on it's own will start kvs & monitor and route

with options:

  • start [kvs|route|monitor]

will start only the specified service

Move logs to a correct local system location

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.

Fix build on linux in Codespaces

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

Add options to start & stop commands

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

  • start/stop [kvs, monitor, route]

Fix GH Action on ubuntu-latest

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

fix build script to generate in $OUT_DIR

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

Add a status command

will tell you which of the expected binaries were:

  • found in project files and where
  • in the PATH and where

and which processes among them are currently running and their pids (and maybe who started them?)

Fix the mac os x build

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

'anna' with no sub command will enter the anna-cli

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.

Add testing to build script

Add test to build.rs so that 'cargo test' will test the project.

Initially using run_tests.sh or high level commands in there...

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.