Giter Site home page Giter Site logo

logcabin / logcabin Goto Github PK

View Code? Open in Web Editor NEW
1.8K 1.8K 294.0 3.63 MB

LogCabin is a distributed storage system built on Raft that provides a small amount of highly replicated, consistent storage. It is a reliable place for other distributed systems to store their core metadata and is helpful in solving cluster management issues.

License: Other

C++ 91.58% Python 4.80% C 0.07% Protocol Buffer 2.97% Shell 0.57%
logcabin raft

logcabin's Introduction

logo

Overview

LogCabin is a distributed system that provides a small amount of highly replicated, consistent storage. It is a reliable place for other distributed systems to store their core metadata and is helpful in solving cluster management issues. LogCabin uses the Raft consensus algorithm internally and is actually the very first implementation of Raft. It's released under the ISC license (equivalent to BSD).

External resources:

Information about releases is in RELEASES.md.

This README will walk you through how to compile and run LogCabin.

Questions

The best place to ask questions about the LogCabin implementation is on the logcabin-dev mailing list. You might also try #logcabin on the freenode IRC network, although there aren't always people around. Use GitHub Issues to report problems or suggest features.

For questions and discussion about the Raft consensus algorithm, which LogCabin implements, use the raft-dev mailing list.

Building

Build Status

Pre-requisites:

  • Linux x86-64 (v2.6.32 and up should work)
  • git (v1.7 and up should work)
  • scons (v2.0 and v2.3 are known to work)
  • g++ (v4.4 through v4.9 and v5.1 are known to work) or clang (v3.4 through v3.7 are known to work with libstdc++ 4.9, and libc++ is also supported; see CLANG.md for more info)
  • protobuf (v2.6.x suggested, v2.5.x should work, v2.3.x is not supported)
  • crypto++ (v5.6.1 is known to work)
  • doxygen (optional; v1.8.8 is known to work)

In short, RHEL/CentOS 6 should work, as well as anything more recent.

Get the source code:

git clone git://github.com/logcabin/logcabin.git
cd logcabin
git submodule update --init

Build the client library, server binary, and unit tests:

scons

For custom build environments, you can place your configuration variables in Local.sc. For example, that file might look like:

BUILDTYPE='DEBUG'
CXXFLAGS=['-Wno-error']

To see which configuration parameters are available, run:

scons --help

Running basic tests

It's a good idea to run the included unit tests before proceeding:

build/test/test

You can also run some system-wide tests. This first command runs the smoke tests against an in-memory database that is embedded into the LogCabin client (no servers are involved):

build/Examples/SmokeTest --mock && echo 'Smoke test completed successfully'

To run the same smoke test against a real LogCabin cluster will take some more setup.

Running a real cluster

This section shows you how to run the HelloWorld example program against a three-server LogCabin cluster. We'll run all the servers on localhost for now:

  • Server 1 will listen on 127.0.0.1:5254
  • Server 2 will listen on 127.0.0.1:5255
  • Server 3 will listen on 127.0.0.1:5256

Port 5254 is LogCabin's default port and is reserved by IANA for LogCabin. The other two belong to others and are hopefully not in use on your network.

We'll first need to create three configuration files. You can base yours off of sample.conf, or the following will work for now:

File logcabin-1.conf:

serverId = 1
listenAddresses = 127.0.0.1:5254

File logcabin-2.conf:

serverId = 2
listenAddresses = 127.0.0.1:5255

File logcabin-3.conf:

serverId = 3
listenAddresses = 127.0.0.1:5256

Now you're almost ready to start the servers. First, initialize one of the server's logs with a cluster membership configuration that contains just itself:

build/LogCabin --config logcabin-1.conf --bootstrap

The server with ID 1 will now have a valid cluster membership configuration in its log. At this point, there's only 1 server in the cluster, so only 1 vote is needed: it'll be able to elect itself leader and commit new entries. We can now start this server (leave it running):

build/LogCabin --config logcabin-1.conf

