Commit Graph

16685 Commits

Author SHA1 Message Date
Avi Kivity
474bb4e44f cql: functions: implement min/max/count for bytes type
Uncomment existing declare() calls and implement tests. Because the
data_value(bytes) constructor is explicit, we add explicit conversion to
data_value in impl_min_function_for<> and impl_max_function_for<>.

Fixes #3824.
Message-Id: <20181008084127.11062-1-avi@scylladb.com>
2018-10-08 10:48:30 +01:00
Takuya ASADA
d89114d1fc dist/debian: install GPG key for cross-building
We found on some Debian environment Ubuntu .deb build fails with
gpg error because lack of Ubuntu GPG key, so we need to install it before
start pbuilder.
Same as on Ubuntu, it needs to install Debian GPG key.

Fixes #3823

Signed-off-by: Takuya ASADA <syuu@scylladb.com>
Message-Id: <20181008072246.13305-1-syuu@scylladb.com>
2018-10-08 10:43:25 +03:00
Botond Dénes
b01050e28c HACKING.md: add link to the scylla-dev mailing list
Signed-off-by: Botond Dénes <bdenes@scylladb.com>
Message-Id: <9a5d967f791d7a0db584864f68f93bbc68f52372.1538977773.git.bdenes@scylladb.com>
2018-10-08 10:06:50 +03:00
Avi Kivity
1cc81d1492 Update seastar submodule
* seastar 71e914e...ed44af8 (4):
  > Merge "Add semaphore_units<>::split() function" from Duarte
  > scheduling: introduce destroy_scheduling_group()
  > tls: include "api.hh" for listen_options
  > rpc: connection-level resource isolation
2018-10-07 20:45:49 +03:00
Duarte Nunes
4162bff37a Merge 'cql3: allow adding or dropping multiple columns in ALTER TABLE statement' from Benny
"
This patchset implements ALTER TABLE ADD/DROP for multiple columns.

Fixes: #2907
Fixes: #3691

Tests: schema_change_test
"

* 'projects/cql3/alter-table-multi/v3' of https://github.com/bhalevy/scylla:
  cql3: schema_change_test: add test_multiple_columns_add_and_drop
  cql3: allow adding or dropping multiple columns in ALTER TABLE statement
  cql3: alter_table_statement: extract add/alter/drop per-column code into functions
  cql3: testing for MVs for alter_table_statement::type::drop is not per column
  cql3: schema_change_test: add test_static_column_is_dropped
2018-10-07 17:30:09 +01:00
Benny Halevy
0f350f5d59 cql3: schema_change_test: add test_multiple_columns_add_and_drop
Add a unit test for adding or dropping multiple columns.
See https://github.com/scylladb/scylla/issues/2907

Signed-off-by: Benny Halevy <bhalevy@scylladb.com>
2018-10-07 19:14:29 +03:00
Benny Halevy
23fecc7e5e cql3: allow adding or dropping multiple columns in ALTER TABLE statement
Fixes #2907
Fixes #3691

See Cassandra reference: https://apache.googlesource.com/cassandra/+/cassandra-3.6/src/antlr/Parser.g
/**
 * ALTER COLUMN FAMILY <CF> ALTER <column> TYPE <newtype>;
 * ALTER COLUMN FAMILY <CF> ADD <column> <newtype>; | ALTER COLUMN FAMILY <CF> ADD (<column> <newtype>,<column1> <newtype1>..... <column n> <newtype n>)
 * ALTER COLUMN FAMILY <CF> DROP <column>; | ALTER COLUMN FAMILY <CF> DROP ( <column>,<column1>.....<column n>)
 * ALTER COLUMN FAMILY <CF> WITH <property> = <value>;
 * ALTER COLUMN FAMILY <CF> RENAME <column> TO <column>;
 */
