Commit Graph

26007 Commits

Author SHA1 Message Date
Botond Dénes
8287cdb2ff scripts/build-help.sh: extend help text with more targets
Mention executables (scylla, tools and tests) as well as how to build
individual object files and how to verify individual headers. Also
mention the not-at-all obvious trick of how to build tests with debug
symbols.

Signed-off-by: Botond Dénes <bdenes@scylladb.com>
Message-Id: <20210416131950.175413-1-bdenes@scylladb.com>
2021-04-19 06:33:01 +02:00
Tomasz Grabiec
dbd0b9a3ef gdb: Fix miscalculation of small pool memory usage "scylla memory"
It should not count free pages which used to belong to a given pool.
Message-Id: <20210415175923.683555-1-tgrabiec@scylladb.com>
2021-04-18 14:03:17 +03:00
Tomasz Grabiec
68cde23912 gdb: Fix --size option of "scylla task_histogram"
By default, argparse will provide the value of the option as str.
Later, we compare it with int, which will be always False. Fix by
telling argparse to provide as int.
Message-Id: <20210415182149.686355-1-tgrabiec@scylladb.com>
2021-04-18 14:03:17 +03:00
Botond Dénes
8a43a11f7b scylla-gdb.py: get_base_class_offset(): make sure offset is returned as int
Looks like in python 3, division automatically yields a double/float,
even if both operands are integers. This results in
get_base_class_offset() returning a double/float, which breaks pointer
arithmetics (which is what the returned value is used for), because now
instead of decrementing/incrementing the pointer, the pointer will be
converted to a double itself silently, then back to some corrupt pointer
value. One user visible effect is `intrusive_list` being broken, as it
uses the above method to calculate the member type pointer from the node
pointers.
Fix by coercing the returned value to int.

Signed-off-by: Botond Dénes <bdenes@scylladb.com>
Message-Id: <20210415080034.167762-1-bdenes@scylladb.com>
2021-04-18 14:03:17 +03:00
Pavel Emelyanov
5ecbc33be5 database.*: Remove unused headers
The database.hh is the central recursive-headers knot -- it has ~50
includes. This patch leaves only 34 (it remains the champion though).
Similar thing for database.cc.
Both changes help the latter compile ~4% faster :)

Signed-off-by: Pavel Emelyanov <xemul@scylladb.com>
Message-Id: <20210414183107.30374-1-xemul@scylladb.com>
2021-04-18 14:03:17 +03:00
Nadav Har'El
8751728314 Merge 'Improve validation of "enable", "postimage" and "ttl" CDC options' from Piotr Grabowski
First commit:
In the first commit, add validation of `enable` and `postimage` CDC options. Both options are boolean options, but previously they were not validated, meaning you could issue a query:

```
CREATE TABLE ks.t(pk int, PRIMARY KEY(pk)) WITH cdc = {'enabled': 'dsfdsd'};
```

and it would be executed without any errors, silently interpreting `dsfdsd` as false.

The first commit narrows possible values of those boolean CDC options to `false`, `true`, `0`, `1`. After applying this change, issuing the query above would result in this error message:

```
ConfigurationException: Invalid value for CDC option "enabled": dsfdsd
```

I actually encountered this lacking validation myself, as I mistakenly issued a query:
```
CREATE TABLE ks.t(pk int, PRIMARY KEY(pk)) WITH cdc = {'enabled': true, 'preimage': true, 'postimage': 'full'};
```
incorrectly assigning `full` to `postimage`, instead of `preimage`. However, before this commit, this query ran correctly and it interpreted `full` as `false` and disabled postimages altogether.

Second commit:
The second commit improves the error message of invalid `ttl` CDC option:

Before:
```
CREATE TABLE ks.t(pk int, PRIMARY KEY(pk)) WITH cdc = {'enabled': true, 'ttl': 'invalid'};
ServerError: stoi
```

