mirror of
https://github.com/scylladb/scylladb.git
synced 2026-06-08 07:53:20 +00:00
177159da75fcdb8209861e8be39e1b79ed6c9166
" The delete_atomically function is required to delete a set of sstables atomically. I.e. Either delete all or none of them. Deleting only some sstables in the set might result in data resurrection in case sstable A holding tombstone that cover mutation in sstable B, is deleted, while sstable B remains. This patchset introduces a log file holding a list of SSTable TOC files to delete for recovering a partial delete_atomically operation. A new subdirectory is create in the sstables dir called `pending_delete` holding in-flight logs. The logs are created with a temporary name (using a .tmp suffix) and renamed to the final .log name once ready. This indicates the commit point for the operation. When populating the column family, all files in the pending_delete sub-directory are examined. Temporary log files are just removed, and committed log files are read, replayed, and deleted. Fixes #4082 Tests: unit (dev), database_test (debug) " * 'projects/delete_atomically_recovery/v5' of https://github.com/bhalevy/scylla: tests: database_test: add test_distributed_loader_with_pending_delete distributed_loader: replay and cleanup pending_delete log files distributed_loader: populated_column_family: separate temp sst dirs cleanup phase docs: add sstables-directory-structure.md sstables: commit sstables to delete_atomically into a pending_delete log file sstables: delete_atomically: delete sstables in a thread sstables: component_basename: reuse with sstring component sstables: introduce component_basename database: maybe_delete_large_partitions_entry: do not access sstable and do not mask exceptions sstables: add delete_sstable_and_maybe_large_data_entries sstables: call remove_by_toc_name in dtor if marked_for_deletion
…
…
…
…
…
…
…
…
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.1%
Python
26.7%
CMake
0.3%
GAP
0.3%
Shell
0.3%