alterTableStatement returns [shared_ptr<alter_table_statement> expr]
    @init {
        alter_table_statement::type type;
        auto props = make_shared<cql3::statements::cf_prop_defs>();
        std::vector<alter_table_statement::column_change> column_changes;
        std::vector<std::pair<shared_ptr<cql3::column_identifier::raw>, shared_ptr<cql3::column_identifier::raw>>> renames;
    }
    : K_ALTER K_COLUMNFAMILY cf=columnFamilyName
          ( K_ALTER id=cident K_TYPE v=comparatorType { type = alter_table_statement::type::alter; column_changes.emplace_back(id, v); }
          | K_ADD                                     { type = alter_table_statement::type::add; }
            (         id1=cident  v1=comparatorType  b1=cfisStatic { column_changes.emplace_back(id1, v1, b1); }
            | '('     id1=cident  v1=comparatorType  b1=cfisStatic { column_changes.emplace_back(id1, v1, b1); }
                 (',' idn=cident  vn=comparatorType  bn=cfisStatic { column_changes.emplace_back(idn, vn, bn); } )* ')'
            )

          | K_DROP  id=cident                         { type = alter_table_statement::type::drop; column_changes.emplace_back(id); }
          | K_WITH  properties[props]                 { type = alter_table_statement::type::opts; }
          | K_RENAME                                  { type = alter_table_statement::type::rename; }
               id1=cident K_TO toId1=cident { renames.emplace_back(id1, toId1); }
               ( K_AND idn=cident K_TO toIdn=cident { renames.emplace_back(idn, toIdn); } )*
          )
    {
        $expr = ::make_shared<alter_table_statement>(std::move(cf), type, std::move(column_changes), std::move(props), std::move(renames));
    }
    ;

