Skip to content

Commit

Permalink
Merge remote-tracking branch 'gh/develop' into fix_jemalloc_prof
Browse files Browse the repository at this point in the history
  • Loading branch information
Aleksey Ignatiev committed Jan 23, 2025
2 parents c4351dd + 3b561d9 commit 25f7db7
Show file tree
Hide file tree
Showing 158 changed files with 1,943 additions and 1,227 deletions.
1 change: 1 addition & 0 deletions .github/workflows/alpine.yml
Original file line number Diff line number Diff line change
Expand Up @@ -103,6 +103,7 @@ jobs:
-DUSERVER_FEATURE_PATCH_LIBPQ=OFF \
-DUSERVER_DOWNLOAD_PACKAGE_PROTOBUF=ON \
-DUSERVER_DISABLE_RSEQ_ACCELERATION=YES \
-DUSERVER_FORCE_DOWNLOAD_RE2=1 \
-DUSERVER_FORCE_DOWNLOAD_ABSEIL=1 \
-DUSERVER_FORCE_DOWNLOAD_PROTOBUF=1 \
-DUSERVER_FORCE_DOWNLOAD_GRPC=1 \
Expand Down
25 changes: 23 additions & 2 deletions .github/workflows/ci-conan.yml
Original file line number Diff line number Diff line change
Expand Up @@ -31,13 +31,29 @@ jobs:
- name: Install Ubuntu packages
if: matrix.os == 'ubuntu-22.04'
run: |
sudo apt-get install -y gcc g++ cmake wget git python3 python3-pip python3-venv postgresql redis clang-format
sudo apt update
sudo apt install -y \
gcc g++ cmake wget git clang-format \
python3 python3-pip python3-venv
- name: Install test dependencies
if: matrix.os == 'ubuntu-22.04'
run: |
wget -qO- https://pgp.mongodb.com/server-7.0.asc | sudo gpg --dearmor | sudo tee /usr/share/keyrings/mongodb-server-7.0.gpg >/dev/null
echo "deb [ arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb-server-7.0.gpg ] https://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/7.0 multiverse" \
| sudo tee -a /etc/apt/sources.list.d/mongodb-org-7.0.list
sudo apt update
sudo apt install -y postgresql redis mongodb-org mongodb-mongosh
sudo ./scripts/kafka/ubuntu_install_kafka.sh
./scripts/rabbitmq/ubuntu_install_rabbitmq_server.sh
- name: Install MacOS packages
if: matrix.os == 'macos-latest'
run: |
brew update
brew install postgresql redis clang-format
brew tap mongodb/brew
brew install clang-format postgresql redis kafka rabbitmq mongodb-community
brew install [email protected]
- name: Install common packages
Expand All @@ -64,9 +80,14 @@ jobs:
chaotic_service \
embedded_files \
grpc_service \
otlp_service \
hello_service \
https_service \
postgres_service \
redis_service \
kafka_service \
rabbitmq_service \
mongo_service \
s3api \
; do
mv conanfile.py $SAMPLE/
Expand Down
19 changes: 9 additions & 10 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ jobs:
info: clang-18 + debug + sanitize addr+ub
id: ubuntu24_clang18_debug_sanitize-addr-ub
tests-flags: ''
tests-env: ''
- cmake-flags: >-
-GNinja
Expand All @@ -58,6 +59,7 @@ jobs:
info: clang-14 + debug + sanitize addr+ub
id: ubuntu22_clang14_debug_sanitize-addr-ub
tests-flags: ''
tests-env: ''
- cmake-flags: >-
-GNinja
Expand All @@ -76,6 +78,7 @@ jobs:
info: g++-9 + release
id: ubuntu20_gcc9_release
tests-flags: '--gtest_filter=-HttpClient.RedirectHeaders:HttpClient.TestUseIPv4v6'
tests-env: 'POSTGRES_PIPELINE_DISABLED=1'
# GCC-8 - testing minimal required compiler
- cmake-flags: >-
Expand All @@ -97,6 +100,7 @@ jobs:
info: g++-8 + debug
id: ubuntu20_gcc8_debug
tests-flags: '--gtest_filter=-HttpClient.RedirectHeaders:HttpClient.TestUseIPv4v6'
tests-env: 'POSTGRES_PIPELINE_DISABLED=1'
name: '${{matrix.os}}: ${{matrix.info}}'
runs-on: ${{matrix.os}}
Expand Down Expand Up @@ -182,15 +186,6 @@ jobs:
| sudo tee -a /etc/apt/sources.list.d/mongodb-org-7.0.list
# Mongo is not officially supported on Ubuntu 24.04, so install it from jammy
# Install Kafka
sudo apt install -y default-jre
curl https://dlcdn.apache.org/kafka/3.8.0/kafka_2.13-3.8.0.tgz -o kafka.tgz
sudo mkdir -p /etc/kafka
sudo tar xf kafka.tgz --directory=/etc/kafka
sudo cp -r /etc/kafka/kafka_2.13-3.8.0/* /etc/kafka/
sudo rm -rf /etc/kafka/kafka_2.13-3.8.0
ls -lha /etc/kafka
- name: Install common deps
run: |
sudo apt update
Expand Down Expand Up @@ -234,6 +229,10 @@ jobs:
run: |
sudo apt install --allow-downgrades -y g++-8
- name: Install Kafka
run: |
sudo ./scripts/kafka/ubuntu_install_kafka.sh
- name: Install RabbitMQ packages
run: |
./scripts/rabbitmq/ubuntu_install_rabbitmq_server.sh
Expand Down Expand Up @@ -321,7 +320,7 @@ jobs:
cd build_debug
mkdir postgresql || :
cd postgresql
ctest -V
${{matrix.tests-env}} ctest -V
- name: Run tests (redis)
run: |
Expand Down
3 changes: 2 additions & 1 deletion .github/workflows/macos.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ jobs:
strategy:
fail-fast: false

name: macos-latest (build only)
name: macos-latest
runs-on: macos-latest

env:
Expand All @@ -32,6 +32,7 @@ jobs:
-DUSERVER_FEATURE_REDIS_HI_MALLOC=1
-DUSERVER_FEATURE_CRYPTOPP_BLAKE2=0
-DUSERVER_USE_LD=lld
-DUSERVER_FORCE_DOWNLOAD_RE2=1
-DUSERVER_FORCE_DOWNLOAD_ABSEIL=1
-DUSERVER_FORCE_DOWNLOAD_PROTOBUF=1
-DUSERVER_FORCE_DOWNLOAD_GRPC=1
Expand Down
4 changes: 4 additions & 0 deletions .github/workflows/publish-ubuntu-22.04-images.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -32,3 +32,7 @@ jobs:
run: |
docker build -t ghcr.io/userver-framework/ubuntu-22.04-userver-pg:${USERVER_IMAGE_TAG} -f scripts/docker/ubuntu-22.04-pg.dockerfile .
docker push ghcr.io/userver-framework/ubuntu-22.04-userver-pg:${USERVER_IMAGE_TAG}
- name: Build the ubuntu-22.04-userver-pg-dev Docker image
run: |
docker build -t ghcr.io/userver-framework/ubuntu-22.04-userver-pg-dev:${USERVER_IMAGE_TAG} -f scripts/docker/ubuntu-22.04-pg-dev.dockerfile .
docker push ghcr.io/userver-framework/ubuntu-22.04-userver-pg-dev:${USERVER_IMAGE_TAG}
17 changes: 15 additions & 2 deletions .mapping.json
Original file line number Diff line number Diff line change
Expand Up @@ -414,6 +414,7 @@
"cmake/SetupPostgresqlDeps.cmake":"taxi/uservices/userver/cmake/SetupPostgresqlDeps.cmake",
"cmake/SetupProtobuf.cmake":"taxi/uservices/userver/cmake/SetupProtobuf.cmake",
"cmake/SetupRdKafka.cmake":"taxi/uservices/userver/cmake/SetupRdKafka.cmake",
"cmake/SetupRe2.cmake":"taxi/uservices/userver/cmake/SetupRe2.cmake",
"cmake/SetupRocksDB.cmake":"taxi/uservices/userver/cmake/SetupRocksDB.cmake",
"cmake/SetupYdbCppSDK.cmake":"taxi/uservices/userver/cmake/SetupYdbCppSDK.cmake",
"cmake/Stacktrace.cmake":"taxi/uservices/userver/cmake/Stacktrace.cmake",
Expand Down Expand Up @@ -1439,6 +1440,7 @@
"core/src/logging/impl/unowned_file_sinks_test.cpp":"taxi/uservices/userver/core/src/logging/impl/unowned_file_sinks_test.cpp",
"core/src/logging/level_serialization.cpp":"taxi/uservices/userver/core/src/logging/level_serialization.cpp",
"core/src/logging/log_extra_test.cpp":"taxi/uservices/userver/core/src/logging/log_extra_test.cpp",
"core/src/logging/log_json_test.cpp":"taxi/uservices/userver/core/src/logging/log_json_test.cpp",
"core/src/logging/log_ltsv_test.cpp":"taxi/uservices/userver/core/src/logging/log_ltsv_test.cpp",
"core/src/logging/log_message_benchmark.cpp":"taxi/uservices/userver/core/src/logging/log_message_benchmark.cpp",
"core/src/logging/log_message_test.cpp":"taxi/uservices/userver/core/src/logging/log_message_test.cpp",
Expand Down Expand Up @@ -1918,7 +1920,6 @@
"grpc/include/userver/ugrpc/client/impl/async_method_invocation.hpp":"taxi/uservices/userver/grpc/include/userver/ugrpc/client/impl/async_method_invocation.hpp",
"grpc/include/userver/ugrpc/client/impl/async_methods.hpp":"taxi/uservices/userver/grpc/include/userver/ugrpc/client/impl/async_methods.hpp",
"grpc/include/userver/ugrpc/client/impl/call_params.hpp":"taxi/uservices/userver/grpc/include/userver/ugrpc/client/impl/call_params.hpp",
"grpc/include/userver/ugrpc/client/impl/channel_cache.hpp":"taxi/uservices/userver/grpc/include/userver/ugrpc/client/impl/channel_cache.hpp",
"grpc/include/userver/ugrpc/client/impl/client_data.hpp":"taxi/uservices/userver/grpc/include/userver/ugrpc/client/impl/client_data.hpp",
"grpc/include/userver/ugrpc/client/impl/codegen_declarations.hpp":"taxi/uservices/userver/grpc/include/userver/ugrpc/client/impl/codegen_declarations.hpp",
"grpc/include/userver/ugrpc/client/impl/codegen_definitions.hpp":"taxi/uservices/userver/grpc/include/userver/ugrpc/client/impl/codegen_definitions.hpp",
Expand Down Expand Up @@ -2006,7 +2007,6 @@
"grpc/src/ugrpc/client/impl/async_method_invocation.cpp":"taxi/uservices/userver/grpc/src/ugrpc/client/impl/async_method_invocation.cpp",
"grpc/src/ugrpc/client/impl/async_methods.cpp":"taxi/uservices/userver/grpc/src/ugrpc/client/impl/async_methods.cpp",
"grpc/src/ugrpc/client/impl/call_params.cpp":"taxi/uservices/userver/grpc/src/ugrpc/client/impl/call_params.cpp",
"grpc/src/ugrpc/client/impl/channel_cache.cpp":"taxi/uservices/userver/grpc/src/ugrpc/client/impl/channel_cache.cpp",
"grpc/src/ugrpc/client/impl/client_configs.cpp":"taxi/uservices/userver/grpc/src/ugrpc/client/impl/client_configs.cpp",
"grpc/src/ugrpc/client/impl/client_configs.hpp":"taxi/uservices/userver/grpc/src/ugrpc/client/impl/client_configs.hpp",
"grpc/src/ugrpc/client/impl/client_data.cpp":"taxi/uservices/userver/grpc/src/ugrpc/client/impl/client_data.cpp",
Expand Down Expand Up @@ -3441,6 +3441,8 @@
"scripts/docker/pip-install.sh":"taxi/uservices/userver/scripts/docker/pip-install.sh",
"scripts/docker/run_as_user.sh":"taxi/uservices/userver/scripts/docker/run_as_user.sh",
"scripts/docker/setup-base-ubuntu-22.04-env.sh":"taxi/uservices/userver/scripts/docker/setup-base-ubuntu-22.04-env.sh",
"scripts/docker/setup-dev.sh":"taxi/uservices/userver/scripts/docker/setup-dev.sh",
"scripts/docker/ubuntu-22.04-pg-dev.dockerfile":"taxi/uservices/userver/scripts/docker/ubuntu-22.04-pg-dev.dockerfile",
"scripts/docker/ubuntu-22.04-pg.dockerfile":"taxi/uservices/userver/scripts/docker/ubuntu-22.04-pg.dockerfile",
"scripts/docker/ubuntu-22.04.dockerfile":"taxi/uservices/userver/scripts/docker/ubuntu-22.04.dockerfile",
"scripts/docs/README.md":"taxi/uservices/userver/scripts/docs/README.md",
Expand Down Expand Up @@ -3653,6 +3655,7 @@
"scripts/grpc/templates/service.usrv.hpp.jinja":"taxi/uservices/userver/scripts/grpc/templates/service.usrv.hpp.jinja",
"scripts/grpc/templates/utils.inc.jinja":"taxi/uservices/userver/scripts/grpc/templates/utils.inc.jinja",
"scripts/human_logs.py":"taxi/uservices/userver/scripts/human_logs.py",
"scripts/kafka/ubuntu_install_kafka.sh":"taxi/uservices/userver/scripts/kafka/ubuntu_install_kafka.sh",
"scripts/migrate_from_legacy_redis_ns.sh":"taxi/uservices/userver/scripts/migrate_from_legacy_redis_ns.sh",
"scripts/perf-blocking-syscall":"taxi/uservices/userver/scripts/perf-blocking-syscall",
"scripts/postgres/pg_sql_codes.py":"taxi/uservices/userver/scripts/postgres/pg_sql_codes.py",
Expand Down Expand Up @@ -4094,6 +4097,7 @@
"universal/include/userver/http/url.hpp":"taxi/uservices/userver/universal/include/userver/http/url.hpp",
"universal/include/userver/logging/format.hpp":"taxi/uservices/userver/universal/include/userver/logging/format.hpp",
"universal/include/userver/logging/fwd.hpp":"taxi/uservices/userver/universal/include/userver/logging/fwd.hpp",
"universal/include/userver/logging/impl/formatters/base.hpp":"taxi/uservices/userver/universal/include/userver/logging/impl/formatters/base.hpp",
"universal/include/userver/logging/impl/logger_base.hpp":"taxi/uservices/userver/universal/include/userver/logging/impl/logger_base.hpp",
"universal/include/userver/logging/impl/mem_logger.hpp":"taxi/uservices/userver/universal/include/userver/logging/impl/mem_logger.hpp",
"universal/include/userver/logging/impl/tag_writer.hpp":"taxi/uservices/userver/universal/include/userver/logging/impl/tag_writer.hpp",
Expand Down Expand Up @@ -4363,7 +4367,14 @@
"universal/src/logging/dynamic_debug.cpp":"taxi/uservices/userver/universal/src/logging/dynamic_debug.cpp",
"universal/src/logging/dynamic_debug.hpp":"taxi/uservices/userver/universal/src/logging/dynamic_debug.hpp",
"universal/src/logging/format.cpp":"taxi/uservices/userver/universal/src/logging/format.cpp",
"universal/src/logging/impl/formatters/json.cpp":"taxi/uservices/userver/universal/src/logging/impl/formatters/json.cpp",
"universal/src/logging/impl/formatters/json.hpp":"taxi/uservices/userver/universal/src/logging/impl/formatters/json.hpp",
"universal/src/logging/impl/formatters/struct.cpp":"taxi/uservices/userver/universal/src/logging/impl/formatters/struct.cpp",
"universal/src/logging/impl/formatters/struct.hpp":"taxi/uservices/userver/universal/src/logging/impl/formatters/struct.hpp",
"universal/src/logging/impl/formatters/tskv.cpp":"taxi/uservices/userver/universal/src/logging/impl/formatters/tskv.cpp",
"universal/src/logging/impl/formatters/tskv.hpp":"taxi/uservices/userver/universal/src/logging/impl/formatters/tskv.hpp",
"universal/src/logging/impl/logger_base.cpp":"taxi/uservices/userver/universal/src/logging/impl/logger_base.cpp",
"universal/src/logging/impl/mem_logger.cpp":"taxi/uservices/userver/universal/src/logging/impl/mem_logger.cpp",
"universal/src/logging/impl/tag_writer.cpp":"taxi/uservices/userver/universal/src/logging/impl/tag_writer.cpp",
"universal/src/logging/level.cpp":"taxi/uservices/userver/universal/src/logging/level.cpp",
"universal/src/logging/log.cpp":"taxi/uservices/userver/universal/src/logging/log.cpp",
Expand All @@ -4379,6 +4390,8 @@
"universal/src/logging/rate_limit.cpp":"taxi/uservices/userver/universal/src/logging/rate_limit.cpp",
"universal/src/logging/rate_limit.hpp":"taxi/uservices/userver/universal/src/logging/rate_limit.hpp",
"universal/src/logging/stacktrace_cache.cpp":"taxi/uservices/userver/universal/src/logging/stacktrace_cache.cpp",
"universal/src/logging/timestamp.cpp":"taxi/uservices/userver/universal/src/logging/timestamp.cpp",
"universal/src/logging/timestamp.hpp":"taxi/uservices/userver/universal/src/logging/timestamp.hpp",
"universal/src/tracing/opentelemetry.cpp":"taxi/uservices/userver/universal/src/tracing/opentelemetry.cpp",
"universal/src/tracing/opentelemetry_test.cpp":"taxi/uservices/userver/universal/src/tracing/opentelemetry_test.cpp",
"universal/src/utils/algo_test.cpp":"taxi/uservices/userver/universal/src/utils/algo_test.cpp",
Expand Down
1 change: 1 addition & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ set(CMAKE_POLICY_DEFAULT_CMP0028 NEW)
set(CMAKE_POLICY_DEFAULT_CMP0048 NEW)
set(CMAKE_POLICY_DEFAULT_CMP0063 NEW)
set(CMAKE_POLICY_DEFAULT_CMP0069 NEW)
set(CMAKE_POLICY_DEFAULT_CMP0074 NEW)
set(CMAKE_POLICY_DEFAULT_CMP0077 NEW)

project(userver)
Expand Down
7 changes: 4 additions & 3 deletions chaotic/include/userver/chaotic/exception.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -10,13 +10,14 @@ USERVER_NAMESPACE_BEGIN

namespace chaotic {

class Error final : public formats::json::Exception {
using Exception::Exception;
template <typename Value>
class Error final : public Value::Exception {
using Value::Exception::Exception;
};

template <typename Value>
[[noreturn]] inline void ThrowForValue(std::string_view str, Value value) {
throw Error(fmt::format("Error at path '{}': {}", value.GetPath(), str));
throw Error<Value>(fmt::format("Error at path '{}': {}", value.GetPath(), str));
}

} // namespace chaotic
Expand Down
3 changes: 2 additions & 1 deletion chaotic/include/userver/chaotic/object.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@

#include <fmt/format.h>

#include <userver/chaotic/exception.hpp>
#include <userver/formats/common/items.hpp>
#include <userver/formats/json/value_builder.hpp>
#include <userver/utils/trivial_map.hpp>
Expand All @@ -30,7 +31,7 @@ void ValidateNoAdditionalProperties(const Value& json, const utils::TrivialSet<B
for (const auto& [name, value] : formats::common::Items(json)) {
if (names_to_exclude.Contains(name)) continue;

throw std::runtime_error(fmt::format("Unknown property '{}'", name));
throw Error<Value>(fmt::format("Unknown property '{}'", name));
}
}

Expand Down
5 changes: 4 additions & 1 deletion chaotic/integration_tests/tests/lib/array.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
#include <userver/chaotic/array.hpp>
#include <userver/chaotic/primitive.hpp>
#include <userver/chaotic/validators.hpp>
#include <userver/formats/json.hpp>

USERVER_NAMESPACE_BEGIN

Expand Down Expand Up @@ -37,7 +38,9 @@ TEST(Array, OfIntWithValidators) {

const auto kJson1 = formats::json::MakeArray("foo");
UEXPECT_THROW_MSG(
kJson1.As<Arr>(), chaotic::Error, "Error at path '/': Too short array, minimum length=2, given=1"
kJson1.As<Arr>(),
chaotic::Error<formats::json::Value>,
"Error at path '/': Too short array, minimum length=2, given=1"
);
}

Expand Down
34 changes: 27 additions & 7 deletions chaotic/integration_tests/tests/lib/primitive.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -69,8 +69,16 @@ TEST(Primitive, IntMinMax) {
int x = kJson["foo"].As<Int>();
EXPECT_EQ(x, 1);

UEXPECT_THROW_MSG(kJson["bar"].As<Int>(), chaotic::Error, "Error at path 'bar': Invalid value, minimum=1, given=0");
UEXPECT_THROW_MSG(kJson["zoo"].As<Int>(), chaotic::Error, "Error at path 'zoo': Invalid value, maximum=5, given=6");
UEXPECT_THROW_MSG(
kJson["bar"].As<Int>(),
chaotic::Error<formats::json::Value>,
"Error at path 'bar': Invalid value, minimum=1, given=0"
);
UEXPECT_THROW_MSG(
kJson["zoo"].As<Int>(),
chaotic::Error<formats::json::Value>,
"Error at path 'zoo': Invalid value, maximum=5, given=6"
);
}

TEST(Primitive, UserTypeMinMax) {
Expand All @@ -80,8 +88,16 @@ TEST(Primitive, UserTypeMinMax) {
MyInt x = kJson["foo"].As<Int>();
EXPECT_EQ(x.value, 1);

UEXPECT_THROW_MSG(kJson["bar"].As<Int>(), chaotic::Error, "Error at path 'bar': Invalid value, minimum=1, given=0");
UEXPECT_THROW_MSG(kJson["zoo"].As<Int>(), chaotic::Error, "Error at path 'zoo': Invalid value, maximum=5, given=6");
UEXPECT_THROW_MSG(
kJson["bar"].As<Int>(),
chaotic::Error<formats::json::Value>,
"Error at path 'bar': Invalid value, minimum=1, given=0"
);
UEXPECT_THROW_MSG(
kJson["zoo"].As<Int>(),
chaotic::Error<formats::json::Value>,
"Error at path 'zoo': Invalid value, maximum=5, given=6"
);
}

TEST(Primitive, StringMinMaxLength) {
Expand All @@ -93,10 +109,14 @@ TEST(Primitive, StringMinMaxLength) {
EXPECT_EQ(x, "12");

UEXPECT_THROW_MSG(
kLocalJson["1"].As<Str>(), chaotic::Error, "Error at path '1': Too short string, minimum length=2, given=1"
kLocalJson["1"].As<Str>(),
chaotic::Error<formats::json::Value>,
"Error at path '1': Too short string, minimum length=2, given=1"
);
UEXPECT_THROW_MSG(
kLocalJson["6"].As<Str>(), chaotic::Error, "Error at path '6': Too long string, maximum length=5, given=6"
kLocalJson["6"].As<Str>(),
chaotic::Error<formats::json::Value>,
"Error at path '6': Too long string, maximum length=5, given=6"
);
}

Expand All @@ -110,7 +130,7 @@ TEST(Primitive, StringPattern) {
std::string x = kLocalJson["1"].As<Str>();
EXPECT_EQ(x, "foo");

UEXPECT_THROW_MSG(kLocalJson["2"].As<Str>(), chaotic::Error, "doesn't match regex");
UEXPECT_THROW_MSG(kLocalJson["2"].As<Str>(), chaotic::Error<formats::json::Value>, "doesn't match regex");
}

USERVER_NAMESPACE_END
Loading

0 comments on commit 25f7db7

Please sign in to comment.