We don't want to stop here, though, because the cluster isn't fault-tolerant with just one server! We're going to start two more servers and then add them both to the first server's cluster.

Let's start up the second server in another terminal (leave it running):

build/LogCabin --config logcabin-2.conf

Note how this server is just idling, awaiting a cluster membership configuration. It's still not part of the cluster.

Start the third server also (LogCabin checks to make sure all the servers in your new configuration are available before committing to switch to it, just to keep you from doing anything stupid):

build/LogCabin --config logcabin-3.conf

Now use the reconfiguration command to add the second and third servers to the cluster:

ALLSERVERS=127.0.0.1:5254,127.0.0.1:5255,127.0.0.1:5256
build/Examples/Reconfigure --cluster=$ALLSERVERS set 127.0.0.1:5254 127.0.0.1:5255 127.0.0.1:5256

This Reconfigure command is a special LogCabin client. It first queries each of the servers given in its positional command line arguments (space-delimited after the command "set") to retrieve their server IDs and listening addresses (as set in their configuration files). Then, it connects to the cluster given by the --cluster option (comma-delimited) and asks the leader to set the cluster membership to consist of those servers. Note that the existing cluster members should be included in the positional arguments if they are to remain in the cluster; otherwise, they will be evicted from the cluster.

If this succeeded, you should see that the first server has added the others to the cluster, and the second and third servers are now participating. It should have output something like:

Current configuration:
Configuration 1:
- 1: 127.0.0.1:5254

Attempting to change cluster membership to the following:
1: 127.0.0.1:5254 (given as 127.0.0.1:5254)
2: 127.0.0.1:5255 (given as 127.0.0.1:5255)
3: 127.0.0.1:5256 (given as 127.0.0.1:5256)

Membership change result: OK

Current configuration:
Configuration 4:
- 1: 127.0.0.1:5254
- 2: 127.0.0.1:5255
- 3: 127.0.0.1:5256

Note: If you're sharing a single magnetic disk under heavy load for all the servers, the cluster may have trouble maintaining a leader. See issue 57 for more details on symptoms and a workaround.

Finally, you can run a LogCabin client to exercise the cluster:

build/Examples/HelloWorld --cluster=$ALLSERVERS

That program doesn't do anything very interesting. Another tool called TreeOps exposes LogCabin's data structure on the command line:

echo -n hello | build/Examples/TreeOps --cluster=$ALLSERVERS write /world
build/Examples/TreeOps --cluster=$ALLSERVERS dump

See the --help for a complete listing of the available commands.

You should be able to kill one server at a time and maintain availability, or kill more and restart them and maintain safety (with an availability hiccup).

If you find it annoying to pass --cluster=$ALLSERVERS everywhere, you can also use a DNS name to return all the IP addresses. However, you will need distinct IP addresses for each server, not just distinct ports.

If you have your own application, you can link it against build/liblogcabin.a. You'll also need to link against the following libraries:

  • pthread
  • protobuf
  • cryptopp

Running cluster-wide tests

The procedure described above for running a cluster is fairly tedious when you just want to run some tests and tear everything down again. Thus, scripts/smoketest.py automates it. Create a file called scripts/localconfig.py to override the smokehosts and hosts variables found in scripts/config.py:

smokehosts = hosts = [
  ('192.168.2.1', '192.168.2.1', 1),
  ('192.168.2.2', '192.168.2.2', 2),
  ('192.168.2.3', '192.168.2.3', 3),
]

The scripts use this file to when launching servers using SSH. Each tuple in the (smoke)hosts list represents one server, containing:

  1. the address to use for SSH,
  2. the address to use for LogCabin TCP connections, and
  3. a unique ID.

Each of these servers should be accessible over SSH without a password and should have the LogCabin directory available in the same filesystem location. The script currently assumes this directory to be on a shared filesystem, such as an NFS mount or localhost.

You may optionally create a smoketest.conf file, which can define various options that apply to all the servers. The servers' listen addresses will be merged with your smoketest.conf automatically.

Now you're ready to run:

scripts/smoketest.py && echo 'Smoke test completed successfully'

