mirror of
https://github.com/scylladb/scylladb.git
synced 2026-06-02 13:06:57 +00:00
a05d398be72a6cd9ff9efa4c69a6d2873308f2fe
The foreign reader keeps track of ongoing read-aheads via a foreign_ptr to the read-ahead's future on the remote shard. This pointer is overwritten after each "remote call" to the remote reader with a pointer to the future of the new read-ahead's future. There are severeal problems with the current implementation: 1) There is a new read-ahead launched after each "remote call" unconditionally, even if the remote reader is at EOS. This will start unecessary read-ahead when the reader is already finished and may be soon destroyed (legally) by the client. 2) The pointer to the remote read-ahead future is not set to nullptr when a remote call is issued. Thus in the destructor, where we attach a continuation to the read-ahead's future to extend the reader's lifetime until after the read-ahead finishes, we migh attach a continuation to a future that already has one and run into a failed assert(). To fix this issues reset the read-ahead pointer to nullptr each time a remote call is issued and don't start a new read-ahead if the remote reader is at EOS. This way we can ensure that when the reader is destroyed we either have a valid and non-stale read-aead future or none at all and can reliably make a decision about whether we need to extend the lifetime of the remote reader or not.
…
…
…
…
…
…
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.
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.2%
Python
26.6%
CMake
0.3%
GAP
0.3%
Shell
0.3%