Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
90 commits
Select commit Hold shift + click to select a range
768516c
ragel: return consumption_result from the parser call operator
travisdowns Jul 30, 2026
90cedbf
demos, tests: migrate the remaining obsolete input_stream consumers
travisdowns Jul 30, 2026
63fe943
Merge 'ragel, http: migrate obsolete input_stream consumers to consum…
xemul Jul 31, 2026
2ebea85
core/reactor: don't read the thread-local shard count in smp::qs_deleter
tchaikov Jun 26, 2026
d9e8305
log: avoid deprecated fmt12 format string conversion warnings
StephanDollberg Jul 28, 2026
fb8a691
util/backtrace: Remove deprecated simple_backtrace constructors
xemul Jul 31, 2026
23d54bd
rpc: don't abort the process on missing client_info auxiliary data
emdroid Jul 30, 2026
585a90e
httpd: added listener index to http request
mmaslankaprv Apr 1, 2021
2c8818b
http: enable specifying a content type on exceptions
jcsp Dec 9, 2021
f3c518a
http: don't jsonize exception if has content type
jcsp Dec 9, 2021
68aac4c
http: use base_exception content type in non-json errors
jcsp Dec 9, 2021
c5dd830
metrics: allow multiple metrics::impl instances
Jun 1, 2022
f9ae9d7
metrics: expose metric impl handle to internal api
Jun 22, 2022
4dfa81d
metrics: expose handle in metric_groups_impl
Jul 18, 2022
a5eaa6d
metrics: expose metric impl handle to external api
Jun 22, 2022
af59bf8
metrics: Use handle for impl object
Jun 22, 2022
11652f6
prometheus: support multiple metric impls
Jun 1, 2022
5eb6836
scollectd: select internal metrics implementation
Jun 1, 2022
33b8c98
metrics: Expose 'skip_when_empty' for metrics
Jul 7, 2022
3363acb
metrics: add helpers for creation of replicas
Jul 12, 2022
f09fb2b
metrics: allow for removal of replicated metrics
Jul 11, 2022
b90e2e7
metrics: add metric replication internal interface
Jul 12, 2022
34504f0
metrics: register replicated metrics dinamically
Jul 11, 2022
004df15
metrics: public family replication interface
Jul 12, 2022
214d26c
tests: add metrics replication unit tests
Jul 11, 2022
1ae3229
metrics: Add update_aggregate_labels()
StephanDollberg Oct 19, 2023
3709ded
scheduling_group: expose usage statistics
Aug 8, 2022
3ae12c0
http: rename http client logger
dotnwat Apr 18, 2023
8f51337
Revert default backend to aio
travisdowns May 31, 2023
138e7a3
reactor: refactor timers out of stall_detector
ballard26 May 8, 2023
246a832
tests/unit: refactor stall_detector test functions
ballard26 May 8, 2023
31412a1
core: cpu profiler implementation
ballard26 May 8, 2023
716487f
core/cpu_profiler: avoid taking samples during exception unwinding
ballard26 Aug 28, 2023
bb543c7
tests/cpu_profiler: add test to verify that `on_signal` doesn't allocate
ballard26 Aug 28, 2023
63e0672
tests/cpu_profiler: add tests that ensure correct behavior during exc…
ballard26 Aug 30, 2023
91fd83f
core/cpu_profiler: finer-grain stats for why a sample was dropped
ballard26 Aug 28, 2023
b608365
Store original values from io-priorities yaml
Lazin Sep 25, 2023
92cfb23
core/cpu_profiler: add danger zone escape hatch
rockwotj Apr 4, 2024
83474e0
tests: fix cpu_profiler unit tests
ballard26 Jan 10, 2025
a8b9954
cpu_profiler: include SG in sample
travisdowns Feb 18, 2025
ca8b942
cpu_profiler: test for scheduling groups
travisdowns Feb 18, 2025
e7986d9
stall_detector: fix unused function warning/error
travisdowns Feb 20, 2025
5b99cf9
cpu_profiler: deflake and various fixes
travisdowns Feb 19, 2025
f1dd973
core/internal: refactor signal_mutex into its own header/object
ballard26 May 20, 2025
32d87f9
backtrace: guard libgcc's backtrace to avoid concurrent calls
ballard26 May 20, 2025
2329ef0
backtrace: move guarded_backtrace, build fix
travisdowns Jul 11, 2025
fccb916
cpu_profiler_test: disable if backtrace unimplemented
travisdowns Jul 12, 2025
15fb91a
Revert "util/log: drop unused function"
Apr 25, 2024
0700261
io_queue: add smp header to get full smp def
ballard26 Oct 2, 2024
7f7d46d
treewide: explicitly ignore write/read results in specific areas
ballard26 Oct 3, 2024
ae987f1
core: make reference counting in deleter atomic
ballard26 Oct 15, 2024
0b5a650
core: make custom deleter constructor private
ballard26 Oct 31, 2024
a5d93f1
memcached: use maybe_unsafe_from_deleter for temporary_buffer
travisdowns Mar 30, 2026
d26524c
core: make `deleter::append` private
ballard26 Nov 5, 2024
df8a170
GHA: disable modules build
travisdowns Apr 14, 2025
78fae52
io-queue: Refactor cost function
StephanDollberg Jul 24, 2025
b31a5f4
io-queue: Use max cost function by default
StephanDollberg Jul 24, 2025
be24cd5
io_queue: Adapt tests to max cost function
StephanDollberg Jul 31, 2026
fb4a757
Add scoped to fallback to system alloc
travisdowns May 8, 2025
1d7a1e4
GHA: disable dppk
travisdowns Oct 2, 2025
1ea04eb
net: Permit exceptions out of remote and local address
michael-redpanda Oct 31, 2025
4e259cb
aio_general_context: flush: return short flush on error
bhalevy Aug 15, 2023
d9b7840
aio_general_context: flush: abort on unexpected errors
bhalevy Aug 15, 2023
ac2a563
aio_general_context: Allow more than max_poll() queued iocbs
StephanDollberg Nov 7, 2023
ec28f17
http::request: remove content deprecation
travisdowns Dec 17, 2025
2ec9c4d
memory: reduce large allocation warning to debug level in scoped fall…
travisdowns Feb 5, 2026
6c98b85
opt out of AI training per GitHub policy
rpdevmp Mar 10, 2026
e41f447
tls: add cert_info struct and certificate accessors
travisdowns Mar 31, 2026
d89a005
tls: add reload_callback_with_creds and get_trust_file_blob
travisdowns Mar 31, 2026
eac2b4c
tls: add dn_format enum for RFC2253 distinguished name formatting
travisdowns Mar 31, 2026
ed8fa66
tls: error queue assert to only terminate in debug builds
travisdowns May 5, 2026
ad0f951
util/assert: add SEASTAR_DEBUG_ASSERT
travisdowns May 11, 2026
e88a259
build: add --tls-mode flag and SEASTAR_TLS_DUAL_BACKEND macro
travisdowns May 11, 2026
bfef810
net/tls: statically initialize ERROR_* globals in single-backend builds
travisdowns May 11, 2026
1da5b62
net/tls: rewrite top-of-namespace header comment
travisdowns May 11, 2026
9b016df
core/crypto: rework provider lifecycle for single- and dual-backend b…
travisdowns May 12, 2026
8cab55e
core/crypto: assert provider install/access invariants
travisdowns May 11, 2026
12bb177
ci: add single-backend openssl and dual-backend TLS test jobs
travisdowns May 11, 2026
dbeafac
build: add unordered_dense dependency
WillemKauf Jun 23, 2026
a0947b0
build: add abseil dependency
WillemKauf Jun 23, 2026
7bb0d1a
core: add chunked_vector container
WillemKauf Jun 23, 2026
25ab604
core: add chunked_hash_map container
WillemKauf Jun 23, 2026
8dfbe2e
`core`: use `chunked_hash_map` for label aggregation
WillemKauf Jun 23, 2026
95282e5
`core`: add `chunked_vector_async`
WillemKauf Jun 30, 2026
06b2735
`core`: put c++23 `range` c-tor back in `chunked_vector`
WillemKauf Jun 30, 2026
2fbe714
reactor: Auto enable overprovisioned in k8s on 6.12-7.0
StephanDollberg Jul 6, 2026
24cfcaf
chunked_hash_{map,set}: from-range utility functions for set and hetero
bashtanov Jul 8, 2026
90b960b
`thread`: track context switches in the ucontext variant too
WillemKauf Jul 15, 2026
9455d5d
`cpu_profiler`: avoid taking samples during context switches
WillemKauf Jul 15, 2026
a6ac2ff
cpu_profiler: Make test more robust
StephanDollberg Aug 3, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .github/ai-opt-out
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
opt-out: true
14 changes: 6 additions & 8 deletions .github/workflows/gen-matrix.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@