This script can also be hijacked/included to run other test programs.

Documentation

To build the documentation from the source code, run:

scons docs

The resulting HTML files will be placed in docs/doxygen.

You can also find this documentation at https://logcabin.github.io.

Installation

To install a bunch of things on your filesystem, run:

scons install

Along with the binaries, this installs a RHEL 6-compatible init script.

If you don't want these files to pollute your filesystem, you can install the files to any given directory as follows (replace pathtoinstallprefix in both places with wherever you'd like the files to go):

scons --install-sandbox=pathtoinstallprefix pathtoinstallprefix

Finally, you can build a binary RPM as follows:

scons rpm

This creates a file called build/logcabin-0.0.1-0.1.alpha.0.x86_64.rpm or similar that you can then install using RPM, with the same effect as scons install.

Contributing

Please use GitHub to report issues and send pull requests.

All commits should pass the pre-commit hooks. Enable them to run before each commit:

ln -s ../../hooks/pre-commit .git/hooks/pre-commit

logcabin's People

Contributors

brchrisman avatar cseawood-scale avatar dankenigsberg avatar hankhsieh avatar mashtizadeh avatar nhardt avatar ongardie avatar waldyrious avatar zenbowman 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  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

logcabin's Issues

leader process hangs after Conrol-C

Following the readme instructions on how to start a cluster,
once I start server 1 it becomes the leader of the cluster of 1 node. This is normal.
But then, if I Control-C it, it hangs and never exits. Here is command line output:

~/work/logcabin$ build/LogCabin --id 1
1391629842.006602 Server/Main.cc:107 in main() NOTICE[22473:evloop]: Using config file logcabin.conf
1391629842.007182 Server/Globals.cc:110 in init() NOTICE[22473:evloop]: Serving on 192.168.2.1:61023 (resolved to 192.168.2.1:61023)
1391629842.007282 Server/RaftConsensus.cc:755 in init() NOTICE[1:evloop]: My server ID is 1
1391629842.023155 Server/RaftConsensus.cc:482 in setConfiguration() NOTICE[1:evloop]: Activating configuration 1:
prev_configuration {
servers {
server_id: 1
address: "192.168.2.1:61023"
}
}

1391629842.023549 Server/RaftConsensus.cc:788 in init() NOTICE[1:evloop]: The log contains indexes 1 through 1 (inclusive)
1391629842.024409 Server/RaftConsensus.cc:1838 in readSnapshot() NOTICE[1:evloop]: Snapshot file not found in smoketeststorage/server1
1391629842.317494 Server/RaftConsensus.cc:2011 in startNewElection() NOTICE[1:startNewElection]: Running for election in term 2
1391629842.321681 Server/RaftConsensus.cc:1772 in becomeLeader() NOTICE[1:startNewElection]: Now leader for term 2
^C1391630282.852763 Server/Globals.cc:41 in handleSignalEvent() NOTICE[1:evloop]: Interrupt: shutting down
1391630282.852917 Server/StateMachine.cc:63 in ~StateMachine() NOTICE[1:evloop]: Shutting down

missing include

logcabin/build/Storage/FilesystemUtilTest.cc:180: undefined reference to 'LogCabin::Storage::FilesystemUtil::System::writev'

missing #include <sys/uio.h>

need cleaner

There is currently no way for LogCabin to reclaim space.

valgrind error in RPCClientServerTest.timeout test

