Glauber Costa 83323e155e database: add gate for generic async operations to column family
run_with_compaction_disabled(), which is called by truncate, has a
pretty large defer point in remove(). When the code gets to finally
execute, we can't guarantee that the column family will still be alive.

That is true in particular if we issued a drop table command following
truncate: by the time truncate gets to resume, the CF will be gone.
Before the column family is dropped, it will always call its stop()
method, which means we have an opportunity to do some waiting there. We
already wait for flushes and current compactions to end.

Traditionally, we have been solving similar problems by adding a gate
that will catch asynchronous operations and making sure that potentially
asynchronous operations will enter the gate before executing. Let's do
the same thing here. We will close() the gate during stop().

Fixes #2726

Signed-off-by: Glauber Costa <glauber@scylladb.com>
2017-08-24 13:12:57 -04:00
2017-08-23 14:40:04 +08:00
2017-05-08 10:03:28 +03:00
2016-04-08 08:12:47 +03:00
2017-08-24 11:35:28 +03:00
2017-08-21 10:25:40 +03:00
2016-04-08 08:12:47 +03:00
2017-03-14 13:38:38 +02:00
2017-06-23 11:35:35 -04:00
2016-04-08 08:12:47 +03:00
2015-06-24 13:09:51 +03:00
2017-02-02 10:35:14 +00:00
2017-06-23 11:35:35 -04:00
2016-01-24 12:29:21 +02:00
2015-09-20 10:45:35 +03:00
2016-06-01 18:28:42 +03:00
2016-03-11 18:27:13 +00:00
2017-06-24 18:06:11 +02:00
2017-06-24 18:06:11 +02:00
2015-12-07 09:50:27 +01:00
2017-06-24 18:06:11 +02:00
2016-09-28 17:34:16 +03:00
2017-06-23 11:35:35 -04:00
2017-08-11 13:08:42 +02:00
2017-08-10 15:01:10 -04:00

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

Guidelines for contributing

Description
No description provided
Readme 452 MiB
Languages
C++ 72.3%
Python 26.5%
CMake 0.3%
GAP 0.3%
Shell 0.3%