Coder Social home page Coder Social logo

anna's People

Contributors

avinash-arjavalingam avatar cw75 avatar eagle-dai avatar jeffi avatar jhellerstein avatar marcoroenfeldt avatar vsreekanti avatar wildcryptofox avatar xcharleslin avatar zhang-tianxu avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

anna's Issues

Multiple KeyTuples support in Anna

@vsreekanti
Many thanks for your help.
I found KeyRequest can bring multiple KeyTuples in once transmission, so I try to upgrade it:

string vget_async(const vector<Key>& keys, int size) {
        # to simplify the process, or to jump the check of pending_get_response_map_
	//if (pending_get_response_map_.find(keys[0])
	//			== pending_get_response_map_.end()) {
		KeyRequest request;
		request.set_request_id(get_request_id());
		request.set_response_address(ut_.response_connect_address());
		request.set_type(RequestType::GET);
		for (int i = 0; i < size; i++) {
			KeyTuple* tp = request.add_tuples();
			tp->set_key(keys[i]);
		}
		try_request(request);
		return request.request_id();
	//}
	//return "";
}

When I set size = 1, it works normal; when it is larger than 1.
The request_id cannot match

# size = 1
time: 164087
throughput: 6.09433e-06
time: 1348
throughput: 0.00074184
time: 318
throughput: 0.00314465
staleness of one key: 12
10.1.2.1:0_9=?10.1.2.1:0_9
number of keys: 1
10.1.2.1:0_11=?10.1.2.1:0_11


# size = 2
time: 103791
throughput: 1.92695e-05
time: 56
throughput: 0.0357143
time: 310
throughput: 0.00645161
staleness of one key: 0
10.1.2.1:0_11=?10.1.2.1:0_7
number of keys: 1
=?10.1.2.1:0_11
staleness: 15
[libprotobuf FATAL /usr/local/include/google/protobuf/repeated_field.h:1522] CHECK failed: (index) < (current_size_):
terminate called after throwing an instance of 'google::protobuf::FatalException'
  what():  CHECK failed: (index) < (current_size_):
Aborted

Update:
I found the cause of this bug. It may not be related to the Multiple KeyTuples, but the receive function of batched put.
It is likes:

void receive(KvsClientInterface *client, int number) {
	vector<KeyResponse> responses = client->receive_async();
	while (responses.size() < number) {
		responses = client->receive_async();
		number = number - responses.size();
		if (number == 0)
			break;
	}
}

Update II:
The Python client said:

# PUT only supports one key operations, we only ever have to look at
# the first KeyTuple returned.

But I see user_request_handler goes through all tuples and handle all of them, then why it said PUT only supports one key operation?

 for (const auto &tuple : request.tuples()) {
    // first check if the thread is responsible for the key
    Key key = tuple.key();
    string payload = tuple.payload();
    ...
    else if (request_type == RequestType::PUT) {
           ...
    }
    ...
}

I have extended PUT operation like GET, but only the first key-value pair in the passed key vector is executed

x = client->vput_async(keys, values, count, LatticeType);
receive(client)
x = client->vget_async(keys, count);

only keys[0]'s value is returned.

Python client in Anna Cluster mode

@vsreekanti I enconuter a new issue.
When I use the same configuration with #38 and python client client.py (from #27 ) like

from anna.client import AnnaTcpClient
from anna.lattices import SumLattice
client = AnnaTcpClient("10.1.2.66", "10.1.2.66", False)
#client = AnnaTcpClient("10.1.2.66", "10.1.2.66", True)
val = 32*[1.0]
lattice = LWWPairLattice(0, b'value')
client.put('key', lattice)

When I first run python3 client.py, it works fine.
But it hooked when I run this command again.
When I ctrl+c, it shows:

^CTraceback (most recent call last):
  File "client.py", line 7, in <module>
    client.put('key', lattice)
  File "/usr/local/lib/python3.6/dist-packages/anna/client.py", line 165, in put
    worker_address = self._get_worker_address(key)
  File "/usr/local/lib/python3.6/dist-packages/anna/client.py", line 233, in _get_worker_address
    addresses = self._query_routing(key, port)
  File "/usr/local/lib/python3.6/dist-packages/anna/client.py", line 266, in _query_routing
    KeyAddressResponse)[0]
  File "/usr/local/lib/python3.6/dist-packages/anna/zmq_util.py", line 27, in recv_response
    resp = rcv_sock.recv()
  File "zmq/backend/cython/socket.pyx", line 791, in zmq.backend.cython.socket.Socket.recv
  File "zmq/backend/cython/socket.pyx", line 827, in zmq.backend.cython.socket.Socket.recv
  File "zmq/backend/cython/socket.pyx", line 186, in zmq.backend.cython.socket._recv_copy
  File "zmq/backend/cython/checkrc.pxd", line 13, in zmq.backend.cython.checkrc._check_rc
KeyboardInterrupt

Missing Client Docs

Hi,

is there any documentation about anna-kv clients (either cpp client or the python client)?

Best Regards

Tests fail

$ scripts/run-tests.sh
Starting local server...
Running tests...
Output did not match expected output (tests/simple/expected.out). Observed output was:
10c10 < { 2 1 4 3 } --- > { 4 3 2 1 }
Stopping local server...
Running tests...
Test project /external/git/github/hydro-project/anna/build
    Start 1: LatticeTest
1/3 Test #1: LatticeTest ......................   Passed    0.00 sec
    Start 2: ServerTests
2/3 Test #2: ServerTests ......................***Failed    0.04 sec
    Start 3: RouteTests
3/3 Test #3: RouteTests .......................   Passed    0.02 sec

67% tests passed, 1 tests failed out of 3

Total Test time (real) =   0.07 sec

The following tests FAILED:
          2 - ServerTests (Failed)
Errors while running CTest
make: *** [Makefile:139: test] Error 8

Replication mechanism in Anna

I have some questions about the replication mechanism in Anna:

  1. Is there any document talking about how to sync all replicas of a key-value pair? or the workflow of how anna receivers a user PUT request and distributed it to all replicas (N replicas) and how anna receivers a user PUT request and distributed it to 1/K replicas out of all replicas (N replicas)?
  2. How to disabled Anna’s elasticity mechanism? Can I just not start anna-monitor?

`anna-cli` segfaults on failed `GET_CAUSAL` request

$ build/cli/anna-cli conf/anna-config.yml
kvs> GET_CAUSAL doesnotexist
Segmentation fault
kvs> GET_CAUSAL q

Thread 1 "anna-cli" received signal SIGSEGV, Segmentation fault.
0x000055555556bc3b in handle_request(KvsClientInterface*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >) ()
(gdb) bt
#0  0x000055555556bc3b in handle_request(KvsClientInterface*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >) ()
#1  0x000055555556d27a in run(KvsClientInterface*) ()
#2  0x0000555555569f41 in main ()

"Too many open files" crashes the kvs

I encounter the following issue:

terminate called after throwing an instance of 'zmq::error_t'
  what():  Too many open files
bash: line 1: 20404 Aborted                 ./build/target/kvs/anna-kvs
terminate called after throwing an instance of 'zmq::error_t'
  what():  Too many open files
bash: line 1: 32208 Aborted                 ./build/target/kvs/anna-kvs

Anna performance

Hello, I know Anna offers world-beating speed at many scales. To get down the details, I wanted to benchmark anna against Redis with YCSB. But I didn't find Anna's adapter in YCSB. Therefore, I was wondering how to connect to Anna using YCSB? Is there any documentation or package about it?

Best Regards

anna under k8s

would it be a good idea to run anna under container and k8s where each instance can come and go at any time?
thank you for reading this.

regards,
-M

macOS: Anna failed to build

Tried to build anna locally as per docs.

Steps:

  1. Clone hydro-project/anna
  2. Clone hydro-project/common -> hydro-project/anna/common
  3. ./common/scripts/install-dependencies-osx.sh
  4. ./scripts/build.sh