After:
```
CREATE TABLE ks.t(pk int, PRIMARY KEY(pk)) WITH cdc = {'enabled': true, 'ttl': 'kgjhfkjd'};
ConfigurationException: Invalid value for CDC option "ttl": kgjhfkjd
```

```
CREATE TABLE ks.t(pk int, PRIMARY KEY(pk)) WITH cdc = {'enabled': true, 'ttl': '75747885787487'};
ConfigurationException: Invalid CDC option: ttl too large
```

Closes #8486

* github.com:scylladb/scylla:
  cdc: improve exception message of invalid "ttl"
  cdc: add validation of "enable" and "postimage"
2021-04-15 11:59:41 +02:00
Takuya ASADA
cbbd5b2b6f unified: abort install when non-bash shell detected
On Debian variants, sh -x ./install.sh will fail since our script in
written in bash, and /bin/sh in Debian variants is dash, not bash.

So detect non-bash shell and print error message, let users to run in
bash.

Fixes #8479

Closes #8484
2021-04-15 11:59:41 +02:00
Avi Kivity
935378fa53 main: start background reclaim before bootstrap
We start background reclaim after we bootstrap, so bootstrap doesn't
benefit from it, and sees long stalls.

Fix by moving background reclaim initialization early, before
storage_service::join_cluster().

(storage_service::join_cluster() is quite odd in that main waits
for it synchronously, compared to everything else which is just
a background service that is only initialized in main).

Fixes #8473.

Closes #8474
2021-04-15 11:59:41 +02:00
Raphael S. Carvalho
84f7ae2c82 table: remove unneeded code as sstables are not shared anymore
given that resharding is now a synchronous mandatory step, before
table is populated, snapshot() can now get rid of code which takes
into account whether or not a sstable is shared.

Signed-off-by: Raphael S. Carvalho <raphaelsc@scylladb.com>
Reviewed-by: Benny Halevy <bhalevy@scylladb.com>
Message-Id: <20210414121549.85858-1-raphaelsc@scylladb.com>
2021-04-15 11:59:41 +02:00
Avi Kivity
b19d318701 Update seastar submodule
* seastar d2dcda96bb...0b2c25d133 (4):
  > reactor: reactor_backend_epoll: stop using signals for high resolution timers
  > reactor: move task_quota_timer_thread_fn from reactor to reactor_backend_epoll
  > Merge "Report maximum IO lenghts via file API" from Pavel E
  > Merge "Improve efficiency of io-tester" from Pavel E
2021-04-15 11:59:41 +02:00
Piotr Grabowski
61c8e196be cdc: improve exception message of invalid "ttl"
Improve the exception message of providing invalid "ttl" value to the
table.

Previously, if you executed a CREATE TABLE query with invalid "ttl"
value, you would get a non-descriptive error message:

CREATE TABLE ks.t(pk int, PRIMARY KEY(pk)) WITH cdc = {'enabled': true, 'ttl': 'invalid'};
ServerError: stoi

This commit adds more descriptive exception messages:

CREATE TABLE ks.t(pk int, PRIMARY KEY(pk)) WITH cdc = {'enabled': true, 'ttl': 'kgjhfkjd'};
ConfigurationException: Invalid value for CDC option "ttl": kgjhfkjd

CREATE TABLE ks.t(pk int, PRIMARY KEY(pk)) WITH cdc = {'enabled': true, 'ttl': '75747885787487'};
ConfigurationException: Invalid CDC option: ttl too large
2021-04-14 17:40:23 +02:00
Piotr Grabowski
10390afc10 cdc: add validation of "enable" and "postimage"
Add validation of "enable" and "postimage" CDC options. Both options
are boolean options, but previously they were not validated, meaning
you could issue a query:

CREATE TABLE ks.t(pk int, PRIMARY KEY(pk)) WITH cdc = {'enabled': 'dsfdsd'};

and it would be executed without any errors, silently interpreting
"dsfdsd" as false.

This commit narrows possible values of those boolean CDC options to
false, true, 0, 1. After applying this change, issuing the query above
would result in this error message:

ConfigurationException: Invalid value for CDC option "enabled": dsfdsd
2021-04-14 17:36:38 +02:00
Nadav Har'El
4cf21f3a0f cql-pytest: update run-cassandra script for Java 11
This patch fixes cql-pytest/run-cassandra to work on systems which
default to Java 11, including Fedora 33.

Recent versions of Cassandra can run on Java 11 fine, but requires a
bunch of weird JVM options to work around its JPMS (Java Platform Module
System) feature. Cassandra's start scripts require these options to
be listd in conf/jvm11-server.options, which is read by the startup
script cassandra.in.sh.

Because our "run-cassandra" builds its own "conf" directory, we need
to create a jvm11-server.options file in that directory. This is ugly,
but unfortunately necessary if cql-pytest/run-cassandra is to run with
on systems defaulting to Java 11.

Signed-off-by: Nadav Har'El <nyh@scylladb.com>
Message-Id: <20210406220039.195796-1-nyh@scylladb.com>
2021-04-14 13:16:00 +02:00
Asias He
9ea57dff21 gossip: Relax failure detector update
We currently only update the failure detector for a node when a higher
version of application state is received. Since gossip syn messages do
not contain application state, so this means we do not update the
failure detector upon receiving gossip syn messages, even if a message
from peer node is received which implies the peer node is alive.

This patch relaxes the failure detector update rule to update the
failure detector for the sender of gossip messages directly.

Refs #8296

Closes #8476
2021-04-14 13:16:00 +02:00
Tomasz Grabiec
320f6bf220 Merge 'test: perf: perf_simple_query: collect allocation and task statistics' from Avi Kivity
Calculate and display the number of memory allocations and tasks
executed per operation. Sample results (--smp 1):

180022.46 tps (90 allocs/op, 20 tasks/op)
178963.44 tps (90 allocs/op, 20 tasks/op)
178702.41 tps (90 allocs/op, 20 tasks/op)
177679.74 tps (90 allocs/op, 20 tasks/op)
179539.36 tps (90 allocs/op, 20 tasks/op)

median 178963.44 tps (90 allocs/op, 20 tasks/op)
median absolute deviation: 575.92
maximum: 180022.46
minimum: 177679.74

This allows less noisy tracking of how some changes impact performance.

Closes #8425

* github.com:scylladb/scylla:
  test: perf: perf_simple_query: collect allocation and task statistics
  perf: deinline some functions in perf.hh
2021-04-14 13:16:00 +02:00
Kamil Braun
5c7ed7a83f time_series_sstable_set: return partition start if some sstables were ck-filtered out
When a particular partition exists in at least one sstable, the cache
expects any single-partition query to this partition to return a `partition_start`
fragment, even if the result is empty.

In `time_series_sstable_set::create_single_key_sstable_reader` it could
happen that all sstables containing data for the given query get
filtered out and only sstables without the relevant partition are left,
resulting in a reader which immediately returns end-of-stream (while it
should return a `partition_start` and if not in forwarding mode, a
`partition_end`). This commit fixes that.

We do it by extending the reader queue (used by the clustering reader
merger) with a `dummy_reader` which will be returned by the queue as
the very first reader. This reader only emits a `partition_start` and,
if not in forwarding mode, a `partition_end` fragment.

Fixes #8447.

Closes #8448
2021-04-14 13:16:00 +02:00
Calle Wilund
03590c8254 commitlog_test: Add test for deadlock in shutdown w. segment wait
Refs #8438

Ensures shutting down (well behaved) works even if an allocating
path is stuck waiting for a new segment - i.e. other aspect of

Closes #8475
2021-04-14 13:16:00 +02:00
Michael Livshin
4ccb1b3a2f build: add nix-shell support
Support native building & unit testing in the Nix ecosystem under
nix-shell.

Actual dist packaging for Nixpkgs/NixOS is not there (yet?), because:

* Does not exactly seem like a huge priority.