Signed-off-by: Benny Halevy <bhalevy@scylladb.com>
2018-10-07 19:14:26 +03:00
Benny Halevy
3fa6d3d3a8 cql3: alter_table_statement: extract add/alter/drop per-column code into functions
In preparation to supporting ALTER TABLE with multiple columns (#3691)

Signed-off-by: Benny Halevy <bhalevy@scylladb.com>
2018-10-07 18:57:06 +03:00
Alexys Jacob
eebbae066a dist/common/scripts/scylla_setup: fix gentoo linux installed package detection
return code is expected to be 0 when installed package was found

Signed-off-by: Alexys Jacob <ultrabug@gentoo.org>
Message-Id: <20181002123433.4702-1-ultrabug@gentoo.org>
2018-10-07 16:46:02 +03:00
Alexys Jacob
850d046551 dist/common/scripts/scylla_ntp_setup: fix gentoo linux systemd service name
fix typo as ntpd package systemd service is named ntpd, not sntpd

Signed-off-by: Alexys Jacob <ultrabug@gentoo.org>
Message-Id: <20181002123802.5576-1-ultrabug@gentoo.org>
2018-10-07 16:46:01 +03:00
Alexys Jacob
54151d2039 dist/common/scripts/scylla_cpuscaling_setup: fix file open mode for writing
gentoo linux part tries to open the configuration file without the
write flag, leading to an exception

Signed-off-by: Alexys Jacob <ultrabug@gentoo.org>
Message-Id: <20181002123957.6010-1-ultrabug@gentoo.org>
2018-10-07 16:46:00 +03:00
Avi Kivity
700994a4f2 Merge "Add GDB commands for examining gossiper and RPC state" from Tomasz
* 'gdb-gms-netw' of github.com:tgrabiec/scylla:
  gdb: Introduce 'scylla netw' command
  gdb: Introduce 'scylla gms' command
  gdb: Add sharded service wrapper
  gdb: Add unique_ptr wrapper
  gdb: Add list_unordered_set()
  gdb: Make std_vector wrapper indexable
  gdb: Add wrapper for std_map
2018-10-07 16:42:52 +03:00
Vlad Zolotarov
7cbe5f2983 service: priority_manager.hh: add #pragma once
Signed-off-by: Vlad Zolotarov <vladz@scylladb.com>
Message-Id: <20181005040552.2183-3-vladz@scylladb.com>
2018-10-07 16:04:26 +03:00
Duarte Nunes
30d6ed8f92 service/storage_proxy: Consider target liveness in sent_to_endpoint()
So we don't attempt to send mutations to unreachable endpoints and
instead store a hint for them, we now check the endpoint status and
populate dead_endpoints accordingly in
storage_proxy::send_to_endpoint().

Fixes #3820

Signed-off-by: Duarte Nunes <duarte@scylladb.com>
Message-Id: <20181007100640.2182-1-duarte@scylladb.com>
2018-10-07 16:04:26 +03:00
Benny Halevy
581b9006d4 cql3: testing for MVs for alter_table_statement::type::drop is not per column
No column can be dropped from a table with materialized views
so the respective exception can ignore and omit the dropped column name.

In preparation for refactoring the respective code, moving the per-column
code to member functions.

Signed-off-by: Benny Halevy <bhalevy@scylladb.com>
2018-10-07 15:16:32 +03:00
Benny Halevy
8d298064b1 cql3: schema_change_test: add test_static_column_is_dropped
Test dropping of static column defined in CREATE TABLE, and
adding and dropping of a static column using ALTER TABLE.

Signed-off-by: Benny Halevy <bhalevy@scylladb.com>
2018-10-07 14:34:28 +03:00
Duarte Nunes
a69d468101 service/storage_proxy: Fix formatting of send_to_endpoint()
Signed-off-by: Duarte Nunes <duarte@scylladb.com>
Message-Id: <20181006204756.32232-1-duarte@scylladb.com>
2018-10-07 11:05:32 +03:00
Duarte Nunes
b839f551cf cql3/statements/select_statement: Don't double count unpaged queries
Unpaged queries are those for which the client didn't enable paging,
and we already account for them in
indexed_table_select_statement::do_execute().

Remove the second increment in read_posting_list().

Signed-off-by: Duarte Nunes <duarte@scylladb.com>
Message-Id: <20181003121811.11750-1-duarte@scylladb.com>
2018-10-05 17:36:39 +02:00
Nadav Har'El
e4ef7fc40a materialized views: enable two tests in view_schema_test
We had two commented out tests based on Cassandra's MV unit tests, for
the case that the view's filter (the "SELECT" clause used to define the
view) filtered by a non-primary-key column. These tests used to fail
because of problems we had in the filtering code, but they now succeed,
so we can enable them. This patch also adds some comments about what
the tests do, and adds a few more cases to one of the tests.

Refs #3430.

However, note that the success of these tests does not really prove that
the non-PK-column filtering feature works fully correctly and that issue
forbidding it, as explained in
https://issues.apache.org/jira/browse/CASSANDRA-13798. We can probably
fix this feature with our "virtual cells" mechanism, but will need to add
a test to confirm the possible problem and its (probably needed fix).
We do not add such a test in this patch.

In the meantime, issue #3430 should remain open: we still *allow* users
to create MV with such a filter, and, as the tests in this patch show,
this "mostly" works correctly. We just need to prove and/or fix what happens
with the complex row liveness issues a la issue #3362.

Signed-off-by: Nadav Har'El <nyh@scylladb.com>
Message-Id: <20181004213637.32330-1-nyh@scylladb.com>
2018-10-04 22:43:38 +01:00
Piotr Sarna
a5570cb288 tests: add missing get() calls in threaded context
One test case missed a few get() calls in order to wait
for continuations, which only accidentally worked,
because it was followed by 'eventually()' blocks.
Message-Id: <69c145575ac81154c4b5f500d01c6b045a267088.1536839959.git.sarna@scylladb.com>
2018-10-04 10:55:45 +01:00
Piotr Sarna
8a2abd45fb tests: add collections test for secondary indexing
Test case regarding creating indexes on collection columns
is added to the suite.