-bash-5.0$ ./scripts/build.sh
-- The C compiler identification is AppleClang 10.0.1.10010046
-- The CXX compiler identification is AppleClang 10.0.1.10010046
-- Check for working C compiler: /Library/Developer/CommandLineTools/usr/bin/cc
-- Check for working C compiler: /Library/Developer/CommandLineTools/usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/clang++
-- Check for working CXX compiler: /usr/bin/clang++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Could NOT find Protobuf (missing: Protobuf_LIBRARIES Protobuf_INCLUDE_DIR)
CMake Error at /usr/local/Cellar/cmake/3.15.2/share/cmake/Modules/FindPackageHandleStandardArgs.cmake:137 (message):
  Could NOT find Protobuf (missing: Protobuf_LIBRARIES Protobuf_INCLUDE_DIR)
Call Stack (most recent call first):
  /usr/local/Cellar/cmake/3.15.2/share/cmake/Modules/FindPackageHandleStandardArgs.cmake:378 (_FPHSA_FAILURE_MESSAGE)
  /usr/local/Cellar/cmake/3.15.2/share/cmake/Modules/FindProtobuf.cmake:599 (FIND_PACKAGE_HANDLE_STANDARD_ARGS)
  CMakeLists.txt:70 (FIND_PACKAGE)


-- Configuring incomplete, errors occurred!
See also "/Users/kaviraj/src/github.com/hydro-project/anna/build/CMakeFiles/CMakeOutput.log".
make: *** No targets specified and no makefile found.  Stop.

Improve visibility & documentation

There's lots of place in the code where the explanation is sparse and/or not very helpful. Finding ways to make codepaths more visible: For each API call, which are the architecture components as well as the actual pieces of code being touched.

A cluster of Anna Servers

@vsreekanti
Is there any document about Anna (Cluster Mode), instead of using docker?
Can I directly change the configuration files to launch a cluster of Anna?
For example, I have two nodes with ips: n1, n2, and I want each key has two replications. What's the configuration files on these two nodes, respectively?

Python client of Anna

Hello, when I use the python client of Anna, I found there is some difference between cpp client, which has clear hint for user to use~(e.g., read config from a yaml file).

There are two issues of python client of Anna:

  1. Is there any example of using the native python client of Anna.
  2. How to solve it: I try to wrap the native cpp client of Anna, but it has some runtime errors:
Thread 1 "python3" received signal SIGSEGV, Segmentation fault.
0x00007fffbf02a2a9 in GlobalError::PushToStack() () from /usr/lib/x86_64-linux-gnu/libapt-pkg.so.5.0
(gdb) bt
#0  0x00007fffbf02a2a9 in GlobalError::PushToStack() () from /usr/lib/x86_64-linux-gnu/libapt-pkg.so.5.0
#1  0x00007fffbf0ae082 in pkgInitConfig(Configuration&) () from /usr/lib/x86_64-linux-gnu/libapt-pkg.so.5.0
#2  0x00007fffbf34bed8 in ?? () from /usr/lib/python3/dist-packages/apt_pkg.cpython-36m-x86_64-linux-gnu.so
#3  0x000000000050a84f in ?? ()
#4  0x000000000050c549 in _PyEval_EvalFrameDefault ()

Related codes:

#include <fstream>
#include "client/kvs_client.hpp"
#include "yaml-cpp/yaml.h"
#define YAML_PATH "A CORRECT PATH"

unsigned kRoutingThreadCount;
ZmqUtil zmq_util;
ZmqUtilInterface *kZmqUtil = &zmq_util;
Address ip;
std::vector<UserRoutingThread>* threads;
KvsClient * client;

extern "C" {
void client_new(){
	YamlConfig(YAML_PATH);
	client = new KvsClient(*(threads), ip, 0, 10000);
}
}

When I comment out the client = new KvsClient(*(threads), ip, 0, 10000);, such error disappears.

Could not find a version that satisfies the requirement pyarrow==0.14.1 when running pip3 install -r requirements.txt

Hello!

I am currently trying to setup cloudburst but when installing the dependencies via pip3 install -r requirements.txt the following happens:

sudo pip3 install -r requirements.txt
Collecting cloudpickle==0.6.1
Downloading cloudpickle-0.6.1-py2.py3-none-any.whl (14 kB)
Collecting coverage==4.5.4
Downloading coverage-4.5.4.tar.gz (385 kB)
|████████████████████████████████| 385 kB 1.0 MB/s
Collecting flake8==3.7.7
Downloading flake8-3.7.7-py2.py3-none-any.whl (68 kB)
|████████████████████████████████| 68 kB 2.1 MB/s
Collecting numpy==1.16.1
Downloading numpy-1.16.1.zip (5.1 MB)
|████████████████████████████████| 5.1 MB 1.1 MB/s
Collecting pandas==0.25.1
Downloading pandas-0.25.1.tar.gz (12.6 MB)
|████████████████████████████████| 12.6 MB 1.6 MB/s
Collecting protobuf==3.6.1
Downloading protobuf-3.6.1-py2.py3-none-any.whl (390 kB)
|████████████████████████████████| 390 kB 2.7 MB/s
ERROR: Could not find a version that satisfies the requirement pyarrow==0.14.1 (from -r requirements.txt (line 7)) (from versions: 0.9.0, 0.10.0, 0.11.0, 0.11.1, 0.12.0, 0.12.1, 0.13.0, 0.14.0, 0.15.1, 0.16.0, 0.17.0, 0.17.1, 1.0.0, 1.0.1, 2.0.0, 3.0.0, 4.0.0, 4.0.1, 5.0.0, 6.0.0, 6.0.1, 7.0.0, 8.0.0)
ERROR: No matching distribution found for pyarrow==0.14.1 (from -r requirements.txt (line 7))

I am assuming, this happens because pyarrow 0.14.1 is pinned within protobuf 3.6.1 but is no longer available since :

sudo pip install pyarrow==0.14.1
ERROR: Could not find a version that satisfies the requirement pyarrow==0.14.1 (from versions: 0.9.0, 0.10.0, 0.11.0, 0.11.1, 0.12.0, 0.12.1, 0.13.0, 0.14.0, 0.15.1, 0.16.0, 0.17.0, 0.17.1, 1.0.0, 1.0.1, 2.0.0, 3.0.0, 4.0.0, 4.0.1, 5.0.0, 6.0.0, 6.0.1, 7.0.0, 8.0.0)
ERROR: No matching distribution found for pyarrow==0.14.1

can this be fixed by simply using a newer version of protobuf?

Best regards,
Florian

Compile issue when using Anna

