Code Monkey home page Code Monkey logo

charybdefs's Introduction

Scylla

Slack Twitter

What is Scylla?

Scylla is the real-time big data database that is API-compatible with Apache Cassandra and Amazon DynamoDB. Scylla embraces a shared-nothing approach that increases throughput and storage capacity to realize order-of-magnitude performance improvements and reduce hardware costs.

For more information, please see the ScyllaDB web site.

Build Prerequisites

Scylla is fairly fussy about its build environment, requiring very recent versions of the C++20 compiler and of many libraries to build. The document HACKING.md includes detailed information on building and developing Scylla, but to get Scylla building quickly on (almost) any build machine, Scylla offers a frozen toolchain, This is a pre-configured Docker image which includes recent versions of all the required compilers, libraries and build tools. Using the frozen toolchain allows you to avoid changing anything in your build machine to meet Scylla's requirements - you just need to meet the frozen toolchain's prerequisites (mostly, Docker or Podman being available).

Building Scylla

Building Scylla with the frozen toolchain dbuild is as easy as:

$ git submodule update --init --force --recursive
$ ./tools/toolchain/dbuild ./configure.py
$ ./tools/toolchain/dbuild ninja build/release/scylla

For further information, please see:

Running Scylla

To start Scylla server, run:

$ ./tools/toolchain/dbuild ./build/release/scylla --workdir tmp --smp 1 --developer-mode 1

This will start a Scylla node with one CPU core allocated to it and data files stored in the tmp directory. The --developer-mode is needed to disable the various checks Scylla performs at startup to ensure the machine is configured for maximum performance (not relevant on development workstations). Please note that you need to run Scylla with dbuild if you built it with the frozen toolchain.

For more run options, run:

$ ./tools/toolchain/dbuild ./build/release/scylla --help

Testing

See test.py manual.

Scylla APIs and compatibility

By default, Scylla is compatible with Apache Cassandra and its APIs - CQL and Thrift. There is also support for the API of Amazon DynamoDB™, which needs to be enabled and configured in order to be used. For more information on how to enable the DynamoDB™ API in Scylla, and the current compatibility of this feature as well as Scylla-specific extensions, see Alternator and Getting started with Alternator.

Documentation

Documentation can be found here. Seastar documentation can be found here. User documentation can be found here.

Training

Training material and online courses can be found at Scylla University. The courses are free, self-paced and include hands-on examples. They cover a variety of topics including Scylla data modeling, administration, architecture, basic NoSQL concepts, using drivers for application development, Scylla setup, failover, compactions, multi-datacenters and how Scylla integrates with third-party applications.

Contributing to Scylla

If you want to report a bug or submit a pull request or a patch, please read the contribution guidelines.

If you are a developer working on Scylla, please read the developer guidelines.

Contact

  • The community forum and Slack channel are for users to discuss configuration, management, and operations of the ScyllaDB open source.
  • The developers mailing list is for developers and people interested in following the development of ScyllaDB to discuss technical topics.

charybdefs's People

Contributors

benoit-canet avatar bentsi avatar bhalevy avatar dmarti avatar itsbilal avatar ligurio avatar lmr avatar raphaelsc avatar syuu1228 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

charybdefs's Issues

charybdefs make fails

Please help me in resolving this issue, I tried on atleast 10 machines(all centos7) but make always fails

