mirror of
https://github.com/scylladb/scylladb.git
synced 2026-06-09 08:23:29 +00:00
eccbf85e9dc3b37775c0a76fe3f17fd9b269e595
Fixes #423 "Changes the "truncated_at" blob contents of system.local table. It now stores N replay_positions, where N == # shards. The system.local table schema remains unchanged, and older truncation data is accepted, though it will for obvious reasons still be insufficient. Since the data is opaque to the running instance, blob compatibilty with origin should be irrelevant (and we're not really that now anyway). Note that technically, changing shard cound inbetween runs could make us hold on to RP data "longer than required", but this is a.) Insignificant data sizes b.) Data that is valid exactly once: When restarting a failed node and replaying. The "shards" only refer to "last run", and after that we don't care. At worst, we can get less than fresh data (not all shards manage to save truncation records before crash). It is worth noting (and I've done do in the code) that the system.local table + sharding cause some rather silly inefficiencens, since for this (and others) we store a value for each shard, each save which causes a global flush of the systable, in turn delegated on all cores. So the op is N^2 in "db complexity". At some point we should maybe consider if operations like "drop table" and "truncate" should not be done on shard level, but on machine level, so it can coordinate itself. But otoh, it is rare and not _very_ expensive either."
#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 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
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 -i -t <image name>
Description
Languages
C++
72.1%
Python
26.7%
CMake
0.3%
GAP
0.3%
Shell
0.3%