Refs #3654
Refs #2962
Message-Id: <1b6844634b6e9a353028545813571647c92fb330.1536839959.git.sarna@scylladb.com>
2018-10-04 10:55:45 +01:00
Piotr Sarna
2d355bdf47 cql3: prevent creation of indexes on non-frozen collections
Until indexes for non-frozen collections is implemented,
creating such indexes should be disallowed to prevent unnecessary
errors on insertions/selections.

Fixes #3653
Refs #2962
Message-Id: <218cf96d5e38340806fb9446b8282d2296ba5f43.1536839959.git.sarna@scylladb.com>
2018-10-04 10:55:45 +01:00
Duarte Nunes
959559d568 cql3/statements/select_statement: Remove outdated comment
Signed-off-by: Duarte Nunes <duarte@scylladb.com>
Message-Id: <20181003193033.13862-1-duarte@scylladb.com>
2018-10-04 09:45:17 +03:00
Eliran Sinvani
20f49566a2 cql3 : add workaround to antlr3 null dereference bug
The Antlr3 exception class has a null dereference bug that crashes
the system when trying to extract the exception message using
ANTLR_Exception<...>::displayRecognitionError(...) function. When
a parsing error occurs the CqlParser throws an exception which in
turn processesed for some special cases in scylla to generate a custom
message. The default case however, creates the message using
displayRecognitionError, causing the system to crash.
The fix is a simple workaround, making sure the pointer is not null
before the call to the function. A "proper" fix can't be implemented
because the exception class itself is implemented outside scylla
in antlr headers that resides on the host machine os.

Tested manualy 2 testcases, a typo causing scylla to crash and
a cql comment without a newline at the end also caused scylla to crash.
Ran unit tests (release).

Fixes #3740
Fixes #3764

Signed-off-by: Eliran Sinvani <eliransin@scylladb.com>
Message-Id: <cfc7e0d758d7a855d113bb7c8191b0fd7d2e8921.1538566542.git.eliransin@scylladb.com>
2018-10-03 18:30:06 +03:00
Tomasz Grabiec
9c57abcce7 gossiper: Fix shutdown_announce_in_ms not being respected
shutdown_announce_in_ms specifies a period of time that a node which
is shutting down waits to allow its state to propagate to other nodes.
However, we were setting _enabled to false before waiting, which
will make the current node ignore gossip messages.
Message-Id: <1538576996-26283-1-git-send-email-tgrabiec@scylladb.com>
2018-10-03 15:43:00 +01:00
Tomasz Grabiec
fda8e271e3 gdb: Introduce 'scylla netw' command
Prints information about the state of the messaging service layer.

Example:

(gdb) scylla netw
Dropped messages: {0 <repeats 25 times>}
Outgoing connections:
IP: 127.0.0.2, (netw::messaging_service::rpc_protocol_client_wrapper*) 0x6000051cd220:
  stats: {replied = 0, pending = 0, exception_received = 0, sent_messages = 23, wait_reply = 0, timeout = 0}
  outstanding: 0
Server: resources={_count = 85899345, _ex = {_M_exception_object = 0x0}, _wait_list = {_list = {_front_chunk = 0x0, _back_chunk = 0x0, _nchunks = 0, _free_chunks = 0x0, _nfree_chunks = 0}, _on_expiry = {<No data fields>}, _size = 0}}
Incoming connections:
127.0.0.1:28071:
   {replied = 0, pending = 0, exception_received = 0, sent_messages = 2, wait_reply = 0, timeout = 0}
2018-10-03 15:05:22 +02:00
Tomasz Grabiec
cf07cda08f gdb: Introduce 'scylla gms' command
Prints gossiper state. Example:

(gdb) scylla gms
127.0.0.2: (gms::endpoint_state*) 0x6010050c0550 ({_generation = 1538568389, _version = 2147483647})
  gms::application_state::STATUS: {version=18, value="NORMAL,968364964011550971"}
  gms::application_state::LOAD: {version=267, value="494510"}
  gms::application_state::SCHEMA: {version=13, value="27e48f6a-a668-398a-b2f5-cf4b905450e9"}
  gms::application_state::DC: {version=10, value="datacenter1"}
  gms::application_state::RACK: {version=11, value="rack1"}
  gms::application_state::RELEASE_VERSION: {version=4, value="3.0.8"}
  gms::application_state::RPC_ADDRESS: {version=3, value="127.0.0.2"}
  gms::application_state::NET_VERSION: {version=1, value="0"}
  gms::application_state::HOST_ID: {version=2, value="ee281b83-1acb-4aa3-927c-985a7d9a7c6f"}
127.0.0.1: (gms::endpoint_state*) 0x6010051422b0 ({_generation = 1538557402, _version = 0})
  gms::application_state::STATUS: {version=18, value="NORMAL,9176584852507611499"}
  gms::application_state::LOAD: {version=22521, value="409817"}
  gms::application_state::SCHEMA: {version=13, value="27e48f6a-a668-398a-b2f5-cf4b905450e9"}
  gms::application_state::DC: {version=10, value="datacenter1"}
  gms::application_state::RACK: {version=11, value="rack1"}
  gms::application_state::RELEASE_VERSION: {version=4, value="3.0.8"}
  gms::application_state::RPC_ADDRESS: {version=3, value="127.0.0.1"}
  gms::application_state::NET_VERSION: {version=1, value="0"}
  gms::application_state::HOST_ID: {version=2, value="88ff543f-e9b8-42eb-a876-c0f917078a31"}
2018-10-03 15:05:22 +02:00
Tomasz Grabiec
8c6f8b1773 gdb: Add sharded service wrapper 2018-10-03 15:05:22 +02:00
Tomasz Grabiec
4adfed9dba gdb: Add unique_ptr wrapper 2018-10-03 15:05:22 +02:00
Tomasz Grabiec
e29e302272 gdb: Add list_unordered_set() 2018-10-03 15:05:22 +02:00
Tomasz Grabiec
272bc88699 gdb: Make std_vector wrapper indexable 2018-10-03 15:05:22 +02:00
Tomasz Grabiec
b436759d49 gdb: Add wrapper for std_map 2018-10-03 15:05:22 +02:00
Pekka Enberg
de48966abc cql3: Move as_json_function class to separate file
The as_json_function class is not registered as a function, but we can
still keep it cql3/functions, as per its namespace, to reduce the size
of select_statement.cc.
Message-Id: <20181002132637.30233-1-penberg@scylladb.com>
2018-10-03 13:30:08 +01:00
Piotr Sarna
4a23297117 cql3: add asking for pk/ck in the base query
Base query partition and clustering keys are used to generate
paging state for an index query, so they always need to be present
when a paged base query is processed.
Message-Id: <f3bf69453a6fd2bc842c8bdbd602d62c91cf9218.1538568953.git.sarna@scylladb.com>
2018-10-03 13:26:51 +01:00
Piotr Sarna
50d3de0693 cql3: add checking for may_need_paging when executing base query
It's not sufficient to check for positive page_size when preparing
a base query for indexed select statement - may_need_paging() should
be called as well.
Message-Id: <d435820019e4082a64ca9807541f0c9ad334e6a8.1538568953.git.sarna@scylladb.com>
2018-10-03 13:26:51 +01:00
Piotr Sarna
11b8831c04 cql3: move base query command creation to a separate function
Message-Id: <6b48b8cbd6312da4a17bfd3c85af628b4215e9f4.1538568953.git.sarna@scylladb.com>
2018-10-03 13:26:51 +01:00
Avi Kivity
7c8143c3c4 Revert "compaction: demote compaction start/end messages to DEBUG level"
This reverts commit b443a9b930. The compaction
history table doesn't have enough information to be a replacement for this
log message yet.
2018-10-03 13:13:37 +03:00
Avi Kivity
b9702222f8 Merge "Handle simple column type schema changes in SST3" from Piotr
"
This patchset enables very simple column type conversions.
It covers only handling variable and fixed size type differences.
Two types still have to be compatiple on bits level to be able to convert a field from one to the other.
"

