Asias He b2f2c1c28c storage_service: Add drain on shutdown logic
We register engine().at_exit() callbacks when we initialize the services. We
do not really call the callbacks at the moment due to #293.

It is pretty hard to see the whole picture in which order the services
are shutdown. Instead of for each services to register a at_exit()
callbacks, I proposal to have a single at_exit() callback which do the
shutdown for all the services. In cassandra, the shutdown work is done
in storage_service::drain_on_shutdown callbacks.

In this patch, the drain_on_shutdown is executed during shutdown.

As a result, the proper gossip shutdown is executed and fixes #790.

With this patch, when Ctrl-C on a node, it looks like:

INFO  [shard 0] storage_service - Drain on shutdown: starts
INFO  [shard 0] gossip - Announcing shutdown
INFO  [shard 0] storage_service - Node 127.0.0.1 state jump to normal
INFO  [shard 0] storage_service - Drain on shutdown: stop_gossiping done
INFO  [shard 0] storage_service - CQL server stopped
INFO  [shard 0] storage_service - Drain on shutdown: shutdown rpc and cql server done
INFO  [shard 0] storage_service - Drain on shutdown: shutdown messaging_service done
INFO  [shard 0] storage_service - Drain on shutdown: flush column_families done
INFO  [shard 0] storage_service - Drain on shutdown: shutdown commitlog done
INFO  [shard 0] storage_service - Drain on shutdown: done
2016-01-27 11:45:52 +08:00
2016-01-25 11:38:13 +08:00
2015-09-20 10:43:39 +03:00
2016-01-26 12:58:32 +02:00
2016-01-11 14:22:20 +00:00
2016-01-08 21:10:26 +01:00
2016-01-08 21:10:25 +01:00
2015-09-20 10:43:39 +03:00
2016-01-08 21:10:25 +01:00
2015-09-20 10:43:39 +03:00
2015-09-20 10:43:39 +03:00
2015-09-20 10:43:39 +03:00
2015-12-18 10:51:37 +01:00
2015-12-16 18:06:55 +01:00
2015-09-20 10:43:39 +03:00
2015-09-20 10:43:39 +03:00
2015-10-26 15:59:58 +02:00
2015-10-26 15:59:58 +02:00
2015-06-24 13:09:51 +03:00
2015-09-20 10:43:39 +03:00
2015-09-20 10:43:39 +03:00
2015-09-20 10:43:39 +03:00
2016-01-08 21:10:25 +01:00
2016-01-24 12:29:21 +02:00
2015-09-20 10:43:39 +03:00
2015-09-20 10:45:35 +03:00
2016-01-08 21:10:25 +01:00
2016-01-25 15:20:38 -05:00
2016-01-11 10:34:52 +01:00
2015-12-07 09:50:27 +01:00
2015-09-20 10:43:39 +03:00
2015-09-20 10:43:39 +03:00
2016-01-24 12:45:41 +02:00
2016-01-24 12:45:41 +02:00
2015-09-20 10:43:39 +03:00
2016-01-19 09:39:12 +01:00
2015-09-20 10:43:39 +03:00
2016-01-24 12:45:41 +02:00
2016-01-26 12:56:26 +01:00
2016-01-08 21:10:26 +01:00
2016-01-13 08:49:01 +00:00
2015-09-20 10:43:39 +03:00
2015-09-20 10:43:39 +03:00
2015-09-20 10:43:39 +03:00

#Scylla

##Building Scylla

In addition to required packages by Seastar, the following packages are required by Scylla.

Submodules

Scylla uses submodules, so make sure you pull the submodules first by doing:

git submodule init
git submodule update --recursive

Building and Running Scylla on Fedora

  • Installing required packages:
sudo yum install yaml-cpp-devel lz4-devel zlib-devel snappy-devel jsoncpp-devel thrift-devel antlr3-tool antlr3-C++-devel libasan libubsan gcc-c++ gnutls-devel ninja-build ragel libaio-devel cryptopp-devel xfsprogs-devel numactl-devel hwloc-devel libpciaccess-devel libxml2-devel python3-pyparsing
  • Build Scylla
./configure.py --mode=release --with=scylla --disable-xen
ninja-build build/release/scylla -j2 # you can use more cpus if you have tons of RAM

  • Run Scylla
./build/release/scylla

  • run Scylla with one CPU and ./tmp as data directory
./build/release/scylla --datadir tmp --commitlog-directory tmp --smp 1
  • For more run options:
./build/release/scylla --help

Building Fedora RPM

As a pre-requisite, you need to install Mock on your machine:

# Install mock:
sudo yum install mock

# Add user to the "mock" group:
usermod -a -G mock $USER && newgrp mock

Then, to build an RPM, run:

./dist/redhat/build_rpm.sh

The built RPM is stored in /var/lib/mock/<configuration>/result directory. For example, on Fedora 21 mock reports the following:

INFO: Done(scylla-server-0.00-1.fc21.src.rpm) Config(default) 20 minutes 7 seconds
INFO: Results and/or logs in: /var/lib/mock/fedora-21-x86_64/result

Building Fedora-based Docker image

Build a Docker image with:

cd dist/docker
docker build -t <image-name> .

Run the image with:

docker run -p $(hostname -i):9042:9042 -i -t <image name>

Contributing to Scylla

Do not send pull requests.

Send patches to the mailing list address scylladb-dev@googlegroups.com. Be sure to subscribe.

In order for your patches to be merged, you must sign the Contributor's License Agreement, protecting your rights and ours. See http://www.scylladb.com/opensource/cla/.

Description
No description provided
Readme 464 MiB
Languages
C++ 72.2%
Python 26.6%
CMake 0.3%
GAP 0.3%
Shell 0.3%