Uses all-pairs (pairwise) coverage over compiler x standard x mode x
arch for the regular builds, plus an explicit list of special-purpose
jobs (dpdk, cxx-modules, fuzz). All-pairs guarantees that every pair
jobs (dual TLS, OpenSSL TLS, fuzz). All-pairs guarantees that every pair
of parameter values is exercised by at least one job, with far fewer
combinations than the full cartesian product. Excluded pairs (see
EXCLUDED_PAIRS) drop out of regular coverage. The file is round-tripped
Expand Down Expand Up @@ -105,19 +105,17 @@ def _keep_row(row: list[Any]) -> bool:
"compiler": "clang++-22",
"standard": 23,
"arch": "x86",
"mode": "release",
"enables": "--enable-dpdk",
"options": "--cook dpdk --dpdk-machine corei7-avx",
"info": "dpdk, ",
"mode": "debug",
"options": "--tls-mode=both",
"info": "dual TLS, ",
},
{
"compiler": "clang++-22",
"standard": 23,
"arch": "x86",
"mode": "debug",
"enables": "--enable-cxx-modules",
"enable-ccache": False,
"info": "modules, ",
"options": "--tls-mode=openssl",
"info": "OpenSSL TLS, ",
},
{
"compiler": "clang++-22",
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/tests.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,8 @@ jobs:
- {compiler: clang++-21, standard: 26, mode: sanitize, arch: x86}
- {compiler: clang++-21, standard: 26, mode: debug, arch: arm}
- {compiler: clang++-22, standard: 23, arch: x86, mode: dev}
- {compiler: clang++-22, standard: 23, arch: x86, mode: release, enables: --enable-dpdk, options: --cook dpdk --dpdk-machine corei7-avx, info: 'dpdk, '}
- {compiler: clang++-22, standard: 23, arch: x86, mode: debug, enables: --enable-cxx-modules, enable-ccache: false, info: 'modules, '}
- {compiler: clang++-22, standard: 23, arch: x86, mode: debug, options: --tls-mode=both, info: 'dual TLS, '}
- {compiler: clang++-22, standard: 23, arch: x86, mode: debug, options: --tls-mode=openssl, info: 'OpenSSL TLS, '}
- {compiler: clang++-22, standard: 23, arch: x86, mode: fuzz, test-args: -- -R 'Seastar.fuzz.'}
with:
compiler: ${{ matrix.compiler }}
Expand Down
53 changes: 50 additions & 3 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -421,6 +421,35 @@ set (Seastar_GEN_BINARY_DIR ${Seastar_BINARY_DIR}/gen)
include (SeastarDependencies)
seastar_find_dependencies ()

# unordered_dense is header-only and not reliably packaged by distributions.
# When seastar_find_dependencies() did not locate an installed copy (e.g. in
# CI), fetch the pinned version so the build is self-contained. This lives in
# the Seastar build only, not in SeastarDependencies, so consumers that use
# find_package(Seastar) never trigger a download.
if (NOT TARGET unordered_dense::unordered_dense)
include (FetchContent)
FetchContent_Declare (unordered_dense
URL https://github.com/martinus/unordered_dense/archive/f30ed41b58af8c79788e8581fe57a6faf856258e.tar.gz
URL_HASH MD5=0370e4a35c1e573aa6639fde97f0c93f)
FetchContent_GetProperties (unordered_dense)
if (NOT unordered_dense_POPULATED)
# Populate (download) only; we deliberately do not add it as a subproject
# (see below). CMP0169 OLD keeps the bare Populate() form available.
if (POLICY CMP0169)
cmake_policy (SET CMP0169 OLD)
endif ()
FetchContent_Populate (unordered_dense)
endif ()
# Expose the fetched headers as an IMPORTED target rather than building it as
# a subproject, so that install(EXPORT) for Seastar (which PUBLIC-links it)
# does not require exporting a fetched target. Downstream consumers resolve
# unordered_dense themselves via SeastarDependencies.
add_library (unordered_dense_fetched INTERFACE IMPORTED GLOBAL)
set_target_properties (unordered_dense_fetched PROPERTIES
INTERFACE_INCLUDE_DIRECTORIES "${unordered_dense_SOURCE_DIR}/include")
add_library (unordered_dense::unordered_dense ALIAS unordered_dense_fetched)
endif ()

# Private build dependencies not visible to consumers
find_package (ragel 6.10 REQUIRED)
find_package (Threads REQUIRED)
Expand Down Expand Up @@ -529,11 +558,13 @@ seastar_generate_protobuf (
IN_FILE ${CMAKE_CURRENT_SOURCE_DIR}/src/proto/metrics2.proto
OUT_DIR ${Seastar_GEN_BINARY_DIR}/src/proto)

set_option_if_package_is_found (Seastar_GNUTLS GnuTLS)
set_option_if_package_is_found (Seastar_OPENSSL OpenSSL)
option (Seastar_GNUTLS "Enable the GnuTLS-based TLS backend" ON)
option (Seastar_OPENSSL "Enable the OpenSSL-based TLS backend" OFF)

if (NOT Seastar_GNUTLS AND NOT Seastar_OPENSSL)
message (FATAL_ERROR "At least one TLS/crypto backend is required. Install GnuTLS or OpenSSL development packages.")
message (FATAL_ERROR "At least one TLS backend must be enabled. "
"Pass -DSeastar_GNUTLS=ON and/or -DSeastar_OPENSSL=ON, "
"or use configure.py --tls-mode=gnutls|openssl|both.")
endif ()

add_library (seastar
Expand All @@ -552,6 +583,9 @@ add_library (seastar
include/seastar/core/cacheline.hh
include/seastar/core/checked_ptr.hh
include/seastar/core/chunked_fifo.hh
include/seastar/core/chunked_hash_map.hh
include/seastar/core/chunked_vector.hh
include/seastar/core/chunked_vector_async.hh
include/seastar/core/circular_buffer.hh
include/seastar/core/circular_buffer_fixed_capacity.hh
include/seastar/core/condition-variable.hh
Expand Down Expand Up @@ -725,6 +759,7 @@ add_library (seastar
src/core/reactor_backend.cc
src/core/thread_pool.cc
src/core/app-template.cc
src/core/cpu_profiler.cc
src/core/disk_params.cc
src/core/dpdk_rte.cc
src/core/exception_hacks.cc
Expand Down Expand Up @@ -758,6 +793,7 @@ add_library (seastar
src/core/semaphore.cc
src/core/condition-variable.cc
src/core/crypto.cc
src/core/signal_mutex.cc
src/http/api_docs.cc
src/http/common.cc
src/http/file_handler.cc
Expand Down Expand Up @@ -920,6 +956,8 @@ target_link_libraries (seastar
c-ares::cares
fmt::fmt
lz4::lz4
unordered_dense::unordered_dense
absl::hash
PRIVATE
${CMAKE_DL_LIBS}
StdAtomic::atomic
Expand Down Expand Up @@ -1143,6 +1181,15 @@ if (Seastar_OPENSSL)
PRIVATE OpenSSL::SSL OpenSSL::Crypto)
endif ()

if (Seastar_GNUTLS AND Seastar_OPENSSL)
# Public marker: both TLS backends are compiled in, so the active backend is
# selected at reactor startup. Code that needs to handle the no-reactor case
# (e.g. static initializers, unit tests without a reactor) can use this to
# distinguish from the single-backend builds where the backend is fixed at
# compile time and available unconditionally.
target_compile_definitions (seastar PUBLIC SEASTAR_TLS_DUAL_BACKEND)
endif ()

set_option_if_package_is_found (Seastar_IO_URING LibUring)
if (Seastar_IO_URING)
target_compile_definitions (seastar
Expand Down
4 changes: 2 additions & 2 deletions apps/memcached/memcache.cc
Original file line number Diff line number Diff line change
Expand Up @@ -893,7 +893,7 @@ class ascii_protocol {
private:
static void append(std::vector<temporary_buffer<char>>& bufs, const char* buf, size_t size) {
if (size) {
bufs.emplace_back(const_cast<char*>(buf), size, deleter());
bufs.push_back(temporary_buffer<char>::maybe_unsafe_from_deleter(const_cast<char*>(buf), size, deleter()));
}
}

Expand All @@ -917,7 +917,7 @@ class ascii_protocol {

append(bufs, msg_crlf);
append(bufs, item->value());
bufs.emplace_back(const_cast<char*>(msg_crlf), strlen(msg_crlf), make_deleter([item = std::move(item)]{}));
bufs.push_back(temporary_buffer<char>::maybe_unsafe_from_deleter(const_cast<char*>(msg_crlf), strlen(msg_crlf), make_deleter([item = std::move(item)]{})));
}

template <bool WithVersion>
Expand Down
5 changes: 5 additions & 0 deletions cmake/SeastarDependencies.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -99,6 +99,11 @@ macro (seastar_find_dependencies)
"to build a newer fmt locally.")
endif ()
seastar_find_dep (lz4 1.7.3 REQUIRED)
# Not REQUIRED: unordered_dense is header-only and not reliably packaged by
# distributions. When it is not installed, Seastar's own build fetches it
# (see CMakeLists.txt); consumers that lack it must provide it themselves.
seastar_find_dep (unordered_dense)
seastar_find_dep (absl CONFIG REQUIRED)
seastar_find_dep (GnuTLS 3.7.4)
seastar_find_dep (OpenSSL 3.0)
if (Seastar_IO_URING)
Expand Down
5 changes: 5 additions & 0 deletions configure.py
Original file line number Diff line number Diff line change
Expand Up @@ -173,6 +173,9 @@ def resolve_compilers_for_compiler_cache(args, compiler_cache):
arg_parser.add_argument('--verbose', dest='verbose', action='store_true', help='Make configure output more verbose.')
arg_parser.add_argument('--scheduling-groups-count', action='store', dest='scheduling_groups_count', default='16',
help='Number of available scheduling groups in the reactor')
arg_parser.add_argument('--tls-mode', action='store', dest='tls_mode',
choices=['gnutls', 'openssl', 'both'], default='gnutls',
help='TLS backend(s) to enable: gnutls (default), openssl, or both')

add_tristate(
arg_parser,
Expand Down Expand Up @@ -294,6 +297,8 @@ def configure_mode(mode):
'-DBUILD_SHARED_LIBS={}'.format('yes' if mode in ('debug', 'dev') else 'no'),
'-DSeastar_API_LEVEL={}'.format(args.api_level),
'-DSeastar_SCHEDULING_GROUPS_COUNT={}'.format(args.scheduling_groups_count),
'-DSeastar_GNUTLS={}'.format('ON' if args.tls_mode in ('gnutls', 'both') else 'OFF'),
'-DSeastar_OPENSSL={}'.format('ON' if args.tls_mode in ('openssl', 'both') else 'OFF'),
tr(args.exclude_tests, 'EXCLUDE_TESTS_FROM_ALL'),
tr(args.exclude_apps, 'EXCLUDE_APPS_FROM_ALL'),
tr(args.exclude_demos, 'EXCLUDE_DEMOS_FROM_ALL'),
Expand Down
18 changes: 18 additions & 0 deletions cooking_recipe.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -336,3 +336,21 @@ cooking_ingredient (lz4
CONFIGURE_COMMAND <DISABLE>
BUILD_COMMAND <DISABLE>
INSTALL_COMMAND ${make_command} PREFIX=<INSTALL_DIR> install)

# Header-only library used by chunked_hash_map. Pinned to the same commit
# (v4.4.0) consumed by Redpanda.
cooking_ingredient (unordered_dense
EXTERNAL_PROJECT_ARGS
URL https://github.com/martinus/unordered_dense/archive/f30ed41b58af8c79788e8581fe57a6faf856258e.tar.gz
URL_MD5 0370e4a35c1e573aa6639fde97f0c93f)

# Used by chunked_hash_map for absl::Hash support. Pinned to the same LTS
# release (20250814.1) consumed by Redpanda.
cooking_ingredient (absl
EXTERNAL_PROJECT_ARGS
URL https://github.com/abseil/abseil-cpp/releases/download/20250814.1/abseil-cpp-20250814.1.tar.gz
URL_MD5 d4d3c25f78e28d61ad83e54cd1116933
CMAKE_ARGS
-DABSL_PROPAGATE_CXX_STD=ON
-DABSL_ENABLE_INSTALL=ON
-DBUILD_TESTING=OFF)
8 changes: 4 additions & 4 deletions demos/line_count_demo.cc
Original file line number Diff line number Diff line change
Expand Up @@ -42,14 +42,14 @@ struct reader {
size_t count = 0;

// for input_stream::consume():
using unconsumed_remainder = std::optional<temporary_buffer<char>>;
future<unconsumed_remainder> operator()(temporary_buffer<char> data) {
using consumption_result_type = consumption_result<char>;
future<consumption_result_type> operator()(temporary_buffer<char> data) {
if (data.empty()) {
return make_ready_future<unconsumed_remainder>(std::move(data));
return make_ready_future<consumption_result_type>(stop_consuming<char>{std::move(data)});
} else {
count += std::count(data.begin(), data.end(), '\n');
// FIXME: last line without \n?
return make_ready_future<unconsumed_remainder>();
return make_ready_future<consumption_result_type>(continue_consuming{});
}
}
};
Expand Down
2 changes: 1 addition & 1 deletion demos/udp_zero_copy_demo.cc
Original file line number Diff line number Diff line change
Expand Up @@ -107,7 +107,7 @@ class server {
if (_copy) {
bufs.emplace_back(temporary_buffer<char>(chunk, _chunk_size));
} else {
bufs.emplace_back(temporary_buffer<char>(chunk, _chunk_size, deleter()));
bufs.emplace_back(temporary_buffer<char>::maybe_unsafe_from_deleter(chunk, _chunk_size, deleter()));
}
chunk += _chunk_size;
}
Expand Down
Loading
Loading