mirror of
https://github.com/scylladb/scylladb.git
synced 2026-06-02 13:06:57 +00:00
fd5f3cff47f1da54f2eb6451a0069ec52b722e25
For each stream_session, we pretend we are sending/receiving one file, to make it compatible with nodetool. For receiving_files, the file name is "rxnofile". For sending_files, the file name is "txnofile". stream_manager::update_all_progress_info is introduced to update the progress info of all the stream_sessions in the node. We need this because streaming mutations are received on all the cores, but the stream_session object is only on one of the cores. It adds overhead if we update progress info in stream_session object whenever we receive a streaming mutation. So, what we do now is when we really need the progress info, we update the progress info in stream_session object. With http://127.0.0.$i:10000/stream_manager/, it looks like below when decommission node 3 in a 3 nodes cluster. =========== GET NODE 1 [{"plan_id": "935a2cc0-dc6b-11e5-bdbf-000000000000", "description": "Unbootstrap", "sessions": [{"receiving_files": [{"value": {"direction": "IN", "file_name": "rxnofile", "session_index": 0, "total_bytes": 16876296, "peer": "127.0.0.3", "current_bytes": 16876296}, "key": "rxnofile"}], "receiving_summaries": [{"files": 1, "total_size": 0, "cf_id": "869d8630-dc6b-11e5-bdbf-000000000000"}], "session_index": 0, "state": "PREPARING", "connecting": "127.0.0.3", "peer": "127.0.0.3"}]}] =========== GET NODE 2 [{"plan_id": "935a2cc0-dc6b-11e5-bdbf-000000000000", "description": "Unbootstrap", "sessions": [{"receiving_files": [{"value": {"direction": "IN", "file_name": "rxnofile", "session_index": 0, "total_bytes": 16755552, "peer": "127.0.0.3", "current_bytes": 16755552}, "key": "rxnofile"}], "receiving_summaries": [{"files": 1, "total_size": 0, "cf_id": "869d8630-dc6b-11e5-bdbf-000000000000"}], "session_index": 0, "state": "PREPARING", "connecting": "127.0.0.3", "peer": "127.0.0.3"}]}] =========== GET NODE 3 [{"plan_id": "935a2cc0-dc6b-11e5-bdbf-000000000000", "description": "Unbootstrap", "sessions": [{"sending_files": [{"value": {"direction": "OUT", "file_name": "txnofile", "session_index": 0, "total_bytes": 16876296, "peer": "127.0.0.1", "current_bytes": 16876296}, "key": "txnofile"}], "sending_summaries": [{"files": 1, "total_size": 0, "cf_id": "869d8630-dc6b-11e5-bdbf-000000000000"}], "session_index": 0, "state": "PREPARING", "connecting": "127.0.0.1", "peer": "127.0.0.1"},{"sending_files": [{"value": {"direction": "OUT", "file_name": "txnofile", "session_index": 0, "total_bytes": 16755552, "peer": "127.0.0.2", "current_bytes": 16755552}, "key": "txnofile"}], "sending_summaries": [{"files": 1, "total_size": 0, "cf_id": "869d8630-dc6b-11e5-bdbf-000000000000"}], "session_index": 0, "state": "PREPARING", "connecting": "127.0.0.2", "peer": "127.0.0.2"}]}]
#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
Languages
C++
72.2%
Python
26.6%
CMake
0.3%
GAP
0.3%
Shell
0.3%