* 'haaawk/sst3/column_type_schema_change/v4' of github.com:scylladb/seastar-dev:
  Fix check_multi_schema to actually check the column type change
  Handle very basic column type conversions in SST3
  Enable check_multi_schema for SST3
2018-10-03 13:12:10 +03:00
Piotr Jastrzebski
3a60eac1d5 Fix check_multi_schema to actually check the column type change
Field 'e' was supposed to be read as blob but the test had a bug
and the read schema was treating that field as int. This patch
changes that and makes the test really check column type change.

Signed-off-by: Piotr Jastrzebski <piotr@scylladb.com>
2018-10-03 10:56:40 +02:00
Piotr Jastrzebski
3cecb61ac1 Handle very basic column type conversions in SST3
After this change very simple schema changes of column type
will work. This change makes sure that variable size and fixed
size types can be converted to each other but only if their bit
representation can be automatically converted between those types.

Signed-off-by: Piotr Jastrzebski <piotr@scylladb.com>
2018-10-03 10:56:40 +02:00
Piotr Jastrzebski
c117a6b3c8 Enable check_multi_schema for SST3
Signed-off-by: Piotr Jastrzebski <piotr@scylladb.com>
2018-10-03 10:56:39 +02:00
Nadav Har'El
bebe5b5df2 materialized views: add view_updates_pending statistic
We are already maintaining a statistic of the number of pending view updates
sent but but not yet completed by view replicas, so let's expose it.
As all per-table statistics, also this one will only be exposed if the
"--enable-keyspace-column-family-metrics" option is on.

Signed-off-by: Nadav Har'El <nyh@scylladb.com>
2018-10-02 20:44:58 +01:00
Nadav Har'El
1d5f8d0015 materialized views: update stats.write statistics in all cases
mutate_MV usually calls send_to_endpoint() to push view update to remote
view replicas. This function gets passed a statistics object,
service::storage_proxy_stats::write_stats and, in particular, updates
its "writes" statistic which counts the number of ongoing writes.

In the case that the paired view replica happens to be the *same* node,
we avoid calling send_to_endpoint() and call mutate_locally() instead.
That function does not take a write_stats object, so the "writes" statistic
doesn't get incremented for the duration of the write. So we should do
this explicitly.

Co-authored-by: Nadav Har'El <nyh@scylladb.com>
Co-authored-by: Duarte Nunes <duarte@scylladb.com>
2018-10-02 20:44:58 +01:00
Duarte Nunes
40a30d4129 db/schema_tables: Diff tables using ID instead of name
Currently we diff schemas based on table/view name, and if the names
match, then we detect altered schemas by comparing the schema
mutations. This fails to detect transitions which involve dropping and
recreating a schema with the same name, if a node receives these
notifications simultaneously (for example, if the node was temporarily
down or partitioned).

Note that because the ID is persisted and created when executing a
create_table_statement, then even if a schema is re-created with the
exact same structure as before, we will still considered it altered
because the mutations will differ.

This also stops schema pulling from working, since it relies on schema
merging.

The solution is to diff schemas using their ID, and not their name.

Keyspaces and user types are also susceptible to this, but in their
case it's fine: these are values with no identity, and are just
metadata. Dropping and recreating a keyspace can be views as dropping
all tables from the keyspace, altering it, and eventually adding new
tables to the keyspace.

Note that this solution doesn't apply to tables dropped and created
with the same ID (using the `WITH ID = {}` syntax). For that, we would
need to detect deltas instead of applying changes and then reading the
new state to find differences. However, this solution is enough,
because tables are usually created with ID = {} for very specific,
peculiar reasons. The original motivation meant for the new table to
be treated exactly as the old, so the current behavior is in fact the
desired one.

Tests: unit(release), dtests(schema_test, schema_management_test)

Fixes #3797