* I don't even have a firm idea of how much work it would entail (it
  certainly does not need the ld.so trickery, so there's that.  But at
  least some work would be needed, seeing how ScyllaDB needs to
  integrate with its environment and NixOS is a little unorthodox).

Signed-off-by: Michael Livshin <michael.livshin@scylladb.com>
Message-Id: <20210413110508.5901-4-michael.livshin@scylladb.com>
2021-04-14 13:15:59 +02:00
Michael Livshin
d87e751182 build: add a structural way to distro-extend configure.py
For now just for additional cflags, ldflags & cmake arguments.

Signed-off-by: Michael Livshin <michael.livshin@scylladb.com>
Message-Id: <20210413110508.5901-3-michael.livshin@scylladb.com>
2021-04-14 13:15:59 +02:00
Michael Livshin
5cb4005e84 build: extend configure.py's subprocess environment properly
The `env` parameter to `subprocess.Popen()` and friends, when it is
not `None`, is not an addition to the subprocess environment but the
_whole_ subprocess environment.

Signed-off-by: Michael Livshin <michael.livshin@scylladb.com>
Message-Id: <20210413110508.5901-2-michael.livshin@scylladb.com>
2021-04-14 13:15:59 +02:00
Avi Kivity
b756693e64 Merge "mutation_query: move query methods into table" from Botond
"
These methods are generic ways to query a mutation source. At least they
used to be, but nowadays they are pretty specific to how tables are
queried -- they use a querier cache to lookup queriers from and save
them into. With the coming changes to how permits are obtained, they are
about to get even more specific to tables. Instead of forcing the
genericity and keep adding new parameters, this patchset bites the
bullet and moves them to table. `data_query()` is inlined into
`table::query()`, while `mutation_query()` is replaced with
`table::mutation_query()`.
The only other users besides table are tests and they are adjusted to
use similarly named local methods that just combine the right querier
with the right result builder. This combination is what the tests really
want to test, as this is also what is used by the table methods behind
the scenes.

Tests: unit(release, debug)
"

* 'mutation-query-move-query-methods-into-table/v1' of https://github.com/denesb/scylla:
  mutation_query: remove now unused mutation_query()
  test: mutation_query_test: use local mutation_query() implementation
  database: mutation_query(): use table::mutation_query()
  table: add mutation_query()
  query: remove the now unused data_query()
  test: mutation_query_test: use local data_query() implementation
  table: query(): inline data_query() code into query()
  table: make query() a coroutine
2021-04-14 13:15:59 +02:00
Tomasz Grabiec
163f2be277 Merge 'Make sure that cache_flat_mutation_reader::do_fill_buffer does not fast forward finished underlying reader' from Piotr Jastrzębski
It is possible that a partition is in cache but is not present in sstables that are underneath.
In such case:
1. cache_flat_mutation_reader will fast forward underlying reader to that partition
2. The underlying reader will enter the state when it's empty and its is_end_of_stream() returns true
3. Previously cache_flat_mutation_reader::do_fill_buffer would try to fast forward such empty underlying reader
4. This PR fixes that

Test: unit(dev)

Fixes #8435
Fixes #8411

Closes #8437

* github.com:scylladb/scylla:
  row_cache: remove redundant check in make_reader
  cache_flat_mutation_reader: fix do_fill_buffer
  read_context: add _partition_exists
  read_context: remove skip_first_fragment arg from create_underlying
  read_context: skip first fragment in ensure_underlying
2021-04-13 00:45:10 +02:00
Piotr Jastrzebski
cb3dbb1a4b row_cache: remove redundant check in make_reader
This check is always true because a dummy entry is added at the end of
each cache entry. If that wasn't true, the check in else-if would be
an UB.

Signed-off-by: Piotr Jastrzebski <piotr@scylladb.com>
2021-04-12 21:12:33 +02:00
Piotr Jastrzebski
1f644df09d cache_flat_mutation_reader: fix do_fill_buffer
Make sure that when a partition does not exist in underlying,
do_fill_buffer does not try to fast forward withing this nonexistent
partition.

