mirror of
https://github.com/scylladb/scylladb.git
synced 2026-06-01 12:36:56 +00:00
db106a32c8e25bb376f0bedac2a66bf9e8de5351
Previously the different states a reader can be in were all separate structs, and were joined together by a variant. When this was designed this made sense as states were numerous and quite different. By this point however the number of states has been reduced to 4, with 3 of them being almost the same. Thus it makes sense to merge these states into single struct and keep track of the current state with an enum field. This can theoretically increase the chances of mistakes, but in practice I expect the opposite, due to the simpler (and less) code. Also, all the important checks that verify that a reader is in the state expected by the code are all left in place. A byproduct of this change is that the amount of cross-shard writes is greatly reduced. Whereas previously the whole state object had to be rewritten on state change, now a single enum value has to be updated. Cross shard reads are reduced as well to the read of a few foreign pointers, all state-related data is now kept on the shard where the associated reader lives.
…
…
…
…
…
…
Scylla
Quick-start
$ git submodule update --init --recursive
$ sudo ./install-dependencies.sh
$ ./configure.py --mode=release
$ ninja-build -j4 # Assuming 4 system threads.
$ ./build/release/scylla
$ # Rejoice!
Please see HACKING.md for detailed information on building and developing Scylla.
Note: GCC >= 8.1.1 is require to compile Scylla.
Note: See frozen toolchain for a way to build and run on an older distribution.
Running Scylla
- 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
Description
Languages
C++
72.3%
Python
26.5%
CMake
0.3%
GAP
0.3%
Shell
0.3%