[ 0%] Built target thrift
Scanning dependencies of target charybde_lib
[ 16%] Building CXX object CMakeFiles/charybde_lib.dir/charybde_ops.cc.o
[ 33%] Building CXX object CMakeFiles/charybde_lib.dir/server.cc.o
Linking CXX static library libcharybde_lib.a
[ 33%] Built target charybde_lib
Scanning dependencies of target server
[ 50%] Building CXX object CMakeFiles/server.dir/gen-cpp/server.cpp.o
Linking CXX static library libserver.a
[ 50%] Built target server
Scanning dependencies of target charybdefs
[ 66%] Building C object CMakeFiles/charybdefs.dir/charybdefs.c.o
Linking CXX executable charybdefs
libcharybde_lib.a(server.cc.o): In function server_thread()': server.cc:(.text+0x1ee2): undefined reference to apache::thrift::server::TSimpleServer::TSimpleServer(std::shared_ptrapache::thrift::TProcessor const&, std::shared_ptrapache::thrift::transport::TServerTransport const&, std::shared_ptrapache::thrift::transport::TTransportFactory const&, std::shared_ptrapache::thrift::protocol::TProtocolFactory const&)'
server.cc:(.text+0x1f0d): undefined reference to apache::thrift::server::TServerFramework::serve()' libcharybde_lib.a(server.cc.o): In function apache::thrift::protocol::TProtocolFactory::TProtocolFactory()':
server.cc:(.text._ZN6apache6thrift8protocol16TProtocolFactoryC2Ev[_ZN6apache6thrift8protocol16TProtocolFactoryC5Ev]+0xf): undefined reference to vtable for apache::thrift::protocol::TProtocolFactory' libcharybde_lib.a(server.cc.o): In function apache::thrift::protocol::TBinaryProtocolFactoryT<apache::thrift::transport::TTransport, apache::thrift::protocol::TNetworkBigEndian>::~TBinaryProtocolFactoryT()':
server.cc:(.text._ZN6apache6thrift8protocol23TBinaryProtocolFactoryTINS0_9transport10TTransportENS1_17TNetworkBigEndianEED2Ev[_ZN6apache6thrift8protocol23TBinaryProtocolFactoryTINS0_9transport10TTransportENS1_17TNetworkBigEndianEED5Ev]+0x1f): undefined reference to apache::thrift::protocol::TProtocolFactory::~TProtocolFactory()' libcharybde_lib.a(server.cc.o):(.rodata._ZTIN6apache6thrift8protocol23TBinaryProtocolFactoryTINS0_9transport10TTransportENS1_17TNetworkBigEndianEEE[_ZTIN6apache6thrift8protocol23TBinaryProtocolFactoryTINS0_9transport10TTransportENS1_17TNetworkBigEndianEEE]+0x10): undefined reference to typeinfo for apache::thrift::protocol::TProtocolFactory'
libserver.a(server.cpp.o): In function serverConcurrentClient::send_get_methods()': server.cpp:(.text+0x756f): undefined reference to apache::thrift::async::TConcurrentClientSyncInfo::generateSeqId()'
server.cpp:(.text+0x7594): undefined reference to apache::thrift::async::TConcurrentSendSentry::TConcurrentSendSentry(apache::thrift::async::TConcurrentClientSyncInfo*)' server.cpp:(.text+0x76a2): undefined reference to apache::thrift::async::TConcurrentSendSentry::commit()'
server.cpp:(.text+0x76bd): undefined reference to apache::thrift::async::TConcurrentSendSentry::~TConcurrentSendSentry()' server.cpp:(.text+0x7720): undefined reference to apache::thrift::async::TConcurrentSendSentry::~TConcurrentSendSentry()'
libserver.a(server.cpp.o): In function serverConcurrentClient::recv_get_methods(std::vector<std::string, std::allocator<std::string> >&, int)': server.cpp:(.text+0x7795): undefined reference to apache::thrift::async::TConcurrentRecvSentry::TConcurrentRecvSentry(apache::thrift::async::TConcurrentClientSyncInfo*, int)'
server.cpp:(.text+0x77bc): undefined reference to apache::thrift::async::TConcurrentClientSyncInfo::getPending(std::string&, apache::thrift::protocol::TMessageType&, int&)' server.cpp:(.text+0x788c): undefined reference to apache::thrift::async::TConcurrentRecvSentry::commit()'
server.cpp:(.text+0x7a92): undefined reference to apache::thrift::async::TConcurrentRecvSentry::commit()' server.cpp:(.text+0x7b1e): undefined reference to apache::thrift::async::TConcurrentRecvSentry::~TConcurrentRecvSentry()'
server.cpp:(.text+0x7b5a): undefined reference to apache::thrift::async::TConcurrentClientSyncInfo::updatePending(std::string const&, apache::thrift::protocol::TMessageType, int)' server.cpp:(.text+0x7b7d): undefined reference to apache::thrift::async::TConcurrentClientSyncInfo::waitForWork(int)'
server.cpp:(.text+0x7c50): undefined reference to apache::thrift::async::TConcurrentRecvSentry::~TConcurrentRecvSentry()' libserver.a(server.cpp.o): In function serverConcurrentClient::send_clear_all_faults()':
server.cpp:(.text+0x7cd5): undefined reference to apache::thrift::async::TConcurrentClientSyncInfo::generateSeqId()' server.cpp:(.text+0x7cfa): undefined reference to apache::thrift::async::TConcurrentSendSentry::TConcurrentSendSentry(apache::thrift::async::TConcurrentClientSyncInfo*)'
server.cpp:(.text+0x7e08): undefined reference to apache::thrift::async::TConcurrentSendSentry::commit()' server.cpp:(.text+0x7e23): undefined reference to apache::thrift::async::TConcurrentSendSentry::~TConcurrentSendSentry()'
server.cpp:(.text+0x7e86): undefined reference to apache::thrift::async::TConcurrentSendSentry::~TConcurrentSendSentry()' libserver.a(server.cpp.o): In function serverConcurrentClient::recv_clear_all_faults(int)':
server.cpp:(.text+0x7ef1): undefined reference to apache::thrift::async::TConcurrentRecvSentry::TConcurrentRecvSentry(apache::thrift::async::TConcurrentClientSyncInfo*, int)' server.cpp:(.text+0x7f18): undefined reference to apache::thrift::async::TConcurrentClientSyncInfo::getPending(std::string&, apache::thrift::protocol::TMessageType&, int&)'
server.cpp:(.text+0x7fe5): undefined reference to apache::thrift::async::TConcurrentRecvSentry::commit()' server.cpp:(.text+0x81c8): undefined reference to apache::thrift::async::TConcurrentRecvSentry::commit()'
server.cpp:(.text+0x81e4): undefined reference to apache::thrift::async::TConcurrentRecvSentry::~TConcurrentRecvSentry()' server.cpp:(.text+0x8220): undefined reference to apache::thrift::async::TConcurrentClientSyncInfo::updatePending(std::string const&, apache::thrift::protocol::TMessageType, int)'
server.cpp:(.text+0x8243): undefined reference to apache::thrift::async::TConcurrentClientSyncInfo::waitForWork(int)' server.cpp:(.text+0x82e3): undefined reference to apache::thrift::async::TConcurrentRecvSentry::~TConcurrentRecvSentry()'
libserver.a(server.cpp.o): In function serverConcurrentClient::send_clear_fault(std::string const&)': server.cpp:(.text+0x8377): undefined reference to apache::thrift::async::TConcurrentClientSyncInfo::generateSeqId()'
server.cpp:(.text+0x839c): undefined reference to apache::thrift::async::TConcurrentSendSentry::TConcurrentSendSentry(apache::thrift::async::TConcurrentClientSyncInfo*)' server.cpp:(.text+0x84b6): undefined reference to apache::thrift::async::TConcurrentSendSentry::commit()'
server.cpp:(.text+0x84d1): undefined reference to apache::thrift::async::TConcurrentSendSentry::~TConcurrentSendSentry()' server.cpp:(.text+0x8534): undefined reference to apache::thrift::async::TConcurrentSendSentry::~TConcurrentSendSentry()'
libserver.a(server.cpp.o): In function serverConcurrentClient::recv_clear_fault(int)': server.cpp:(.text+0x859f): undefined reference to apache::thrift::async::TConcurrentRecvSentry::TConcurrentRecvSentry(apache::thrift::async::TConcurrentClientSyncInfo*, int)'
server.cpp:(.text+0x85c6): undefined reference to apache::thrift::async::TConcurrentClientSyncInfo::getPending(std::string&, apache::thrift::protocol::TMessageType&, int&)' server.cpp:(.text+0x8693): undefined reference to apache::thrift::async::TConcurrentRecvSentry::commit()'
server.cpp:(.text+0x8876): undefined reference to apache::thrift::async::TConcurrentRecvSentry::commit()' server.cpp:(.text+0x8892): undefined reference to apache::thrift::async::TConcurrentRecvSentry::~TConcurrentRecvSentry()'
server.cpp:(.text+0x88ce): undefined reference to apache::thrift::async::TConcurrentClientSyncInfo::updatePending(std::string const&, apache::thrift::protocol::TMessageType, int)' server.cpp:(.text+0x88f1): undefined reference to apache::thrift::async::TConcurrentClientSyncInfo::waitForWork(int)'
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
libserver.a(server.cpp.o): In function serverConcurrentClient::send_set_fault(std::vector<std::string, std::allocator<std::string> > const&, bool, int, int, std::string const&, bool, int, bool)': server.cpp:(.text+0x8aa7): undefined reference to apache::thrift::async::TConcurrentClientSyncInfo::generateSeqId()'
server.cpp:(.text+0x8acf): undefined reference to apache::thrift::async::TConcurrentSendSentry::TConcurrentSendSentry(apache::thrift::async::TConcurrentClientSyncInfo*)' server.cpp:(.text+0x8c5a): undefined reference to apache::thrift::async::TConcurrentSendSentry::commit()'
server.cpp:(.text+0x8c78): undefined reference to apache::thrift::async::TConcurrentSendSentry::~TConcurrentSendSentry()' server.cpp:(.text+0x8cde): undefined reference to apache::thrift::async::TConcurrentSendSentry::~TConcurrentSendSentry()'
libserver.a(server.cpp.o): In function serverConcurrentClient::recv_set_fault(int)': server.cpp:(.text+0x8d4d): undefined reference to apache::thrift::async::TConcurrentRecvSentry::TConcurrentRecvSentry(apache::thrift::async::TConcurrentClientSyncInfo*, int)'
server.cpp:(.text+0x8d74): undefined reference to apache::thrift::async::TConcurrentClientSyncInfo::getPending(std::string&, apache::thrift::protocol::TMessageType&, int&)' server.cpp:(.text+0x8e41): undefined reference to apache::thrift::async::TConcurrentRecvSentry::commit()'
server.cpp:(.text+0x9024): undefined reference to apache::thrift::async::TConcurrentRecvSentry::commit()' server.cpp:(.text+0x9040): undefined reference to apache::thrift::async::TConcurrentRecvSentry::~TConcurrentRecvSentry()'
server.cpp:(.text+0x907c): undefined reference to apache::thrift::async::TConcurrentClientSyncInfo::updatePending(std::string const&, apache::thrift::protocol::TMessageType, int)' server.cpp:(.text+0x909f): undefined reference to apache::thrift::async::TConcurrentClientSyncInfo::waitForWork(int)'
server.cpp:(.text+0x913f): undefined reference to apache::thrift::async::TConcurrentRecvSentry::~TConcurrentRecvSentry()' libserver.a(server.cpp.o): In function serverConcurrentClient::send_set_all_fault(bool, int, int, std::string const&, bool, int, bool)':
server.cpp:(.text+0x9237): undefined reference to apache::thrift::async::TConcurrentClientSyncInfo::generateSeqId()' server.cpp:(.text+0x925f): undefined reference to apache::thrift::async::TConcurrentSendSentry::TConcurrentSendSentry(apache::thrift::async::TConcurrentClientSyncInfo*)'
server.cpp:(.text+0x93d9): undefined reference to apache::thrift::async::TConcurrentSendSentry::commit()' server.cpp:(.text+0x93f7): undefined reference to apache::thrift::async::TConcurrentSendSentry::~TConcurrentSendSentry()'
server.cpp:(.text+0x945d): undefined reference to apache::thrift::async::TConcurrentSendSentry::~TConcurrentSendSentry()' libserver.a(server.cpp.o): In function serverConcurrentClient::recv_set_all_fault(int)':
server.cpp:(.text+0x94cb): undefined reference to apache::thrift::async::TConcurrentRecvSentry::TConcurrentRecvSentry(apache::thrift::async::TConcurrentClientSyncInfo*, int)' server.cpp:(.text+0x94f2): undefined reference to apache::thrift::async::TConcurrentClientSyncInfo::getPending(std::string&, apache::thrift::protocol::TMessageType&, int&)'
server.cpp:(.text+0x95bf): undefined reference to apache::thrift::async::TConcurrentRecvSentry::commit()' server.cpp:(.text+0x97a2): undefined reference to apache::thrift::async::TConcurrentRecvSentry::commit()'
server.cpp:(.text+0x97be): undefined reference to apache::thrift::async::TConcurrentRecvSentry::~TConcurrentRecvSentry()' server.cpp:(.text+0x97fa): undefined reference to apache::thrift::async::TConcurrentClientSyncInfo::updatePending(std::string const&, apache::thrift::protocol::TMessageType, int)'
server.cpp:(.text+0x981d): undefined reference to apache::thrift::async::TConcurrentClientSyncInfo::waitForWork(int)' server.cpp:(.text+0x98bd): undefined reference to apache::thrift::async::TConcurrentRecvSentry::~TConcurrentRecvSentry()'
collect2: error: ld returned 1 exit status
make[2]: *** [charybdefs] Error 1
make[1]: *** [CMakeFiles/charybdefs.dir/all] Error 2
make: *** [all] Error 2
[root@s82605-cnt7 charybdefs]#