Hello, I have encountered an issue when using Anna (Sorry for my careless of closing the old issue #24 ):

anna/build/libanna-proto.a(anna.pb.cc.o): relocation R_X86_64_PC32 against symbol `_KeyTuple_default_instance_' can not be used when making a shared object; recompile with -fPIC

How can I recompile Anna libs with -fPIC?
I add -fPIC in the CMakefile but do not work:

IF(${CMAKE_CXX_COMPILER} STREQUAL "/usr/bin/g++")
  SET(CMAKE_CXX_FLAGS_COMMON
          "-std=c++11 -pthread -fPIC")
ENDIF()

SET(CMAKE_CXX_FLAGS_DEBUG
    "${CMAKE_CXX_FLAGS_DEBUG} \
    ${CMAKE_CXX_FLAGS_COMMON} \
    -g -O0 -fprofile-arcs -ftest-coverage")

SET(CMAKE_CXX_FLAGS_RELEASE
    "${CMAKE_CXX_FLAGS_RELEASE} \
    ${CMAKE_CXX_FLAGS_COMMON} \
    -O3")

Update:
It (the "-fPIC" issue) can be solved via manually modifying the file build/CMakeFiles/anna-proto.dir/flags.make and insert "-fPIC". How to generate it (via "Unix Makefiles" Generator, CMake Version 3.14) with "-fPIC" automatically?

Update: adding flags to CMAKE_CXX_FLAGS solves the issue.

IF(${CMAKE_CXX_COMPILER} STREQUAL "/usr/bin/g++")
  SET(CMAKE_CXX_FLAGS_COMMON
          "-fPIC -std=c++11 -pthread")
  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CMAKE_CXX_FLAGS_COMMON}")
ENDIF()

2>
Then, it comes another issue about using GPU (nvcc)

[ 14%] Building NVCC (Device) object CMakeFiles/cuda_compile_1.dir/layers/cuda_compile_1_generated_exp_layer.cu.o
[ 14%] Building NVCC (Device) object CMakeFiles/cuda_compile_1.dir/layers/cuda_compile_1_generated_filter_layer.cu.o

anna/common/include/lattices/core_lattices.hpp(164): error: the object has type qualifiers that are not compatible with the member function "MapLattice<K, V>::at"
            object type is: const MapLattice<K, V>

1 error detected in the compilation of "/tmp/tmpxft_0000502a_00000000-4_cudnn_conv_layer.cpp4.ii".
CMake Error at cuda_compile_1_generated_cudnn_conv_layer.cu.o.Release.cmake:275 (message):
  Error generating file
CMakeFiles/cuda_compile_1.dir/layers/./cuda_compile_1_generated_cudnn_conv_layer.cu.o

make[2]: *** Waiting for unfinished jobs....

anna-route crashes in ebs (disk-tier) mode

I'm trying to run anna server as disk node in local mode. I changed the SERVER_TYPE in start-anna-local.sh to "ebs". anna-kvs, anna-monitor, anna-route runs as seen in ps. When I run anna-cli and do some PUT or GET, it hangs for 10 seconds and then says "Failure!". Also anna-route crashes as soon as any PUT or GET is triggered from ana-cli.

Tried changing ebs-cap from 0 to 1 & set replication->ebs to 1 in config, but no luck. Am I missing something ? Is this incorrect procedure to run server as disk node. Any help is appreciated.

anna-monitor and anna-kvs consistently hover around 100% (+/- 5%) CPU when idle

htop extract

 VIRT   RES   SHR S CPU% MEM%   TIME+  Command
95220  9564  6940 R 98.9  0.1  0:07.61 ./build/target/kvs/anna-monitor
96332 10856  7172 R 98.2  0.1  0:07.49 ./build/target/kvs/anna-kvs
96020 10712  7052 S  0.0  0.1  0:00.00 ./build/target/kvs/anna-route

strace output for anna-monitor and anna-kvs respectively. These loop tightly with immediate timeouts despite no clients / no load.

poll([{fd=11, events=POLLIN}, {fd=13, events=POLLIN}, {fd=15, events=POLLIN}], 3, 0) = 0 (Timeout)
poll([{fd=11, events=POLLIN}], 1, 0)    = 0 (Timeout)
poll([{fd=13, events=POLLIN}], 1, 0)    = 0 (Timeout)
poll([{fd=15, events=POLLIN}], 1, 0)    = 0 (Timeout)
poll([{fd=15, events=POLLIN}, {fd=17, events=POLLIN}, {fd=19, events=POLLIN}, {fd=21, events=POLLIN}, {fd=23, events=POLLIN}, {fd=25, events=POLLIN}, {fd=27, events=POLLIN}, {fd=29, events=POLLIN}, {fd=31, events=POLLIN}], 9, 0) = 0 (Timeout)
poll([{fd=15, events=POLLIN}], 1, 0)    = 0 (Timeout)
poll([{fd=17, events=POLLIN}], 1, 0)    = 0 (Timeout)
poll([{fd=19, events=POLLIN}], 1, 0)    = 0 (Timeout)
poll([{fd=21, events=POLLIN}], 1, 0)    = 0 (Timeout)
poll([{fd=23, events=POLLIN}], 1, 0)    = 0 (Timeout)
poll([{fd=25, events=POLLIN}], 1, 0)    = 0 (Timeout)
poll([{fd=27, events=POLLIN}], 1, 0)    = 0 (Timeout)
poll([{fd=29, events=POLLIN}], 1, 0)    = 0 (Timeout)
poll([{fd=31, events=POLLIN}], 1, 0)    = 0 (Timeout)

CMakeList.txt assumes gcc is /usr/bin/g++ and clang is /usr/bin/clang++

It looks like the project's root CMakeLists.txt makes assumptions about where clang and GCC are installed which doesn't match all configurations / distributions. In particular, I'm referring to the conditionals which guard appending "-pthread" (and other flags) to the CMAKE_CXX_FLAGS_COMMON variable. The fix is likely as simple as changing the conditional guard by replacing instances of ${CMAKE_CXX_COMPILER} STREQUAL "/usr/bin/clang++" with ${CMAKE_CXX_COMPILER_ID} MATCHES "(C|c?)lang" (and similar for GCC).

The valid values of CMAKE_CXX_COMPILER_ID can be found here

Background gossip/multicast protocol

@vsreekanti
Hello, I have a question about Background gossip/multicast protocol.
In Anna:
The user requests will be handled by user_request_handler.
If the type is PUT, it records it in local_changeset for gossip sync periodically.

if (local_changeset.size() > 0) {
        .....
        // fetch current state from DB and this is a "PUT" request
        send_gossip(addr_keyset_map, pushers, serializers, stored_key_map);
        local_changeset.clear();
      }

Is this "PUT" request handled by user_request_handler or gossip_handler ? If it is handled by gossip_handler, how it can achieve that (I mean how the server recongnize the PUT request is send by other replicas or the clients) ?

Is the Lattice (in Anna) a State-based CRDT?

Hello!
After I read the gossip sync:

for (const Key &key : local_changeset) {
      ...
      res = process_get(key, serializers[type]); // read the state of the Key from MapLattice
      prepare_put_tuple(gossip_map[address], key, type, res.first);
      ...
      kZmqUtil->send_string(serialized, &pushers[gossip_pair.first]);
}

Since the SetLattice is increment-only, the size of SetLattice grows with more PUT updates, this will greatly increase the overhead of sync.

Is there any optimization ways, e.g. to use Delta state CRDTs? How to apply these optimizations?

How to manually specify the number of replicas?

@vsreekanti
Hello, there are four parameters when setting the replication

replication:
  memory: 1
  ebs: 0
  minimum: 1
  local: 1

I guess memory means how many replicas are stored in memory and ebs means how many replicas are stored in disk. How about minimum and local?
If I want to run a cluster of 12 anna nodes with each key has 8 replicas in memory-only mode, how to set these parameters?

My current setting likes:

replication:
  memory: 8
  ebs: 0
  minimum: 8
  local: 1

My concern is 12*1(local) > 8(memory), it seems not right.

Many thanks

Update: When I run Anna (local mode) with the following configuration, the client works fine.
I only runs route and server.

./build/target/kvs/anna-route &
./build/target/kvs/anna-kvs &
monitoring:
  mgmt_ip: 127.0.0.1
  ip: 127.0.0.1
routing:
  monitoring:
      - 127.0.0.1
  ip: 10.1.2.66
user:
  monitoring:
      - 127.0.0.1
  routing:
      - 10.1.2.66
  ip: 10.1.2.66
server:
  monitoring:
      - 127.0.0.1
  routing:
      - 10.1.2.66
  seed_ip: 10.1.2.66
  public_ip: 10.1.2.66
  private_ip: 10.4.2.2
  mgmt_ip: "NULL"
policy:
  elasticity: false
  selective-rep: false
  tiering: false
ebs: ./
capacities: # in GB
  memory-cap: 1
  ebs-cap: 0
threads:
  memory: 1
  ebs: 1
  routing: 1
  benchmark: 1
replication:
  memory: 1
  ebs: 0
  minimum: 1
  local: 1

anna-cli build issue

I wanted to test out a local build of anna following the steps in docs/building-anna.md, but hit an immediate issue on compiling anna-cli:

anna % ./scripts/build.sh
...
[ 56%] Building CXX object client/cpp/CMakeFiles/anna-cli.dir/cli.cpp.o
/Users/chris.heller/hydro-project/anna/client/cpp/cli.cpp:28:8: error: no member named 'cout' in namespace 'std'
  std::cout << "{ ";
  ~~~~~^
/Users/chris.heller/hydro-project/anna/client/cpp/cli.cpp:30:10: error: no member named 'cout' in namespace 'std'
    std::cout << val << " ";
    ~~~~~^
/Users/chris.heller/hydro-project/anna/client/cpp/cli.cpp:33:8: error: no member named 'cout' in namespace 'std'
  std::cout << "}" << std::endl;
  ~~~~~^
/Users/chris.heller/hydro-project/anna/client/cpp/cli.cpp:53:12: error: no member named 'cout' in namespace 'std'
      std::cout << "Error: received more than one response" << std::endl;
      ~~~~~^
/Users/chris.heller/hydro-project/anna/client/cpp/cli.cpp:60:10: error: no member named 'cout' in namespace 'std'
    std::cout << lww_lattice.reveal().value << std::endl;
    ~~~~~^
/Users/chris.heller/hydro-project/anna/client/cpp/cli.cpp:71:12: error: no member named 'cout' in namespace 'std'
      std::cout << "Error: received more than one response" << std::endl;
      ~~~~~^
/Users/chris.heller/hydro-project/anna/client/cpp/cli.cpp:81:12: error: no member named 'cout' in namespace 'std'
      std::cout << "{" << pair.first << " : "
      ~~~~~^
/Users/chris.heller/hydro-project/anna/client/cpp/cli.cpp:86:12: error: no member named 'cout' in namespace 'std'
      std::cout << dep_key_vc_pair.first << " : ";
      ~~~~~^
/Users/chris.heller/hydro-project/anna/client/cpp/cli.cpp:88:14: error: no member named 'cout' in namespace 'std'
        std::cout << "{" << vc_pair.first << " : "
        ~~~~~^
/Users/chris.heller/hydro-project/anna/client/cpp/cli.cpp:94:10: error: no member named 'cout' in namespace 'std'
    std::cout << *(mkcl.reveal().value.reveal().begin()) << std::endl;
    ~~~~~^
/Users/chris.heller/hydro-project/anna/client/cpp/cli.cpp:109:12: error: no member named 'cout' in namespace 'std'
      std::cout << "Invalid response: ID did not match request ID!"
      ~~~~~^
/Users/chris.heller/hydro-project/anna/client/cpp/cli.cpp:113:12: error: no member named 'cout' in namespace 'std'
      std::cout << "Success!" << std::endl;
      ~~~~~^
/Users/chris.heller/hydro-project/anna/client/cpp/cli.cpp:115:12: error: no member named 'cout' in namespace 'std'
      std::cout << "Failure!" << std::endl;
      ~~~~~^
/Users/chris.heller/hydro-project/anna/client/cpp/cli.cpp:145:12: error: no member named 'cout' in namespace 'std'
      std::cout << "Invalid response: ID did not match request ID!"
      ~~~~~^
/Users/chris.heller/hydro-project/anna/client/cpp/cli.cpp:149:12: error: no member named 'cout' in namespace 'std'
      std::cout << "Success!" << std::endl;
      ~~~~~^
/Users/chris.heller/hydro-project/anna/client/cpp/cli.cpp:151:12: error: no member named 'cout' in namespace 'std'
      std::cout << "Failure!" << std::endl;
      ~~~~~^
/Users/chris.heller/hydro-project/anna/client/cpp/cli.cpp:170:12: error: no member named 'cout' in namespace 'std'
      std::cout << "Invalid response: ID did not match request ID!"
      ~~~~~^
/Users/chris.heller/hydro-project/anna/client/cpp/cli.cpp:174:12: error: no member named 'cout' in namespace 'std'
      std::cout << "Success!" << std::endl;
      ~~~~~^
/Users/chris.heller/hydro-project/anna/client/cpp/cli.cpp:176:12: error: no member named 'cout' in namespace 'std'
      std::cout << "Failure!" << std::endl;
      ~~~~~^
fatal error: too many errors emitted, stopping now [-ferror-limit=]
20 errors generated.
make[2]: *** [client/cpp/CMakeFiles/anna-cli.dir/cli.cpp.o] Error 1
make[1]: *** [client/cpp/CMakeFiles/anna-cli.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
[ 57%] Linking CXX static library libanna-hash-ring.a
[ 57%] Built target anna-hash-ring
make: *** [all] Error 2

This is with the following git checkout:

anna % git rev-parse --short HEAD
53956c9

Happy to provide any other info that might help resolve this. Possibly I need to just run build.sh with a non-default set of options, but unsure how to decide what options to use.

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.