Test: unit(dev)

Fixes #8435
Fixes #8411

Signed-off-by: Piotr Jastrzebski <piotr@scylladb.com>
2021-04-12 21:08:40 +02:00
Piotr Jastrzebski
ceab5f026d read_context: add _partition_exists
This new state stores the information whether current partition
represented by _key is present in underlying.

Signed-off-by: Piotr Jastrzebski <piotr@scylladb.com>
2021-04-12 20:57:20 +02:00
Piotr Jastrzebski
b3b68dc662 read_context: remove skip_first_fragment arg from create_underlying
All callers pass false for its value so no need to keep it around.

Signed-off-by: Piotr Jastrzebski <piotr@scylladb.com>
2021-04-12 19:51:06 +02:00
Piotr Jastrzebski
088a02aafd read_context: skip first fragment in ensure_underlying
This was previously done in create_underlying but ensure_underlying is
a better place because we will add more related logic to this
consumption in the following patches.

Signed-off-by: Piotr Jastrzebski <piotr@scylladb.com>
2021-04-12 19:46:04 +02:00
Avi Kivity
fcc17d43a6 treewide: correct mislicensed source files
alternator/expressions.g had both AGPL and proprietary licensing. The
proprietary one is removed.

gms/inet_address_serializer.hh had only a proprietary license; it is
replaced by the AGPL.

Fixes #8465.

Closes #8466
2021-04-12 17:42:59 +03:00
Avi Kivity
e3db889057 Merge 'Introduce service levels' from Piotr Sarna
This series introduces service level syntax borrowed from https://docs.scylladb.com/using-scylla/workload-prioritization/ , but without workload prioritization itself - just for the sake of using identical syntax to provide different parameters later. The new parameters may include:
 * per-service-level timeouts
 * oltp/olap declaration, which may change the way Scylla treats long requests - e.g. time them out (the oltp way) or keep them sustained with empty pages (the olap way)

Refs #7617

Closes #7867

* github.com:scylladb/scylla:
  transport: initialize query state with service level controller
  main: add initializing service level data accessor
  service: make enable_shared_from_this inheritance public
  cql3: add SERVICE LEVEL syntax (without an underscore)
  unit test: Add unit test for per user sla syntax
  cql: Add support for service level cql queries
  auth: Add service_level resource for supporting in authorization of cql service_level
  cql: Support accessing service_level_controller from query state
  instantiate and initialize the service_level_controller
  qos: Add a standard implementation for service level data accessor
  qos: add waiting for the updater future
  service/qos: adding service level controller
  service_levels: Add documentation for distributed tables
  service/qos: adding service level table to the distributed keyspace
  service/qos: add common definitions
  auth: add support for role attributes
2021-04-12 17:34:43 +03:00
Piotr Sarna
26ee6aa1e9 transport: initialize query state with service level controller
Query state should be aware of the service level controller in order
to properly serve service-level-related CQL queries.
2021-04-12 16:31:27 +02:00
Piotr Sarna
32bcbe59ad main: add initializing service level data accessor
The accessor must be set up in order to be able to use
statement related to service level management.
2021-04-12 16:31:27 +02:00
Piotr Sarna
3626bc253d service: make enable_shared_from_this inheritance public
Without being public, making shared pointer from the service level
accessor is not accessible outside of the class.
2021-04-12 16:31:27 +02:00
Piotr Sarna
c7f66d6fdd cql3: add SERVICE LEVEL syntax (without an underscore)
In order for the syntax to be more natural, it's now possible
to use SERVICE LEVEL instead of SERVICE_LEVEL in all appropriate
places. The old syntax is supported as well.
2021-04-12 16:31:27 +02:00
Eliran Sinvani
144fe02c23 unit test: Add unit test for per user sla syntax
This commit adds the infrastructure needed to test per user sla,
more specificaly, a service level accessor that triggers the
update_service_levels_from_distributed_data function uppon any
change to the dystributed sla data.
A test was added that indirectly consumes this infrastructure by
changing the distributed service level data with cql queries.
Message-Id: <23b2211e409446c4f4e3e57b00f78d9ff75fc978.1609249294.git.sarna@scylladb.com>
2021-04-12 16:31:26 +02:00
Eliran Sinvani
2701481cbc cql: Add support for service level cql queries
This patch adds support for new service level cql queries.
The queries implemented are:
CREATE SERVICE_LEVEL [IF NOT EXISTS] <service_level_name>
ALTER SERVICE_LEVEL <service_level_name> WITH param = <something>
DROP SERVICE_LEVEL [IF EXISTS] <service_level_name>
ATTACH SERVICE_LEVEL <service_level_name> TO <role_name>
DETACH SERVICE_LEVEL FROM <role_name>
LIST SERVICE_LEVEL <service_level_name>
LIST ALL SERVICE_LEVELS
LIST ATTACHED SERVICE_LEVEL OF <role_name>
LIST ALL ATTACHED SERVICE_LEVELS
2021-04-12 16:30:01 +02:00
Eliran Sinvani
a88929da15 auth: Add service_level resource for supporting in authorization of cql service_level
queries