error on another machine:

Scanning dependencies of target charybde_lib
[ 16%] Building CXX object CMakeFiles/charybde_lib.dir/charybde_ops.cc.o
[ 33%] Building CXX object CMakeFiles/charybde_lib.dir/server.cc.o
In file included from /root/an/charybdefs/server.cc:35:0:
/root/an/charybdefs/gen-cpp/server.h:684:53: error: invalid covariant return type for 'virtual std::shared_ptrapache::thrift::TProcessor serverProcessorFactory::getProcessor(const apache::thrift::TConnectionInfo&)'
::std::shared_ptr< ::apache::thrift::TProcessor > getProcessor(const ::apache::thrift::TConnectionInfo& connInfo) override;
^
In file included from /usr/include/thrift/server/TServer.h:23:0,
from /usr/include/thrift/server/TSimpleServer.h:23,
from /root/an/charybdefs/server.cc:31:
/usr/include/thrift/TProcessor.h:214:41: error: overriding 'virtual boost::shared_ptrapache::thrift::TProcessor apache::thrift::TProcessorFactory::getProcessor(const apache::thrift::TConnectionInfo&)'
virtual boost::shared_ptr getProcessor(
^
/root/an/charybdefs/server.cc: In function 'void server_thread()':
/root/an/charybdefs/server.cc:265:91: error: no matching function for call to 'apache::thrift::server::TSimpleServer::TSimpleServer(std::shared_ptrapache::thrift::TProcessor&, std::shared_ptrapache::thrift::transport::TServerTransport&, std::shared_ptrapache::thrift::transport::TTransportFactory&, std::shared_ptrapache::thrift::protocol::TProtocolFactory&)'
TSimpleServer server(processor, serverTransport, transportFactory, protocolFactory);
^
/root/an/charybdefs/server.cc:265:91: note: candidates are:
In file included from /root/an/charybdefs/server.cc:31:0:
/usr/include/thrift/server/TSimpleServer.h:73:3: note: template apache::thrift::server::TSimpleServer::TSimpleServer(const boost::shared_ptr&, const boost::shared_ptrapache::thrift::transport::TServerTransport&, const boost::shared_ptrapache::thrift::transport::TTransportFactory&, const boost::shared_ptrapache::thrift::transport::TTransportFactory&, const boost::shared_ptrapache::thrift::protocol::TProtocolFactory&, const boost::shared_ptrapache::thrift::protocol::TProtocolFactory&, typename boost::enable_if<typename boost::is_convertible<Processor*, apache::thrift::TProcessor*>::type, void*>::type)
TSimpleServer(
^
/usr/include/thrift/server/TSimpleServer.h:73:3: note: template argument deduction/substitution failed:
/root/an/charybdefs/server.cc:265:91: note: 'std::shared_ptrapache::thrift::TProcessor' is not derived from 'const boost::shared_ptr'
TSimpleServer server(processor, serverTransport, transportFactory, protocolFactory);
^
In file included from /root/an/charybdefs/server.cc:31:0:
/usr/include/thrift/server/TSimpleServer.h:59:3: note: template apache::thrift::server::TSimpleServer::TSimpleServer(const boost::shared_ptr&, const boost::shared_ptrapache::thrift::transport::TServerTransport&, const boost::shared_ptrapache::thrift::transport::TTransportFactory&, const boost::shared_ptrapache::thrift::transport::TTransportFactory&, const boost::shared_ptrapache::thrift::protocol::TProtocolFactory&, const boost::shared_ptrapache::thrift::protocol::TProtocolFactory&, typename boost::enable_if<typename boost::is_convertible<ProcessorFactory*, apache::thrift::TProcessorFactory*>::type, void*>::type)
TSimpleServer(
^
/usr/include/thrift/server/TSimpleServer.h:59:3: note: template argument deduction/substitution failed:
/root/an/charybdefs/server.cc:265:91: note: 'std::shared_ptrapache::thrift::TProcessor' is not derived from 'const boost::shared_ptr'
TSimpleServer server(processor, serverTransport, transportFactory, protocolFactory);
^
In file included from /root/an/charybdefs/server.cc:31:0:
/usr/include/thrift/server/TSimpleServer.h:49:3: note: template apache::thrift::server::TSimpleServer::TSimpleServer(const boost::shared_ptr&, const boost::shared_ptrapache::thrift::transport::TServerTransport&, const boost::shared_ptrapache::thrift::transport::TTransportFactory&, const boost::shared_ptrapache::thrift::protocol::TProtocolFactory&, typename boost::enable_if<typename boost::is_convertible<Processor*, apache::thrift::TProcessor*>::type, void*>::type)
TSimpleServer(
^
/usr/include/thrift/server/TSimpleServer.h:49:3: note: template argument deduction/substitution failed:
/root/an/charybdefs/server.cc:265:91: note: 'std::shared_ptrapache::thrift::TProcessor' is not derived from 'const boost::shared_ptr'
TSimpleServer server(processor, serverTransport, transportFactory, protocolFactory);
^
In file included from /root/an/charybdefs/server.cc:31:0:
/usr/include/thrift/server/TSimpleServer.h:38:3: note: template apache::thrift::server::TSimpleServer::TSimpleServer(const boost::shared_ptr&, const boost::shared_ptrapache::thrift::transport::TServerTransport&, const boost::shared_ptrapache::thrift::transport::TTransportFactory&, const boost::shared_ptrapache::thrift::protocol::TProtocolFactory&, typename boost::enable_if<typename boost::is_convertible<ProcessorFactory*, apache::thrift::TProcessorFactory*>::type, void*>::type)
TSimpleServer(
^
/usr/include/thrift/server/TSimpleServer.h:38:3: note: template argument deduction/substitution failed:
/root/an/charybdefs/server.cc:265:91: note: 'std::shared_ptrapache::thrift::TProcessor' is not derived from 'const boost::shared_ptr'
TSimpleServer server(processor, serverTransport, transportFactory, protocolFactory);
^
In file included from /root/an/charybdefs/server.cc:31:0:
/usr/include/thrift/server/TSimpleServer.h:35:7: note: apache::thrift::server::TSimpleServer::TSimpleServer(const apache::thrift::server::TSimpleServer&)
class TSimpleServer : public TServer {
^
/usr/include/thrift/server/TSimpleServer.h:35:7: note: candidate expects 1 argument, 4 provided
make[2]: *** [CMakeFiles/charybde_lib.dir/server.cc.o] Error 1
make[1]: *** [CMakeFiles/charybde_lib.dir/all] Error 2
make: *** [all] Error 2

[Question]: How to utilize charybdefs in the specified scenario here?

Dear Team,
My intention here is to validate application behavior for the specified disk latency. The Ubuntu system on which the application will be running has /var mounted as "/dev/mapper/vg-var". The application writes on to /var (underlying storage array). The application launches multiple processes which runs with different users.
I'm planning to use Charybdefs to test the disk latency and plan is to mount charybdefs on to mount point /var/lib/scylla with data directory being /var/lib. With this, I assume , disk latency fault (disk latency) injected using Charybdefs whill have any impact for all the write operation happening on to /var/lib directory. Hence the application will even have an impact.
Question-1:
Is my understanding is correct? If not, can you please suggest a way to test scenario specified above using Charybdefs?

NOTE:
Question-2
I have used the following command to mount Charybdefs on my Ubuntu machine. But, the mounted fs is visible using the command "df" only for the "root" user. While the "df" command using the user other than root (example: "ubuntu") isn't visible.
sudo ./charybdefs /var/lib/kscylla/ -omodules=subdir,subdir=/home/ubuntu/skp/kscylla

Waiting for a quick response.

Thanks,
Dinesh

cmake CMakeLists.txt fails

output for thrift -r --gen cpp --gen py server.thrift
[WARNING:/space/charybdefs/server.thrift:16] No field key specified for method, resulting protocol may have conflicts or not be backwards compatible!

[WARNING:/space/charybdefs/server.thrift:19] No field key specified for methods, resulting protocol may have conflicts or not be backwards compatible!

[WARNING:/space/charybdefs/server.thrift:20] No field key specified for random, resulting protocol may have conflicts or not be backwards compatible!

[WARNING:/space/charybdefs/server.thrift:21] No field key specified for err_no, resulting protocol may have conflicts or not be backwards compatible!

[WARNING:/space/charybdefs/server.thrift:22] No field key specified for probability, resulting protocol may have conflicts or not be backwards compatible!

[WARNING:/space/charybdefs/server.thrift:23] No field key specified for regexp, resulting protocol may have conflicts or not be backwards compatible!

[WARNING:/space/charybdefs/server.thrift:24] No field key specified for kill_caller, resulting protocol may have conflicts or not be backwards compatible!

[WARNING:/space/charybdefs/server.thrift:25] No field key specified for delay_us, resulting protocol may have conflicts or not be backwards compatible!

[WARNING:/space/charybdefs/server.thrift:26] No field key specified for auto_delay, resulting protocol may have conflicts or not be backwards compatible!

[WARNING:/space/charybdefs/server.thrift:29] No field key specified for random, resulting protocol may have conflicts or not be backwards compatible!

[WARNING:/space/charybdefs/server.thrift:30] No field key specified for err_no, resulting protocol may have conflicts or not be backwards compatible!

[WARNING:/space/charybdefs/server.thrift:31] No field key specified for probability, resulting protocol may have conflicts or not be backwards compatible!

[WARNING:/space/charybdefs/server.thrift:32] No field key specified for regexp, resulting protocol may have conflicts or not be backwards compatible!

[WARNING:/space/charybdefs/server.thrift:33] No field key specified for kill_caller, resulting protocol may have conflicts or not be backwards compatible!

[WARNING:/space/charybdefs/server.thrift:34] No field key specified for delay_us, resulting protocol may have conflicts or not be backwards compatible!

[WARNING:/space/charybdefs/server.thrift:35] No field key specified for auto_delay, resulting protocol may have conflicts or not be backwards compatible!

[WARNING:/space/charybdefs/server.thrift:16] No field key specified for method, resulting protocol may have conflicts or not be backwards compatible!

[WARNING:/space/charybdefs/server.thrift:19] No field key specified for methods, resulting protocol may have conflicts or not be backwards compatible!

[WARNING:/space/charybdefs/server.thrift:20] No field key specified for random, resulting protocol may have conflicts or not be backwards compatible!

[WARNING:/space/charybdefs/server.thrift:21] No field key specified for err_no, resulting protocol may have conflicts or not be backwards compatible!

[WARNING:/space/charybdefs/server.thrift:22] No field key specified for probability, resulting protocol may have conflicts or not be backwards compatible!

[WARNING:/space/charybdefs/server.thrift:23] No field key specified for regexp, resulting protocol may have conflicts or not be backwards compatible!

[WARNING:/space/charybdefs/server.thrift:24] No field key specified for kill_caller, resulting protocol may have conflicts or not be backwards compatible!

[WARNING:/space/charybdefs/server.thrift:25] No field key specified for delay_us, resulting protocol may have conflicts or not be backwards compatible!

[WARNING:/space/charybdefs/server.thrift:26] No field key specified for auto_delay, resulting protocol may have conflicts or not be backwards compatible!

[WARNING:/space/charybdefs/server.thrift:29] No field key specified for random, resulting protocol may have conflicts or not be backwards compatible!

[WARNING:/space/charybdefs/server.thrift:30] No field key specified for err_no, resulting protocol may have conflicts or not be backwards compatible!

[WARNING:/space/charybdefs/server.thrift:31] No field key specified for probability, resulting protocol may have conflicts or not be backwards compatible!

[WARNING:/space/charybdefs/server.thrift:32] No field key specified for regexp, resulting protocol may have conflicts or not be backwards compatible!

[WARNING:/space/charybdefs/server.thrift:33] No field key specified for kill_caller, resulting protocol may have conflicts or not be backwards compatible!

[WARNING:/space/charybdefs/server.thrift:34] No field key specified for delay_us, resulting protocol may have conflicts or not be backwards compatible!

[WARNING:/space/charybdefs/server.thrift:35] No field key specified for auto_delay, resulting protocol may have conflicts or not be backwards compatible!

Output for cmake CmakeLists.txt
-- The C compiler identification is GNU 4.8.5
-- The CXX compiler identification is GNU 4.8.5
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Found PkgConfig: /usr/bin/pkg-config (found version "0.27.1")
-- Performing Test FUSE_CFLAGS_CHECK
-- Performing Test FUSE_CFLAGS_CHECK - Success
-- Found FUSE: /usr/lib64/libfuse.so (found suitable version "2.9", minimum required is "2.9")
-- THRIFT_HOME:
-- Thrift version: Thrift version 0.9.1
-- Configuring done
CMake Error at CMakeLists.txt:19 (add_library):
Cannot find source file:

gen-cpp/server_constants.cpp

Tried extensions .c .C .c++ .cc .cpp .cxx .m .M .mm .h .hh .h++ .hm .hpp
.hxx .in .txx

clean up filesystem code

The fs code grew super boring and ugly like if it was hacked up in a hurry (which is the case).

TODO: clean this up.

Compilation on UBUNTU 18.04.1 LTS fails

Using latest from repository and a compiled and installed thrift-0.11.0.
I got following compile errors:

make
Scanning dependencies of target server_lib
[ 8%] Building CXX object CMakeFiles/server_lib.dir/charybde_ops.cc.o
[ 16%] Building CXX object CMakeFiles/server_lib.dir/server.cc.o
/home/wohauser/tools/charybdefs/server.cc: In function ‘void server_thread()’:
/home/wohauser/tools/charybdefs/server.cc:259:43: error: variable ‘boost::shared_ptr<server_handler> handler’ has initializer but incomplete type
shared_ptr<server_handler> handler(new server_handler());
^
/home/wohauser/tools/charybdefs/server.cc:260:41: error: variable ‘boost::shared_ptrapache::thrift::TProcessor processor’ has initializer but incomplete type
shared_ptr processor(new serverProcessor(handler));
^
/home/wohauser/tools/charybdefs/server.cc:261:53: error: variable ‘boost::shared_ptrapache::thrift::transport::TServerTransport serverTransport’ has initializer but incomplete type
shared_ptr serverTransport(new TServerSocket(port));
^
/home/wohauser/tools/charybdefs/server.cc:262:55: error: variable ‘boost::shared_ptrapache::thrift::transport::TTransportFactory transportFactory’ has initializer but incomplete type
shared_ptr transportFactory(new TBufferedTransportFactory());
^
/home/wohauser/tools/charybdefs/server.cc:263:53: error: variable ‘boost::shared_ptrapache::thrift::protocol::TProtocolFactory protocolFactory’ has initializer but incomplete type
shared_ptr protocolFactory(new TBinaryProtocolFactory());
^
CMakeFiles/server_lib.dir/build.make:86: recipe for target 'CMakeFiles/server_lib.dir/server.cc.o' failed
make[2]: *** [CMakeFiles/server_lib.dir/server.cc.o] Error 1
CMakeFiles/Makefile2:99: recipe for target 'CMakeFiles/server_lib.dir/all' failed
make[1]: *** [CMakeFiles/server_lib.dir/all] Error 2
Makefile:83: recipe for target 'all' failed
make: *** [all] Error 2

Regards
Wolfgang Hauser

Incorrect symlink handling by CharybdeFS

There is and issue with symlink handling by charybdefs. Namely, you can't create symlink inside charybdefs-mounted folder. To reproduce it is enough to mount folder with charybdefs and try to make a symlink.
Like this:

(inside charydbe-mounted folder)
>touch test
>ln -s test test-link
ln: failed to create symbolic link 'test-link': Input/output error

Interestingly, test-link is created, and it is really symlink to test (it reflects content of test, it reflects changes in test content), but it is shown as regular file:

>ls -alsh
total 8.0K
4.0K drwxrwxr-x 2 ubuntu ubuntu 4.0K May  7 17:03 .
4.0K drwxrwxr-x 4 ubuntu ubuntu 4.0K May  7 16:36 ..
   0 -rw-rw-r-- 1 ubuntu ubuntu    0 May  7 17:03 test
   0 -rw-rw-r-- 1 ubuntu ubuntu    0 May  7 17:03 test-link

Also, in data folder (on the top of which charydbe operates) test-link is shown as symlink to test:

>ls -alsh
total 8.0K
4.0K drwxrwxr-x 2 ubuntu ubuntu 4.0K May  7 17:03 .
4.0K drwxrwxr-x 4 ubuntu ubuntu 4.0K May  7 16:36 ..
   0 -rw-rw-r-- 1 ubuntu ubuntu    0 May  7 17:03 test
   0 lrwxrwxrwx 1 ubuntu ubuntu    4 May  7 17:03 test-link -> test

I've tried to run ln command with strace:

>rm test-link
>strace ln -s test test-link
...
symlink("test", "test-link")            = -1 EIO (Input/output error)
...

So it is indeed actual symlink syscall which returns error code. After I've spent some time looking for errors in charybde_symlink method, but with no success. After another round of digging around, I've come to something which looks like a solution: the root cause seems to be not in charybde_symlink method, but in charybde_getattr:

int charybde_getattr(const char *path, struct stat *buf)
{
    static volatile int in_flight = 0;
    in_flight++;
    int ret = error_inject(in_flight, path, "getattr");
    if (ret) {
        in_flight--;
        return ret;
    }

    ret = stat(path, buf);   // <<<< here it should be lstat, which provides correct handling of symlinks
    if (ret < 0) {
        in_flight--;
        return -errno;
    }
    
    in_flight--;
    return 0;    
}

I'm not expert in FUSE and linux IO in general, changing stat -> lstat in this method seems to fix the symlink handling:

>ln -s test test-link
>ls
4.0K drwxrwxr-x 2 ubuntu ubuntu 4.0K May  7 17:16 .
4.0K drwxrwxr-x 4 ubuntu ubuntu 4.0K May  7 16:36 ..
   0 -rw-rw-r-- 1 ubuntu ubuntu    0 May  7 17:03 test
   0 lrwxrwxrwx 1 ubuntu ubuntu    4 May  7 17:16 test-link -> test

How to pass "nonempty" mount option to charybdefs?

Hi,
I want to mount the charybdefs on to an existing location. I see the following warning message.

#./charybdefs /var/data-dir -omodules=subdir,subdir=/var/data-dir
starting fuse filesystem
fuse: mountpoint is not empty
fuse: if you are sure this is safe, use the 'nonempty' mount option

I want to use "nonempty" option as documented in the FUSE man page:
https://manpages.ubuntu.com/manpages/xenial/en/man8/mount.fuse.8.html

The "charybdefs" being used for mount seems to be an executable. Please let me know on how to pass "nonempty" as a parameter OR let me know the code to modify to accept the nonempty as a parameter and regenerate the "charybdefs" executable.

Thanks,
Dinesh

Some non fatal errors prevent ls and cd

It seems errors like No space left on device should still provide the ability to list the directory and change into the directory. However, this is not the case in charybdefs.

[java] "bad file descriptor" is thrown for simple RandomAccessFile.write/seek(0)/read sequence over CharybdeFS partition

I'm using CharybdeFS to test java applications, and one simple test shows strange behavior.

Steps:

  • mount, say, mounted folder with Charybde to, say, data folder. (Both folders must be empty)
  • on the top of mounted partition run following java code:
import java.io.*;

public class BadFileDescriptor {
	public static void main( String[] args ) throws IOException {
		final File charybdeDirectory = new File( "mounted" );            
		final File testFile = new File( charybdeDirectory, "test" ); // i.e. 'mounted/test'
		final long writtenValue = 0x1234_5678_9ABC_DEF1L;     //any non trivial value
		try (final RandomAccessFile raf = new RandomAccessFile( testFile, "rw" )) {
			raf.writeLong( writtenValue );
			raf.seek( 0 );
			final long readValue = raf.readLong();                          //<< here is IOException is thrown
			if( readValue != writtenValue ) {
				throw new AssertionError( "Value read (" + readValue + ") is not same as just written (" + writtenValue + ")" );
			}
		}
	}
}
  • I'd expect (readValue == writtenValue), and indeed, I've got them equal while running test over "normal" FS folder
  • But running over CharybdeFS partition I've got IOException("bad file descriptor") inside .readLong() method call
$JAVA_HOME/bin/java -cp target/classes/ BadFileDescriptor mounted
Exception in thread "main" java.io.IOException: Bad file descriptor
	at java.io.RandomAccessFile.read0(Native Method)
	at java.io.RandomAccessFile.read(RandomAccessFile.java:337)
	at java.io.RandomAccessFile.readInt(RandomAccessFile.java:798)
	at java.io.RandomAccessFile.readLong(RandomAccessFile.java:836)

BTW, java code essentially does just this:

  • write 8 bytes to mounted/test
  • rewinds file pointer to 0
  • tries to read back 8 bytes just written.
  • ...and fails with this strange "bad file descriptor" error

So far I was able to reproduce it with java only. (Unfortunately I use python only occasionally, so don't sure how to translate java.io.RandomAccessFile)

Few notes on reproduction:

  • test file must be new one. If there is mounted/test already exist in charybde folder -- no exception is thrown.
  • java version is 1.8.*
  • I was able to reproduce it on 2 systems with different Linux versions

I've tried to run the app under strace, and here is relevant sequence of syscalls:

2201  open("mounted/test", O_RDWR|O_CREAT, 0666) = 14
2201  fstat(14, {st_mode=S_IFREG|0664, st_size=0, ...}) = 0
2201  write(14, "\22", 1)               = 1
2201  write(14, "4", 1)                 = 1
2201  write(14, "V", 1)                 = 1
2201  write(14, "x", 1)                 = 1
2201  write(14, "\232", 1)              = 1
2201  write(14, "\274", 1)              = 1
2201  write(14, "\336", 1)              = 1
2201  write(14, "\361", 1)              = 1
2201  lseek(14, 0, SEEK_SET)            = 0
2201  read(14, 0x7fd7492f5797, 1)       = -1 EBADF (Bad file descriptor)

I omit everything before/after, but nothing in between: here are all syscalls between file open and error.

Is disk latency really getting injected?

Hello Team,
I have mounted charybdefs on my ubuntu machine. I have written a small python code to simulate slow write (disk latency). The python code will connect to thrift module as documented in the charybdefs blogpost.
I have run the python script with the following parameters

python inject_fault.py -o disklatency -l 2000000 -p 9090

Here, I was expecting 20seconds of delay for the write operation. But, the below dd command has finished in 6.6 seconds. Before injecting the above fault (20 seconds delay) the same dd command had completed with 165MB/s (6.3s). I don't know if the charybdefs is really injecting fault here. Can you please confirm if any thing wrong here?

$ sudo dd if=/dev/zero of=/var/data-dir/file_1gb_after_20s_delay_2 bs=1G count=1
1+0 records in
1+0 records out
1073741824 bytes (1.1 GB) copied, 6.60714 s, 163 MB/s

Python client code:

import sys

sys.path.append('gen-py')
import errno

from server import server
from server.ttypes import *

from thrift import Thrift
from thrift.transport import TSocket
from thrift.transport import TTransport
from thrift.protocol import TBinaryProtocol
from argparse import ArgumentParser

if __name__ == "__main__":
    parser = ArgumentParser()
    parser.add_argument("-o", "--operation", dest="operation", help="the type of the operation that has to be executed",
                    choices=["disklatency", "ioError", "randomError", "NOSPCError", "QUOTAExceed", "remediate"])
    parser.add_argument("-l", "--latency", dest="latency", help="Disk Latency in milliseconds")
    parser.add_argument("-p", "--port", dest="socketPort", help="socket Port for client connection")
try:
    args = parser.parse_args()
except:
    parser.error("Error parsing arguments..")
    sys.exit()

try:

    transport = TSocket.TSocket('127.0.0.1', int(args.socketPort))
    transport = TTransport.TBufferedTransport(transport)
    protocol = TBinaryProtocol.TBinaryProtocol(transport)
    client = server.Client(protocol)
    transport.open()


    if args.operation == "ioError":
         print('Executing the injection of ioError fault')
         client.set_all_fault(False, errno.EIO, 0, "", False, 0, False)
    if args.operation == "disklatency":
         print('Executing the injection of DiskLatency fault')
         client.set_all_fault(False, 0, 0, "", False, int(args.latency), True)
except Thrift.TException as tx:
    print('%s' % tx.message)

Thrift server port is not opening

Thrift server port is not opening(9090) when the sub folder mounted. Provided command in README.md is used to mount the directory.
Library is checked out from master branch with latest commit until now.

Next incorrect symlink handling by CharybdeFS

It seems like there is another bug with symlinks in charybdefs. To reproduce it you need to create >1 symlinks, and linked files should have different filename lengths. E.g.

(mount charybdefs folder)
>touch test test-1111 test-2222-3333 
>ln -s test test.link
>ln -s test-1111 test-1111.link
>ln -s test-2222-3333 test-2222-3333.link
>ls -alsh
   0 -rw-rw-r-- 1 ubuntu ubuntu    0 May 10 17:50 test
   0 -rw-rw-r-- 1 ubuntu ubuntu    0 May 10 17:50 test-1111
   0 lrwxrwxrwx 1 ubuntu ubuntu    9 May 10 17:54 test-1111.link -> test-1111-3333 <<<< there is no such target!
   0 -rw-rw-r-- 1 ubuntu ubuntu    0 May 10 17:50 test-2222-3333
   0 lrwxrwxrwx 1 ubuntu ubuntu   14 May 10 17:53 test-2222-3333.link -> test-2222-3333
   0 lrwxrwxrwx 1 ubuntu ubuntu    4 May 10 17:54 test.link -> test-2222-3333

Even more interesting: subsequent ls will give different results: sometimes one link will target to non-existent filename, sometimes another, sometimes everything will looks fine.

It seems like issue is in charybde_readlink:

int charybde_readlink(const char *path, char *buf, size_t bufsiz)
{
    static volatile int in_flight = 0;
    in_flight++;
    int ret = error_inject(in_flight, path, "readlink");
    if (ret) {
        in_flight--;
        return ret;
    }

    ret = readlink(path, buf, bufsiz);
    if (ret < 0) {
        in_flight--;
        return -errno;
    }

    in_flight--;
    return 0;
}

There is mismatch between requirements: FUSE .readlink requires *buf to be returned as 0-terminated string, but readlink syscall doesn't terminate its 2-nd argument with 0, instead readlink returns how many chars were copied in buf. This is not manifested if there is only 1 symlinks -- probably, because FUSE zeroes buf before calling .readlink. But if there are >1 symlinks, and buf is reused -- you'll get the behaviour observed.

I've tried to add buf[ret]=0:

int charybde_readlink(const char *path, char *buf, size_t bufsiz)
{
    static volatile int in_flight = 0;
    in_flight++;
    int ret = error_inject(in_flight, path, "readlink");
    if (ret) {
        in_flight--;
        return ret;
    }

    ret = readlink(path, buf, bufsiz);
    if (ret < 0) {
        in_flight--;
        return -errno;
    }
    buf[ret] = 0;   //<<<<<<

    in_flight--;
    return 0;
}

And it fix issue for me.

But I'm not sure about corner case: what if ret==bufsize? I.e. what if there is no space for additional 0 in buf?

Build unsuccessful fro centOS 7 and ubuntu both

I am not able to build at any platform. with or without docker.

I don't have scylladb on my machine.

I have tried following instruction for both platforms.

steps used to reproduce on centos 7:

git clone https://github.com/scylladb/charybdefs

No error.

then

sudo yum install gcc-c++ cmake fuse fuse-devel thrift python-thrift thrift-devel

No error.

then i execute this:

thrift -r --gen cpp --gen py server.thrift

and it gives me following warning for every line number from 16 to 35

[WARNING:/home/nsalwan/charybdefs/server.thrift:16] No field key specified for method, resulting protocol may have conflicts or not be backwards compatible!

After that I execute

cmake CMakeLists.txt

and then I execute :

make

which again gives me this warning:
[WARNING:/home/nsalwan/charybdefs/server.thrift:16] No field key specified for method, resulting protocol may have conflicts or not be backwards compatible!

and also this:

[ 12%] Building CXX object CMakeFiles/charybde_lib.dir/charybde_ops.cc.o
[ 25%] Building CXX object CMakeFiles/charybde_lib.dir/server.cc.o
/home/nsalwan/charybdefs/server.cc: In function ‘void server_thread()’:
/home/nsalwan/charybdefs/server.cc:260:69: error: no matching function for call to ‘serverProcessor::serverProcessor(std::shared_ptr<server_handler>&)’
260 | shared_ptr processor(new serverProcessor(handler));
| ^
In file included from /home/nsalwan/charybdefs/server.cc:35:
/home/nsalwan/charybdefs/gen-cpp/server.h:674:3: note: candidate: ‘serverProcessor::serverProcessor(boost::shared_ptr)’
674 | serverProcessor(boost::shared_ptr iface) :
| ^~~~~~~~~~~~~~~
/home/nsalwan/charybdefs/gen-cpp/server.h:674:47: note: no known conversion for argument 1 from ‘std::shared_ptr<server_handler>’ to ‘boost::shared_ptr’
674 | serverProcessor(boost::shared_ptr iface) :
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~
/home/nsalwan/charybdefs/gen-cpp/server.h:660:7: note: candidate: ‘serverProcessor::serverProcessor(const serverProcessor&)’
660 | class serverProcessor : public ::apache::thrift::TDispatchProcessor {
| ^~~~~~~~~~~~~~~
/home/nsalwan/charybdefs/gen-cpp/server.h:660:7: note: no known conversion for argument 1 from ‘std::shared_ptr<server_handler>’ to ‘const serverProcessor&’
/home/nsalwan/charybdefs/server.cc:265:91: error: no matching function for call to ‘apache::thrift::server::TSimpleServer::TSimpleServer(std::shared_ptrapache::thrift::TProcessor&, std::shared_ptrapache::thrift::transport::TServerTransport&, std::shared_ptrapache::thrift::transport::TTransportFactory&, std::shared_ptrapache::thrift::protocol::TProtocolFactory&)’
265 | TSimpleServer server(processor, serverTransport, transportFactory, protocolFactory);
| ^
In file included from /home/nsalwan/charybdefs/server.cc:31:
/usr/include/thrift/server/TSimpleServer.h:73:3: note: candidate: ‘template apache::thrift::server::TSimpleServer::TSimpleServer(const boost::shared_ptr&, const boost::shared_ptrapache::thrift::transport::TServerTransport&, const boost::shared_ptrapache::thrift::transport::TTransportFactory&, const boost::shared_ptrapache::thrift::transport::TTransportFactory&, const boost::shared_ptrapache::thrift::protocol::TProtocolFactory&, const boost::shared_ptrapache::thrift::protocol::TProtocolFactory&, typename boost::enable_if<typename boost::is_convertible<Processor*, apache::thrift::TProcessor*>::type, void*>::type)’
73 | TSimpleServer(
| ^~~~~~~~~~~~~
/usr/include/thrift/server/TSimpleServer.h:73:3: note: template argument deduction/substitution failed:
/home/nsalwan/charybdefs/server.cc:265:91: note: ‘std::shared_ptrapache::thrift::TProcessor’ is not derived from ‘const boost::shared_ptr’
265 | TSimpleServer server(processor, serverTransport, transportFactory, protocolFactory);
| ^
In file included from /home/nsalwan/charybdefs/server.cc:31:
/usr/include/thrift/server/TSimpleServer.h:59:3: note: candidate: ‘template apache::thrift::server::TSimpleServer::TSimpleServer(const boost::shared_ptr&, const boost::shared_ptrapache::thrift::transport::TServerTransport&, const boost::shared_ptrapache::thrift::transport::TTransportFactory&, const boost::shared_ptrapache::thrift::transport::TTransportFactory&, const boost::shared_ptrapache::thrift::protocol::TProtocolFactory&, const boost::shared_ptrapache::thrift::protocol::TProtocolFactory&, typename boost::enable_if<typename boost::is_convertible<ProcessorFactory*, apache::thrift::TProcessorFactory*>::type, void*>::type)’
59 | TSimpleServer(
| ^~~~~~~~~~~~~
/usr/include/thrift/server/TSimpleServer.h:59:3: note: template argument deduction/substitution failed:
/home/nsalwan/charybdefs/server.cc:265:91: note: ‘std::shared_ptrapache::thrift::TProcessor’ is not derived from ‘const boost::shared_ptr’
265 | TSimpleServer server(processor, serverTransport, transportFactory, protocolFactory);
| ^
In file included from /home/nsalwan//charybdefs/server.cc:31:
/usr/include/thrift/server/TSimpleServer.h:49:3: note: candidate: ‘template apache::thrift::server::TSimpleServer::TSimpleServer(const boost::shared_ptr&, const boost::shared_ptrapache::thrift::transport::TServerTransport&, const boost::shared_ptrapache::thrift::transport::TTransportFactory&, const boost::shared_ptrapache::thrift::protocol::TProtocolFactory&, typename boost::enable_if<typename boost::is_convertible<Processor*, apache::thrift::TProcessor*>::type, void*>::type)’
49 | TSimpleServer(
| ^~~~~~~~~~~~~
/usr/include/thrift/server/TSimpleServer.h:49:3: note: template argument deduction/substitution failed:
/home/nsalwan/charybdefs/server.cc:265:91: note: ‘std::shared_ptrapache::thrift::TProcessor’ is not derived from ‘const boost::shared_ptr’
265 | TSimpleServer server(processor, serverTransport, transportFactory, protocolFactory);
| ^
In file included from /home/nsalwan/charybdefs/server.cc:31:
/usr/include/thrift/server/TSimpleServer.h:38:3: note: candidate: ‘template apache::thrift::server::TSimpleServer::TSimpleServer(const boost::shared_ptr&, const boost::shared_ptrapache::thrift::transport::TServerTransport&, const boost::shared_ptrapache::thrift::transport::TTransportFactory&, const boost::shared_ptrapache::thrift::protocol::TProtocolFactory&, typename boost::enable_if<typename boost::is_convertible<ProcessorFactory*, apache::thrift::TProcessorFactory*>::type, void*>::type)’
38 | TSimpleServer(
| ^~~~~~~~~~~~~
/usr/include/thrift/server/TSimpleServer.h:38:3: note: template argument deduction/substitution failed:
/home/nsalwan/charybdefs/server.cc:265:91: note: ‘std::shared_ptrapache::thrift::TProcessor’ is not derived from ‘const boost::shared_ptr’
265 | TSimpleServer server(processor, serverTransport, transportFactory, protocolFactory);
| ^
In file included from /home/nsalwan/charybdefs/server.cc:31:
/usr/include/thrift/server/TSimpleServer.h:35:7: note: candidate: ‘apache::thrift::server::TSimpleServer::TSimpleServer(const apache::thrift::server::TSimpleServer&)’
35 | class TSimpleServer : public TServer {
| ^~~~~~~~~~~~~
/usr/include/thrift/server/TSimpleServer.h:35:7: note: candidate expects 1 argument, 4 provided
make[2]: *** [CMakeFiles/charybde_lib.dir/server.cc.o] Error 1
make[1]: *** [CMakeFiles/charybde_lib.dir/all] Error 2

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.