Gleb Natapov
e904236cd4
cql3: move DROP FUNCTION statement to prepare_schema_mutations() api
2021-12-11 12:31:07 +02:00
Gleb Natapov
25ae8a6376
migration_manager: add prepare_function_drop_announcement() function
...
The function only generates mutations for the announcement, but does not
send them out. Will be used by the later patches.
2021-12-11 12:31:07 +02:00
Gleb Natapov
9d1d54bc93
cql3: move CREATE AGGREGATE statement to prepare_schema_mutations() api
2021-12-11 12:31:07 +02:00
Gleb Natapov
7430750674
migration_manager: add prepare_new_aggregate_announcement() function
...
The function only generates mutations for the announcement, but does not
send them out. Will be used by the later patches.
2021-12-11 12:31:07 +02:00
Gleb Natapov
156f234996
cql3: move CREATE FUNCTION statement to prepare_schema_mutations() api
2021-12-11 12:31:07 +02:00
Gleb Natapov
10c14cd044
migration_manager: add prepare_new_function_announcement() function
...
The function only generates mutations for the announcement, but does not
send them out. Will be used by the later patches.
2021-12-11 12:31:07 +02:00
Gleb Natapov
9ec0db660c
cql: get rid of mutable members in DROP/CREATE FUNCTION
...
Instead of using a mutable member as a way to pass data between
functions just return the data directly to a caller.
2021-12-11 12:31:07 +02:00
Gleb Natapov
661651a836
cql3: move statement validation to execute time for function related statements
...
To be able to confine raft to the execution time of a statement we need to
move all schema access to the execution time as well. Since the
validation code access the schema lets run it during execution.
2021-12-11 12:31:07 +02:00
Gleb Natapov
1d448f59a0
cql3: move DROP INDEX statement to prepare_schema_mutations() api
2021-12-11 12:31:07 +02:00
Gleb Natapov
05801b99c6
cql3: factor our mutation creation code into a separate function for DROP INDEX
...
The function will be used in the next patch.
2021-12-11 12:31:07 +02:00
Gleb Natapov
09128719dc
cql3: move DROP VIEW statement to prepare_schema_mutations() api
2021-12-11 12:31:07 +02:00
Gleb Natapov
25294e4460
migration_manager: add prepare_view_drop_announcement() function
...
The function only generates mutations for the announcement, but does not
send them out. Will be used by the later patches.
2021-12-11 12:31:07 +02:00
Gleb Natapov
4528273e54
cql3: move DROP TYPE statement to prepare_schema_mutations() api
2021-12-11 12:31:07 +02:00
Gleb Natapov
87b52c30e7
migration_manager: add prepare_type_drop_announcement() function
...
The function only generates mutations for the announcement, but does not
send them out. Will be used by the later patches.
2021-12-11 12:31:07 +02:00
Gleb Natapov
36745b6b73
cql3: move statement validation to execute time for DROP TYPE
...
To be able to confine raft to the execution time of a statement we need to
move all schema access to the execution time as well. Since the
validation code access the schema lets run it during execution.
2021-12-11 12:31:07 +02:00
Gleb Natapov
d438a3285e
cql3: move DROP TABLE statement to prepare_schema_mutations() api
2021-12-11 12:31:07 +02:00
Gleb Natapov
471d48d277
migration_manager: add prepare_column_family_drop_announcement() function
...
The function only generates mutations for the announcement, but does not
send them out. Will be used by the later patches.
2021-12-11 12:31:07 +02:00
Gleb Natapov
68cf743554
cql3: move DROP KEYSPACE statement to prepare_schema_mutations() api
2021-12-11 12:31:07 +02:00
Gleb Natapov
f1cc1fb96e
migration_manager: add prepare_keyspace_drop_announcement() function
...
The function only generates mutations for the announcement, but does not
send them out. Will be used by the later patches.
2021-12-11 12:31:07 +02:00
Gleb Natapov
4574981f9e
cql3: move CREATE INDEX statement to prepare_schema_mutations() api
2021-12-11 12:31:07 +02:00
Gleb Natapov
2d1b318d36
cql3: CREATE INDEX do not re-create targets array twice
...
The validation and execution code recreate the same array twice. Avoid
it by returning the array from verification function.
2021-12-11 12:31:07 +02:00
Gleb Natapov
6029ba6f5b
cql3: factor our mutation creation code into a separate function for CREATE INDEX
...
The function will be used in the next patch.
2021-12-11 12:31:07 +02:00
Gleb Natapov
a3e1cb932a
cql3: move statement validation to execute time for CREATE INDEX
...
To be able to confine raft to the execution time of a statement we need to
move all schema access to the execution time as well. Since the
validation code access the schema lets run it during execution.
2021-12-11 12:31:07 +02:00
Gleb Natapov
5f30b5802c
cql3: move ALTER KEYSPACE statement to prepare_schema_mutations() api
2021-12-11 12:31:07 +02:00
Gleb Natapov
d79e426fb6
migration_manager: add prepare_keyspace_update_announcement() function
...
The function only generates mutations for the announcement, but does not
send them out. Will be used by the later patches.
2021-12-11 12:31:07 +02:00
Gleb Natapov
456d2e28c3
cql3: move CREATE KEYSPACE statement to prepare_schema_mutations() api
2021-12-11 12:31:07 +02:00
Gleb Natapov
011f38a2f1
migration_manager: add prepare_new_keyspace_announcement() function
...
The function only generates mutations for the announcement, but does not
send them out. Will be used by the later patches.
2021-12-11 12:31:07 +02:00
Gleb Natapov
edff0cf4db
cql3: move ALTER TYPE statement to prepare_schema_mutations() api
2021-12-11 12:31:07 +02:00
Gleb Natapov
db1c9cec20
cql3: move ALTER VIEW statement to prepare_schema_mutations() api
2021-12-11 12:31:07 +02:00
Gleb Natapov
94bc34bb20
cql3: factor our mutation creation code into a separate function for ALTER VIEW
...
The function will be used in the next patch.
2021-12-11 12:31:07 +02:00
Gleb Natapov
a4afc69b87
migration_manager: add prepare_view_update_announcement() function
...
The function only generates mutations for the announcement, but does not
send them out. Will be used by the later patches.
2021-12-11 12:31:07 +02:00
Gleb Natapov
82acc9aa05
cql3: move CREATE VIEW statement to prepare_schema_mutations() api
2021-12-11 12:31:07 +02:00
Gleb Natapov
c294d7b1ca
cql3: factor our mutation creation code into a separate function for CREATE VIEW statement
...
The function will be used in the next patch.
2021-12-11 12:31:07 +02:00
Gleb Natapov
3f47210374
migration_manager: add prepare_new_view_announcement() function
...
The function only generates mutations for the announcement, but does not
send them out. Will be used by the later patches.
2021-12-11 12:31:07 +02:00
Gleb Natapov
af6b3d985d
cql3: move ALTER TABLE statement to prepare_schema_mutations() api
2021-12-11 12:31:07 +02:00
Gleb Natapov
688efff6b5
cql3: factor our mutation creation code into a separate function for ALTER TABLE
...
The function will be used in the next patch.
2021-12-11 12:31:07 +02:00
Gleb Natapov
7cc629980b
migration_manager: add prepare_column_family_update_announcement() function
...
The function only generates mutations for the announcement, but does not
send them out. Will be used by the later patches.
2021-12-11 12:31:07 +02:00
Gleb Natapov
5af2c342a3
migration_manager: add prepare_update_type_announcement() function
...
The function only generates mutations for the announcement, but does not
send them out. Will be used by the later patches.
2021-12-11 12:31:07 +02:00
Gleb Natapov
67661b6e66
cql3: move CREATE TYPE statement to prepare_schema_mutations() api
2021-12-11 12:31:07 +02:00
Gleb Natapov
5649daf76a
migration_manager: add prepare_new_type_announcement() function
...
The function only generates mutations for the announcement, but does not
send them out. Will be used by the later patches.
2021-12-11 12:31:07 +02:00
Gleb Natapov
5e9af3c414
cql3: move CREATE TABLE statement to prepare_schema_mutations() api
2021-12-11 12:31:07 +02:00
Gleb Natapov
20dbd717ff
migration_manager: add prepare_new_column_family_announcement() function
...
The function only generates mutations for the announcement, but does not
send them out. Will be used by the later patches.
2021-12-11 12:31:07 +02:00
Gleb Natapov
b2af64ec5e
cql3: introduce schema_altering_statement::prepare_schema_mutations() as announce_migration() alternative
...
Instead of announcing schema mutations the new function will return
them. The caller is responsible to announce them. To easy the transition
make the API optional. Statements that do not have it will use old
announce_migration() method.
2021-12-11 12:31:07 +02:00
Gleb Natapov
2f95a29209
migration_manager: add include_keyspace() function
...
Currently a keyspace mutation is included into schema mutation list just
before announcement. Move the inclusion to a separate function. It will
be used later when instead of announcing new schema the mutation array
will be returned.
2021-12-11 12:31:07 +02:00
Botond Dénes
04306d762f
tools/scylla-sstables: remove unused variables and captures
...
Signed-off-by: Botond Dénes <bdenes@scylladb.com >
Message-Id: <20211210142949.527545-1-bdenes@scylladb.com >
2021-12-10 18:24:08 +03:00
Juliusz Stasiewicz
351f142791
cdc/check_and_repair_cdc_streams: ignore LEFT endpoints
...
When `check_and_repair_cdc_streams` encountered a node with status LEFT, Scylla
would throw. This behavior is fixed so that LEFT nodes are simply ignored.
Fixes #9771
Closes #9778
2021-12-10 15:28:14 +01:00
Raphael S. Carvalho
e0758fded1
compaction_manager: make get_compaction_state() private
...
internal method that should never be directly used by the outside
world.
Signed-off-by: Raphael S. Carvalho <raphaelsc@scylladb.com >
Message-Id: <20211210120806.19233-1-raphaelsc@scylladb.com >
2021-12-10 17:19:24 +03:00
Tomasz Grabiec
4d302dfa1a
Merge "Fix exception safety of rows insertion" from Pavel Emelyanov
...
There are several places that (still) use throwing b-tree .insert_before()
method and don't manage the inserted object lifetime. Some of those places
also leave the leaked rows_entry on the LRU delaying the assertion failure
by the time those entries get evicted (#9728 )
To prevent such surprises in the future, the set removes the non-safe
inserters from the B-tree code. Actually most of this set is that removal
plus preparations for reviewability.
* xemul/br-rows-insertion-exception-safety-2:
btree: Earnestly discourage from insertion of plain references
row-cache: Handle exception (un)safety of rows_entry insertion
partition_snapshot_row_cursor: Shuffle ensure_result creation
mutation_partition: Use B-tree insertion sugar
tests: Make B-tree tests use unique-ptrs for insertion
2021-12-10 13:55:18 +01:00
Pavel Emelyanov
6b4b170025
btree: Earnestly discourage from insertion of plain references
...
Signed-off-by: Pavel Emelyanov <xemul@scylladb.com >
2021-12-10 12:35:12 +03:00
Pavel Emelyanov
ee103636ac
row-cache: Handle exception (un)safety of rows_entry insertion
...
The B-tree's insert_before() is throwing operation, its caller
must account for that. When the rows_entry's collection was
switched on B-tree all the risky places were fixed by ee9e1045 ,
but few places went under the radar.
In the cache_flat_mutation_reader there's a place where a C-pointer
is inserted into the tree, thus potentially leaking the entry.
In the partition_snapshot_row_cursor there are two places that not
only leak the entry, but also leave it in the LRU list. The latter
it quite nasty, because those entry can be evicted, eviction code
tries to get rows_entry iterator from "this", but the hook happens
to be unattached (because insertion threw) and fails the assert.
fixes : #9728
Signed-off-by: Pavel Emelyanov <xemul@scylladb.com >
2021-12-10 12:35:12 +03:00