In order to be able to manage service_level configuration one must be authorized
to do so, or to be a superuser. This commit adds the support for service_levels
resource. Since service_levels are relative, reconfiguring one service level is not locallized
only to that service level and will affect the QOS for all of the service levels,
so there is not much sense of granting permissions to manage individual service_levels.
This is why only root resource named service_levels that  represents all service levels is used.
This commit also implements the unit test additions for the newly introduced resource.
Message-Id: <81ab16fa813b61be117155feea405da6266921e3.1609237687.git.sarna@scylladb.com>
2021-04-12 16:01:04 +02:00
Eliran Sinvani
f78707d3fb cql: Support accessing service_level_controller from query state
In order to implement service level cql queries, the queries objects
needs access to the service_level_controller object when processing.
This patch adds this access by embedding it into the query state object.
In order to accomplish the above the query processor object needs an
access to service_level_controller in order to instantiate the query state.
Message-Id: <68f5a7796068a49d9cd004f1cbf34bdf93b418bc.1609234193.git.sarna@scylladb.com>
2021-04-12 16:01:04 +02:00
Eliran Sinvani
e173eaa032 instantiate and initialize the service_level_controller
This patch adds the initialization of service_level_controller. It
constructs the distributed service and start the watch loop for
distributed data changes.
Message-Id: <e97661194833d576aa39b3e7886366590f272612.1609175402.git.sarna@scylladb.com>
2021-04-12 16:01:04 +02:00
Eliran Sinvani
8493e19840 qos: Add a standard implementation for service level data accessor
service_level_controller defines an interface for accessing the service
level distributed data, this patch implements a standard implementation
of the interface that delegates to the system distributed keyspace.
Message-Id: <25e68302f6f4d4fe5fcb66ea19159ad68506ba64.1609175314.git.sarna@scylladb.com>
2021-04-12 16:01:04 +02:00
Piotr Sarna
41951d34ad qos: add waiting for the updater future
The distributed data updated used to spawn a future without waiting
for it. It was quite safe, since the future had its own abort source,
but it's better to remember it and wait for it during stop() anyway.
2021-04-12 16:01:04 +02:00
Eliran Sinvani
a54ea4667b service/qos: adding service level controller
adding the service level controller implementation. The implementation
follows the design in:
https://docs.google.com/document/d/1RrSTZ3ZX86-YDt2POwAVwFeKN9uX8frEvATJda5n1FU/edit?usp=sharing
Some interfaces were added for registration with system componnents.
The method of registration is chosen over a constructor parameter, due to
the componnets being initialized prior to the service level controller being created.
Message-Id: <e9c4e7d5b411062b6a553f5c6861e7875cd71d2c.1609171761.git.sarna@scylladb.com>
2021-04-12 16:01:04 +02:00
Eliran Sinvani
3ecdab30a1 service_levels: Add documentation for distributed tables
This patch adds documentation for the distributed tables
used for service_level feature and their meaning and usage.
Message-Id: <5b7d2be166c2381ed33094b4545fafe0f142583f.1609170862.git.sarna@scylladb.com>
2021-04-12 16:01:03 +02:00
Eliran Sinvani
dd74556ad9 service/qos: adding service level table to the distributed keyspace
This patch adds the service level table and functions to manipulate it
to the distributed keyspace.