Signed-off-by: Duarte Nunes <duarte@scylladb.com>
Message-Id: <20181001230932.47153-2-duarte@scylladb.com>
2018-10-02 20:15:46 +02:00
Duarte Nunes
e404f09a23 db/schema_tables: Drop tables before creating new ones
Doing it by the inverse order doesn't support dropping and creating a
schema with the same name.

Refs #3797

Signed-off-by: Duarte Nunes <duarte@scylladb.com>
Message-Id: <20181001230932.47153-1-duarte@scylladb.com>
2018-10-02 20:15:32 +02:00
Avi Kivity
aaab8a3f46 utils: crc32: mark power crc32 assembly as not requiring an executable stack
The linker uses an opt-in system for non-executable stack: if all object files
opt into a non-executable stack, the binary will have a non-executable stack,
which is very desirable for security. The compiler cooperates by opting into
a non-executable stack whenever possible (always for our code).

However, we also have an assembly file (for fast power crc32 computations).
Since it doesn't opt into a non-executable stack, we get a binary with
executable stack, which Gentoo's build system rightly complains about.

Fix by adding the correct incantation to the file.

Fixes #3799.

Reported-by: Alexys Jacob <ultrabug@gmail.com>
Message-Id: <20181002151251.26383-1-avi@scylladb.com>
2018-10-02 18:48:23 +01:00
Avi Kivity
53a4b8ae86 Update seastar submodule
* seastar 5712816...71e914e (12):
  > Merge "rpc shard to shard connection" from Gleb
  > Merge "Fix memory leaks when stoppping memcached" from Tomasz
  > scripts: perftune.py: prioritize I/O schedulers
  > alien: fix the size of local item[]
  > seastar-addr2line: don't invoke addr2line multiple times
  > reactor: use labels for different io_priority_class:s
  > util/spinlock: fix bad namespacing of <xmmintrin.h>
  > Merge "scripts: perftune.py: support different I/O schedulers" from Vlad
  > timer: Do not require callback to be copyable
  > core/reactor: Fix hang on shutdown with long task quota
  > build: use 'ppa:scylladb/ppa' instead of URL for sourceline
  > net/dns: add net::dns::get_srv_records() helper
2018-10-02 18:48:23 +01:00
Avi Kivity
7322ac105c Merge "sstables_stats" from Benny
"
This patchset adds sstable partition/row read/write/seek statistics.

Tests: dtest sstable_generation_loading_test.py stress_tool_test.py

Fixes: #251
"

* 'projects/sstables-stats/v5' of https://github.com/bhalevy/scylla:
  sstables stats: row reads
  sstables stats: partition seeks
  sstables stats: partition reads
  sstables stats: flat mutation reads
  sstables stats: cell/cell_tombstone writes
  sstables stats: partition/row/tombstone writes
  sstables_stats: writer_impl: move common members to base class
2018-10-02 15:05:10 +03:00
Duarte Nunes
7ba944a243 service/migration_manager: Validate duplicate ID in time
We allow tables to be created with the ID property, mostly for
advanced recovery cases. However, we need to validate that the ID
doesn't match an existing one. We currently do this in
database::add_column_family(), but this is already too late in the
normal workflow: if we allow the schema change to go through, then
it is applied to the system tables and loaded the next time the node
boots, regardless of us throwing from database::add_column_family().

To fix this, we perform this validation when announcing a new table.

Note that the check wasn't removed from database::add_column_family();
it's there since 2015 and there might have been other reasons to add
it that are not related to the ID property.

Refs #2059

Signed-off-by: Duarte Nunes <duarte@scylladb.com>
Message-Id: <20181001230142.46743-1-duarte@scylladb.com>
2018-10-02 13:40:40 +03:00
Calle Wilund
2996b8154f storage_proxy: Add missing re-throw in truncate_blocking
Iff truncation times out, we want to log it, but the exception should
not be swallowed, but re-thrown.

Fixes #3796.

Message-Id: <20181001112325.17809-1-calle@scylladb.com>
2018-10-01 19:07:04 +02:00