[ RUN ] RPCClientServerTest.timeout
==24085== Thread 3:
==24085== Invalid read of size 1
==24085== at 0x49461D: LogCabin::RPC::MessageSocket::RawSocket::handleFileEvent(unsigned int) (MessageSocket.cc:76)
==24085== by 0x4A4470: LogCabin::Event::(anonymous namespace)::onFileEventFired(int, short, void_) (File.cc:71)
==24085== by 0x5C48473: event_base_loop (event.c:1346)
==24085== by 0x4A57A5: LogCabin::Event::Loop::runForever() (Loop.cc:167)
==24085== by 0x46B89A: std::Mem_fn<void (LogCabin::Event::Loop::)()>::operator()(LogCabin::Event::Loop_) const (functional:552)
==24085== by 0x46B80F: _ZNSt5_BindIFSt7_Mem_fnIMN8LogCabin5Event4LoopEFvvEEPS3_EE6__callIIEILi0EEEENSt9result_ofIFS6_NSB_IFSt3_MuIS7_Lb0ELb0EES7_St5tupleIIDpT_EEEE4typeEEE4typeERKSH_St12_Index_tupleIIXspT0_EEE (functional:1137)
==24085== by 0x46B7AC: std::result_of<std::Mem_fn<void (LogCabin::Event::Loop::)()> ()(std::result_of<std::Mu<LogCabin::Event::Loop*, false, false> ()(LogCabin::Event::Loop, std::tuple<>)>::type)>::type std::Bind<std::Mem_fn<void (LogCabin::Event::Loop::)()> ()(LogCabin::Event::Loop)>::operator()<>() (functional:1191)
==24085== by 0x46B6ED: std::thread::_Impl<std::Bind<std::Mem_fn<void (LogCabin::Event::Loop::)()> ()(LogCabin::Event::Loop)> >::M_run() (thread:114)
==24085== by 0x612051F: ??? (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.17)
==24085== by 0x4E35B4F: start_thread (pthread_create.c:304)
==24085== by 0x68E19DC: clone (clone.S:112)
==24085== Address 0x8fee830 is 224 bytes inside a block of size 264 free'd
==24085== at 0x4C279DC: operator delete(void
) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==24085== by 0x4990BB: LogCabin::RPC::OpaqueServer::ServerMessageSocket::ServerMessageSocket() (OpaqueServer.h:112)
==24085== by 0x499BFD: std::_Sp_counted_ptr<LogCabin::RPC::OpaqueServer::ServerMessageSocket*, (__gnu_cxx::_Lock_policy)2>::_M_dispose() (shared_ptr.h:78)
==24085== by 0x447EFB: std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release() (boost_sp_counted_base.h:140)
==24085== by 0x447924: std::__shared_count<(__gnu_cxx::_Lock_policy)2>::
__shared_count() (shared_ptr.h:325)
==24085== by 0x4984FB: std::__shared_ptr<LogCabin::RPC::OpaqueServer::ServerMessageSocket, (__gnu_cxx::_Lock_policy)2>::~__shared_ptr() (shared_ptr.h:549)
==24085== by 0x498533: std::shared_ptrLogCabin::RPC::OpaqueServer::ServerMessageSocket::~shared_ptr() (shared_ptr.h:1236)
==24085== by 0x498EBF: gnu_cxx::new_allocatorstd::shared_ptr<LogCabin::RPC::OpaqueServer::ServerMessageSocket >::destroy(std::shared_ptrLogCabin::RPC::OpaqueServer::ServerMessageSocket) (new_allocator.h:115)
==24085== by 0x49882A: std::vectorstd::shared_ptr<LogCabin::RPC::OpaqueServer::ServerMessageSocket, std::allocatorstd::shared_ptr<LogCabin::RPC::OpaqueServer::ServerMessageSocket > >::pop_back() (stl_vector.h:767)
==24085== by 0x497F46: LogCabin::RPC::OpaqueServer::ServerMessageSocket::close() (OpaqueServer.cc:103)
==24085== by 0x497E68: LogCabin::RPC::OpaqueServer::ServerMessageSocket::onDisconnect() (OpaqueServer.cc:92)
==24085== by 0x495075: LogCabin::RPC::MessageSocket::read(void
, unsigned long) (MessageSocket.cc:214)
==24085==

assertion failure in raft