Message-Id: <b6cb7f311ac1ee6802d8f3d78eac9cf40fe21f68.1609161341.git.sarna@scylladb.com>
2021-04-12 15:58:09 +02:00
Eliran Sinvani
4fea0762c2 service/qos: add common definitions
Adding common definitions that will be used by the
performance isolation classes. Mainly defines the
common ground for configuring a service level
through the service level options structure.

Message-Id: <12476f4a8e21af3a4c7a892683940698f3beacce.1609160860.git.sarna@scylladb.com>
2021-04-12 15:58:09 +02:00
Eliran Sinvani
23e889d710 auth: add support for role attributes
In the general case roles might come with attributes attached to them
these attributes can originate in mechanisms such as LDAP where in
the undelying directory each entity can have a key:value data structure.
This patch add support for such attributes in the role manager interface,
it also implements the attribute support in the standard role
manager in the form of a table with an attribute map in the distributed system keyspace.
Message-Id: <f53c74a7ac315c4460ff370ea6dbb1597821edc2.1609158013.git.sarna@scylladb.com>
2021-04-12 15:58:09 +02:00
Ivan Prisyazhnyy
0836efd830 tracing: test/boost/tracing: fix use after free
fixes AddressSanitizer: stack-buffer-underflow on address 0x7ffd9a375820 at pc 0x555ac9721b4e bp 0x7ffd9a374e70 sp 0x7ffd9a374620

Backend registry holds a unique pointer to the backend implementation
that must outlive the whole tracing lifetime until the shutdown call.

So it must be catched/moved before the program exits its scope by
passing out the lambda chain.

Regarding deletion of the default destructor: moving object requires
a move constructor (for do_with) that is not implicitly provided if
there is a user-defined object destructor defined even tho its impl
is default.

Signed-off-by: Ivan Prisyazhnyy <ivan@scylladb.com>

Closes #8461
2021-04-12 16:44:07 +03:00
Avi Kivity
bad4924868 Merge 'Add a ninja help build target' from Pekka Enberg
This pull request adds a "ninja help" build target in hopes of making
the different build targets more discoverable to developers.

Closes #8454

* github.com:scylladb/scylla:
  building.md: Document "ninja help" target
  configure.py: "ninja help" target
  building.md: Document "ninja <mode>-dist" target
  configure.py: Add <mode>-dist target as alias for dist-<mode>
2021-04-12 16:30:37 +03:00
Avi Kivity
80529f7097 Revert "nonroot: generate scylla_sysconfdir.py correctly"
This reverts commit e991e01f2e. It
breaks installation on CentOS 7.

Fixes #8456.
2021-04-12 16:19:39 +03:00
Gleb Natapov
9fdb3d3d98 raft: stop using seastar::pipe to pass log entries to apply_fiber
Stop use seastar::pipe and use seastar::queue directly to pass log
entries to apply_fiber. The pipe is a layer above queue anyway and it
adds functionality that we do not need (EOS) and hinds functionality that
we do (been able to abort()). This fixes a crash during abort where the
pipe was uses after been destroyed.

Message-Id: <YHLkPZ9+sdLhwcjZ@scylladb.com>
2021-04-12 13:18:03 +02:00
Avi Kivity
a24771125e Update seastar submodule
* seastar 1c1f610ceb...d2dcda96bb (3):
  > closeable: add with_closeable and with_stoppable helpers
  > circleci: relax concurrency of the build process
  > logger: failed_to_log: print source location and format string
2021-04-12 12:52:01 +03:00