Glauber Costa 77513a40db database: get_snapshot_details
For each of the snapshots available, the api may query for some information:
the total size on disk, and the "real" size. As far as I could understand, the
real size is the size that is used by the SSTables themselves, while the total
size includes also the metadata about the snapshot - like the manifest.json
file.

Details follow:

In the original Cassandra code, total size is:

    long sizeOnDisk = FileUtils.folderSize(snapshot);

folderSize recurses on directories, and adds file.length() on files. Again, my
understanding is that file_size() would give us the same as the length() method
for Java.

The other value, real (or true) size is:

    long trueSize = getTrueAllocatedSizeIn(snapshot);

getTrueAllocatedSizeIn seems to be a tree walker, whose visitor is an instance
of TrueFilesSizeVisitor. What that visitor does, is add up the size of the files
within the tree who are "acceptable".

An acceptable file is a file which:

starts with the same prefix as we want (IOW, belongs to the same SSTable, we
will just test that directly), and is not "alive". The alive list is just the
list of all SSTables in the system that are used by the CFs.

What this tries to do, is to make sure that the trueSnapshotSize is just the
extra space on disk used by the snapshot. Since the snapshots are links, then
if a table goes away, it adds to this size. If it would be there anyway, it does
not.

We can do that in a lot simpler fashion: for each file, we will just look at
the original CF directory, and see if we can find the file there. If we can't,
then it counts towards the trueSize. Even for files that are deleted after
compaction, that "eventually" works, and that simplifies the code tremendously
given that we don't have to neither list all files in the system - as Cassandra
does - or go check other shards for liveness information - as we would have to
do.

The scheme I am proposing may need some tweaks when we support multiple data
directories, as the SSTables may not be directly below the snapshot level.
Still, it would be trivial to inform the CF about their possible locations.

Signed-off-by: Glauber Costa <glommer@scylladb.com>
2015-10-21 13:48:44 +02:00
2015-10-20 15:58:31 +02:00
2015-10-20 09:56:40 +03:00
2015-10-15 19:34:50 -03:00
2015-09-20 10:43:39 +03:00
2015-09-20 10:43:39 +03:00
2015-10-20 15:19:35 +03:00
2015-10-12 16:12:35 +03:00
2014-10-23 10:46:55 +03:00
2015-09-20 10:43:39 +03:00
2015-09-20 10:43:39 +03:00
2015-09-20 10:43:39 +03:00
2015-09-20 10:43:39 +03:00
2015-09-20 10:43:39 +03:00
2015-09-20 10:43:39 +03:00
2015-09-20 10:43:39 +03:00
2015-09-20 10:43:39 +03:00
2015-09-20 10:43:39 +03:00
2015-09-20 10:43:39 +03:00
2015-10-21 13:48:44 +02:00
2015-10-21 13:48:44 +02:00
2015-09-20 10:43:39 +03:00
2015-09-20 10:43:39 +03:00
2015-09-20 10:43:39 +03:00
2015-06-24 13:09:51 +03:00
2015-09-20 10:43:39 +03:00
2015-09-20 10:43:39 +03:00
2015-09-20 10:43:39 +03:00
2015-09-20 10:43:39 +03:00
2015-09-20 10:43:39 +03:00
2015-09-20 10:43:39 +03:00
2015-09-20 10:43:39 +03:00
2015-09-20 10:45:35 +03:00
2015-09-20 10:43:39 +03:00
2015-09-20 10:43:39 +03:00
2015-09-20 10:43:39 +03:00
2015-09-20 10:43:39 +03:00
2015-09-20 10:43:39 +03:00
2015-09-20 10:43:39 +03:00
2015-09-20 10:43:39 +03:00
2015-09-20 10:43:39 +03:00
2015-09-20 10:43:39 +03:00
2015-09-20 10:43:39 +03:00
2015-09-20 10:43:39 +03:00
2015-09-20 10:43:39 +03:00
2015-09-20 10:43:39 +03:00
2015-09-20 10:43:39 +03:00
2015-09-20 10:43:39 +03:00
2015-09-20 10:43:39 +03:00
2015-09-20 10:43:39 +03:00
2015-09-20 10:43:39 +03:00
2015-09-20 10:43:39 +03:00
2015-09-20 10:43:39 +03:00
2015-09-20 10:43:39 +03:00
2015-09-20 10:43:39 +03:00
2015-09-20 10:43:39 +03:00
2015-09-20 10:43:39 +03:00
2015-09-20 10:43:39 +03:00
2015-09-20 10:43:39 +03:00
2015-09-20 10:43:39 +03:00
2015-09-20 10:43:39 +03:00
2015-09-20 10:43:39 +03:00
2015-10-19 09:05:48 +03:00
2015-09-20 10:43:39 +03:00
2015-09-20 10:43:39 +03:00
2015-09-20 10:43:39 +03:00
2015-09-20 10:43:39 +03:00
2015-09-20 10:43:39 +03:00
2015-09-20 10:43:39 +03:00
2015-09-20 10:43:39 +03:00

#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
No description provided
Readme 544 MiB
Languages
C++ 72.1%
Python 26.7%
CMake 0.3%
GAP 0.3%
Shell 0.3%