Ankita got this on commit a735725
1357601345.897557 Server/RaftConsensus.cc:1383 in startNewElection() NOTICE[1:startNewElection]: Running for election in term 2
1357601345.899986 Server/RaftConsensus.cc:1202 in becomeLeader() NOTICE[1:startNewElection]: Now leader for term 2
LogCabin: build/Server/RaftConsensus.cc:671: void LogCabin::Server::RaftConsensusInternal::RaftConsensus::handleAppendEntry(const LogCabin::Protocol::Raft::AppendEntry::Request&, LogCabin::Protocol::Raft::AppendEntry::Response&): Assertion `state == State::FOLLOWER' failed.
Aborted (core dumped)

Improve PANIC messages

It should be clear from a PANIC message that the message contains the reason the process is exiting. Something like "Exiting..." at the end of the message would do.

connecting client to bogus name fails poorly

ran client with bogus DNS name

ongaro@rcmaster:~/logcabin:master$ bt build/Examples/WriteLatency 
warning: GDB: Failed to set controlling terminal: Operation not permitted
[Thread debugging using libthread_db enabled]
1352419362.220719 RPC/MessageSocket.cc:219 in read() ERROR[24466:thread 1]: Error while reading from socket: Transport endpoint is not connected. Exiting...

Program received signal SIGABRT, Aborted.
[Switching to Thread 0x7ffff6dc5700 (LWP 24469)]
0x00000034a6a32885 in raise () from /lib64/libc.so.6
#0  0x00000034a6a32885 in raise () from /lib64/libc.so.6
#1  0x00000034a6a34065 in abort () from /lib64/libc.so.6
#2  0x000000000044d5c7 in LogCabin::RPC::MessageSocket::read (this=0x68bb80, buf=0x68bb98, maxBytes=12) at build/RPC/MessageSocket.cc:219
#3  0x000000000044d282 in LogCabin::RPC::MessageSocket::readable (this=0x68bb80) at build/RPC/MessageSocket.cc:158
#4  0x000000000044cded in LogCabin::RPC::MessageSocket::RawSocket::handleFileEvent (this=0x68bc38, events=1) at build/RPC/MessageSocket.cc:72
#5  0x00000000004503ed in LogCabin::Event::(anonymous namespace)::onFileEventFired (fd=11, libEventEvents=2, file=0x68bc38) at build/Event/File.cc:71
#6  0x00007ffff73f141c in event_process_active_single_queue (base=0x68cfa0, flags=0) at event.c:1340
#7  event_process_active (base=0x68cfa0, flags=0) at event.c:1407
#8  event_base_loop (base=0x68cfa0, flags=0) at event.c:1604
#9  0x0000000000450f3e in LogCabin::Event::Loop::runForever (this=0x691758) at build/Event/Loop.cc:167
#10 0x0000000000415503 in std::_Mem_fn<void (LogCabin::Event::Loop::*)()>::operator() (this=0x68c0c8, __object=0x691758)
    at /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/tr1_impl/functional:552
#11 0x0000000000415478 in std::_Bind<std::_Mem_fn<void (LogCabin::Event::Loop::*)()>(LogCabin::Event::Loop*)>::__call<, 0>(const std::tuple<> &, std::_Index_tuple<0>) (this=0x68c0c8, __args=Traceback (most recent call last):
  File "/usr/lib64/../share/gdb/python/libstdcxx/v6/printers.py", line 262, in children
    return self._iterator (self.val)
  File "/usr/lib64/../share/gdb/python/libstdcxx/v6/printers.py", line 220, in __init__
    raise "Top of tuple tree does not consist of a single node."
TypeError: exceptions must be old-style classes or derived from BaseException, not str
std::tuple containing) at /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/tr1_impl/functional:1137
#12 0x0000000000415415 in std::_Bind<std::_Mem_fn<void (LogCabin::Event::Loop::*)()>(LogCabin::Event::Loop*)>::operator()<>(void) (this=0x68c0c8)
    at /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/tr1_impl/functional:1191
#13 0x0000000000415356 in _Impl<std::_Bind<std::_Mem_fn<void (LogCabin::Event::Loop::*)()>(LogCabin::Event::Loop*)> >::_M_run(void) (this=0x68c0b0)
    at /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/thread:114
#14 0x0000003d3bab6490 in ?? () from /usr/lib64/libstdc++.so.6
#15 0x00000034a72077f1 in start_thread () from /lib64/libpthread.so.0
#16 0x00000034a6ae592d in clone () from /lib64/libc.so.6

port to clang

It'd be nice to be able to develop on clang, but this is going to take some code changes to get working first.

100% cpu in event loop

I'm seeing 100% CPU usage in every of the logcabin applications right after the start even though they are idle. For instance, after starting
build/LogCabin --id 1
as described in Readme I see application evloop in top taking 100%CPU

This same thing happens when I run Reconfigure.
I'm using Linux ubuntu 3.11.0-15-generic with official libevent version (2.0 - stable)

ClientLeaderRPCTest very slow

$ GTEST_FILTER=ClientLeaderRPCTest.* VERBOSE=1 build/test/test
Note: Google Test filter = ClientLeaderRPCTest.*
[==========] Running 5 tests from 1 test case.
[----------] Global test environment set-up.
[----------] 5 tests from ClientLeaderRPCTest
[ RUN ] ClientLeaderRPCTest.callOK
[ OK ] ClientLeaderRPCTest.callOK (1005 ms)
[ RUN ] ClientLeaderRPCTest.callRPCFailed
[ OK ] ClientLeaderRPCTest.callRPCFailed (2004 ms)
[ RUN ] ClientLeaderRPCTest.handleServiceSpecificErrorNotLeader
[ OK ] ClientLeaderRPCTest.handleServiceSpecificErrorNotLeader (4008 ms)
[ RUN ] ClientLeaderRPCTest.connectRandom
[ OK ] ClientLeaderRPCTest.connectRandom (1008 ms)
[ RUN ] ClientLeaderRPCTest.connectHost
[ OK ] ClientLeaderRPCTest.connectHost (2002 ms)
[----------] 5 tests from ClientLeaderRPCTest (10027 ms total)

[----------] Global test environment tear-down
[==========] 5 tests from 1 test case ran. (10027 ms total)
[ PASSED ] 5 tests.

pre-commit smoke test

Need a smoke test to run during the pre-commit hooks to make sure a client and server can accomplish basic tasks end-to-end.

rewrite storage module

This needs to have modular, tested storage backends. It needs to support synchronous disk writes. Appends need to be atomic, such that if the server is interrupted in the middle, things are ok. Needs checksums too.

server IDs bogus

The code in Globals.cc that sets the server ID looks like it's left over from before reconfiguration was implemented. I think the result is that server IDs currently have to be assigned manually on the command line for reconfiguration to work.

Build Tests not passing

Build tests not passing on Ubuntu 12 Linux kernel 3.2.0. Possibly related to IpV6. It is unable to create dirs for some reasons, even though I'm running as root.

[==========] Running 356 tests from 51 test cases.
1366229313.818521 RPC/Address.cc:188 in refresh() WARNING[16042:thread 1]: Unknown error from getaddrinfo("1:2:3:4:5:6:7:8", "80"): Address family for hostname not supported
1366229313.818615 RPC/Address.cc:188 in refresh() WARNING[16042:thread 1]: Unknown error from getaddrinfo("1:2:3:4:5:6:7:8", "80"): Address family for hostname not supported
1366229313.818680 RPC/Address.cc:188 in refresh() WARNING[16042:thread 1]: Unknown error from getaddrinfo("::1", "80"): Address family for hostname not supported
1366229313.878760 RPC/Address.cc:188 in refresh() WARNING[16042:thread 1]: Unknown error from getaddrinfo("1:2:3:4:5:6:7:8", "80"): Address family for hostname not supported
[----------] 7 tests from RPCAddressTest
[ RUN ] RPCAddressTest.refresh
build/RPC/AddressTest.cc:124: Failure
Value of: Address("[1:2:3:4:5:6:7:8]", 80).getResolvedString()
Actual: "Unspecified"
Expected: "[1:2:3:4:5:6:7:8]:80"
1366229313.879011 RPC/Address.cc:188 in refresh() WARNING[16042:thread 1]: Unknown error from getaddrinfo("::1", "80"): Address family for hostname not supported
build/RPC/AddressTest.cc:126: Failure
Value of: Address("[::1]", 80).getResolvedString()
Actual: "Unspecified"
Expected: "[::1]:80"
localhost
1366229313.879194 RPC/Address.cc:188 in refresh() WARNING[16042:thread 1]: Unknown error from getaddrinfo("::", "80"): Address family for hostname not supported
build/RPC/AddressTest.cc:128: Failure
Value of: Address("[::]", 80).getResolvedString()
Actual: "Unspecified"
Expected: "[::]:80"
any address
[----------] 2 tests from ServerClientServiceTest
[ RUN ] ServerClientServiceTest.handleRPCBadOpcode
build/Server/ClientServiceTest.cc:93: Failure
Death test: {init(); call(unassigned, request, response);}
Result: died but not with expected error.
Expected: request.*invalid
Actual msg: 1366229316.445944 Storage/FilesystemUtil.cc:169 in openDir() ERROR[1:thread 1]: Could not create directory log/1: No such file or directory Exiting...

1366229316.521629 Storage/FilesystemUtil.cc:169 in openDir() ERROR[1:thread 1]: Could not create directory log/1: No such file or directory Exiting...
Aborted (core dumped)

Upon creating the log directory and rerunning the tests, still ending up with an error:

[==========] Running 356 tests from 51 test cases.
1366229343.581558 RPC/Address.cc:188 in refresh() WARNING[16215:thread 1]: Unknown error from getaddrinfo("1:2:3:4:5:6:7:8", "80"): Address family for hostname not supported
1366229343.581642 RPC/Address.cc:188 in refresh() WARNING[16215:thread 1]: Unknown error from getaddrinfo("1:2:3:4:5:6:7:8", "80"): Address family for hostname not supported
1366229343.581720 RPC/Address.cc:188 in refresh() WARNING[16215:thread 1]: Unknown error from getaddrinfo("::1", "80"): Address family for hostname not supported
1366229343.583676 RPC/Address.cc:188 in refresh() WARNING[16215:thread 1]: Unknown error from getaddrinfo("1:2:3:4:5:6:7:8", "80"): Address family for hostname not supported
[----------] 7 tests from RPCAddressTest
[ RUN ] RPCAddressTest.refresh
build/RPC/AddressTest.cc:124: Failure
Value of: Address("[1:2:3:4:5:6:7:8]", 80).getResolvedString()
Actual: "Unspecified"
Expected: "[1:2:3:4:5:6:7:8]:80"
1366229343.583881 RPC/Address.cc:188 in refresh() WARNING[16215:thread 1]: Unknown error from getaddrinfo("::1", "80"): Address family for hostname not supported
build/RPC/AddressTest.cc:126: Failure
Value of: Address("[::1]", 80).getResolvedString()
Actual: "Unspecified"
Expected: "[::1]:80"
localhost
1366229343.584043 RPC/Address.cc:188 in refresh() WARNING[16215:thread 1]: Unknown error from getaddrinfo("::", "80"): Address family for hostname not supported
build/RPC/AddressTest.cc:128: Failure
Value of: Address("[::]", 80).getResolvedString()
Actual: "Unspecified"
Expected: "[::]:80"
any address
1366229346.910602 Server/SimpleFileLog.cc:164 in SimpleFileLog() WARNING[2:thread 1]: Error reading metadata1: Could not open log/2/metadata1: No such file or directory
1366229346.910656 Server/SimpleFileLog.cc:165 in SimpleFileLog() WARNING[2:thread 1]: Error reading metadata2: Could not open log/2/metadata2: No such file or directory
[==========] 356 tests from 51 test cases ran. (3926 ms total)
[ PASSED ] 355 tests.
[ FAILED ] 1 test, listed below:
[ FAILED ] RPCAddressTest.refresh

1 FAILED TEST

python sha module deprecated

rcmaster outputs:
scripts/initlog.py:26: DeprecationWarning: the sha module is deprecated; use the hashlib module instead
import sha

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.