Avi Kivity 702de43ce3 Merge "Commit log replay" from Calle
"Initial implementation/transposition of commit log replay.

* Changes replay position to be shard aware
* Commit log segment ID:s now follow basically the same scheme as origin;
  max(previous ID, wall clock time in ms) + shard info (for us)
* SStables now use the DB definition of replay_position.
* Stores and propagates (compaction) flush replay positions in sstables
* If CL segments are left over from a previous run, they, and existing
  sstables are inspected for high water mark, and then replayed from
  those marks to amend mutations potentially lost in a crash
* Note that CPU count change is "handled" in so much that shard matching is
  per _previous_ runs shards, not current.

Known limitations:
* Mutations deserialized from old CL segments are _not_ fully validated
  against existing schemas.
* System::truncated_at (not currently used) does not handle sharding afaik,
  so watermark ID:s coming from there are dubious.
* Mutations that fail to apply (invalid, broken) are not placed in blob files
  like origin. Partly because I am lazy, but also partly because our serial
  format differs, and we currently have no tools to do anything useful with it
* No replay filtering (Origin allows a system property to designate a filter
  file, detailing which keyspace/cf:s to replay). Partly because we have no
  system properties.

There is no unit test for the commit log replayer (yet).
Because I could not really come up with a good one given the test
infrastructure that exists (tricky to kill stuff just "right").
The functionality is verified by manual testing, i.e. running scylla,
building up data (cassandra-stress), kill -9 + restart.
This of course does not really fully validate whether the resulting DB is
100% valid compared to the one at k-9, but at least it verified that replay
took place, and mutations where applied.
(Note that origin also lacks validity testing)"

Fixes #98.
2015-08-31 15:58:12 +03:00
2015-08-31 09:31:19 +03:00
2015-08-31 14:29:50 +02:00
2015-08-27 11:01:08 +03:00
2015-01-05 14:13:31 +08:00
2015-07-19 20:48:36 +03:00
2015-08-30 15:18:28 +03:00
2015-08-18 15:48:36 +03:00
2014-10-23 10:46:55 +03:00
2015-07-27 10:14:02 +03:00
2015-08-25 17:07:35 +03:00
2015-08-07 09:30:53 -05:00
2015-03-05 18:11:37 +02:00
2015-08-31 14:29:50 +02:00
2015-05-21 15:17:34 +03:00
2015-06-24 13:09:51 +03:00
2015-07-31 16:27:55 +08:00
2015-08-31 14:29:51 +02:00
2015-08-02 16:07:42 +03:00
2015-07-30 10:56:01 +02:00
2015-08-09 00:05:33 +03:00
2015-08-28 14:39:46 +03:00
2015-04-24 18:01:01 +02:00

#Urchin

##Building Urchin

In addition to required packages by Seastar, the following packages are required by Urchin.

Submodules

Urchin uses submodules, so make sure you pull the submodules first by doing:

git submodule init
git submodule update --recursive

Building urchin 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 urchin on Ubuntu 14.04

Installing required packages:

sudo apt-get install libyaml-cpp-dev liblz4-dev zlib1g-dev libsnappy-dev libjsoncpp-dev
Description
No description provided
Readme 384 MiB
Languages
C++ 72.7%
Python 26.1%
CMake 0.3%
GAP 0.3%
Shell 0.3%