Skip to content

Commit

Permalink
[upd] Update version
Browse files Browse the repository at this point in the history
force-build-all
  • Loading branch information
reindexer-bot committed Feb 4, 2025
1 parent 1c82af8 commit ce51824
Show file tree
Hide file tree
Showing 166 changed files with 3,769 additions and 3,468 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/install_grpc.sh
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
#!/usr/bin/env bash

git clone --branch v1.44.0 https://github.com/grpc/grpc
git clone --branch v1.54.3 https://github.com/grpc/grpc
cd grpc
git submodule update --init
mkdir -p cmake/build
Expand Down
9 changes: 1 addition & 8 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -47,15 +47,10 @@ jobs:
build:
strategy:
matrix:
os: [ubuntu-22.04, macos-13]
os: [ubuntu-22.04, ubuntu-24.04, macos-13]
include:
- os: ubuntu-24.04
cc: gcc-12
cxx: g++-12
- os: ubuntu-latest
sanitizer: ASAN
cc: gcc-10
cxx: g++-10
- os: ubuntu-latest
sanitizer: TSAN
cc: gcc-12
Expand Down Expand Up @@ -119,8 +114,6 @@ jobs:
include:
- os: ubuntu-latest
sanitizer: ASAN
cc: gcc-10
cxx: g++-10
test: 'C++'
- os: ubuntu-latest
sanitizer: ASAN
Expand Down
2 changes: 1 addition & 1 deletion bindings/consts.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ package bindings

const CInt32Max = int(^uint32(0) >> 1)

const ReindexerVersion = "v4.19.0"
const ReindexerVersion = "v4.20.0"

// public go consts from type_consts.h and reindexer_ctypes.h
const (
Expand Down
2 changes: 1 addition & 1 deletion changelog.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# Version 4.19.0 (17.12.2024)

## Core
- [fea] Added automatic masking for reindexer user's credentials in log files and cluster/sharding JSON's (except for `async_replication` configs in `#config`-namespace)
- [fea] Added automatic masking for reindexer user's credentials in log files and cluster/sharding JSON's (except for `async_replication`-config in `#config`-namespace)
- [fix] Fixed assertion on attempt to use 'null'-values with `=`, `IN()`, `<`, `>`, `<=`, `>=` and `RANGE()` operators

## Replication
Expand Down
3 changes: 1 addition & 2 deletions cjson/decoder.go
Original file line number Diff line number Diff line change
Expand Up @@ -36,8 +36,7 @@ func fieldByTag(t reflect.Type, tag string) (result reflect.StructField, ok bool
}
for i := 0; i < t.NumField(); i++ {
result = t.Field(i)
if ftag := result.Tag.Get("json"); len(ftag) > 0 {
ftag, _ = splitStr(ftag, ',')
if ftag, _ := splitStr(result.Tag.Get("json"), ','); len(ftag) > 0 {
if tag == ftag {
return result, true
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -251,10 +251,10 @@ def main():
action='store_true', help='allow alpha checkers from '
'clang-analyzer.')
parser.add_argument('-clang-tidy-binary', metavar='PATH',
default='clang-tidy-18',
default='clang-tidy-19',
help='path to clang-tidy binary')
parser.add_argument('-clang-apply-replacements-binary', metavar='PATH',
default='clang-apply-replacements-18',
default='clang-apply-replacements-19',
help='path to clang-apply-replacements binary')
parser.add_argument('-checks', default=None,
help='checks filter, when not specified, use clang-tidy '
Expand Down
9 changes: 8 additions & 1 deletion cpp_src/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ else()
option(LINK_RESOURCES "Link web resources as binary data" ON)
endif()

set (REINDEXER_VERSION_DEFAULT "4.19.0")
set (REINDEXER_VERSION_DEFAULT "4.20.0")

if(NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE "RelWithDebInfo")
Expand All @@ -72,6 +72,13 @@ if(MSVC)
set(CMAKE_C_FLAGS_RELWITHDEBINFO "-O2 -Zi")
set(CMAKE_CXX_FLAGS_RELEASE "-O2 -DNDEBUG -Zi")
set(CMAKE_C_FLAGS_RELEASE "-O2 -DNDEBUG -Zi")
elseif(WITH_ASAN)
# Using O2 instead of O3 to build a bit faster.
# Also this allows to avoid SEGFAULT in libasan.so during coroutines interaction on CentOS7 (gcc-12).
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O2 -g1")
set(CMAKE_C_FLAGS_RELWITHDEBINFO "-O2 -g1")
set(CMAKE_CXX_FLAGS_RELEASE "-O2 -DNDEBUG")
set(CMAKE_C_FLAGS_RELEASE "-O2 -DNDEBUG")
else()
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O3 -g1")
set(CMAKE_C_FLAGS_RELWITHDEBINFO "-O3 -g1")
Expand Down
3 changes: 1 addition & 2 deletions cpp_src/client/itemimplbase.h
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
#pragma once

#include <deque>
#include <vector>
#include "core/keyvalue/variant.h"
#include "core/payload/payloadiface.h"
Expand Down Expand Up @@ -76,7 +75,7 @@ class ItemImplBase {

std::vector<std::string> precepts_;
bool unsafe_ = false;
std::deque<std::string> holder_;
h_vector<key_string, 16> holder_;
std::vector<std::unique_ptr<char[]>> largeJSONStrings_;
};

Expand Down
10 changes: 5 additions & 5 deletions cpp_src/client/queryresults.h
Original file line number Diff line number Diff line change
Expand Up @@ -37,9 +37,8 @@ class QueryResults {

class Iterator : public CoroQueryResults::Iterator {
public:
Iterator(const QueryResults* r, const CoroQueryResults* qr, int idx, int pos, int nextPos,
ResultSerializer::ItemParams itemParams) noexcept
: CoroQueryResults::Iterator{qr, idx, pos, nextPos, itemParams, {}}, r_(r) {}
Iterator(const QueryResults& r, int idx, int pos, int nextPos, ResultSerializer::ItemParams itemParams) noexcept
: CoroQueryResults::Iterator{&r.results_, idx, pos, nextPos, itemParams, {}}, r_(&r) {}
Iterator& operator*() { return *this; }
Iterator& operator++() noexcept {
try {
Expand All @@ -57,11 +56,12 @@ class QueryResults {
}
return *this;
}

const QueryResults* r_;
};

Iterator begin() const noexcept { return Iterator{this, &results_, 0, 0, 0, {}}; }
Iterator end() const noexcept { return Iterator{this, &results_, int(results_.Count()), 0, 0, {}}; }
Iterator begin() const noexcept { return Iterator{*this, 0, 0, 0, {}}; }
Iterator end() const noexcept { return Iterator{*this, int(results_.Count()), 0, 0, {}}; }

size_t Count() const noexcept { return results_.Count(); }
int TotalCount() const noexcept { return results_.TotalCount(); }
Expand Down
197 changes: 197 additions & 0 deletions cpp_src/cmd/reindexer_server/test/test_storage_compatibility.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,197 @@
#!/bin/bash
# Task: https://github.com/restream/reindexer/-/issues/1188
set -e

function KillAndRemoveServer {
local pid=$1
kill $pid
wait $pid
yum remove -y 'reindexer*' > /dev/null
}

function WaitForDB {
# wait until DB is loaded
set +e # disable "exit on error" so the script won't stop when DB's not loaded yet
is_connected=$(reindexer_tool --dsn $ADDRESS --command '\databases list');
while [[ $is_connected != "test" ]]
do
sleep 2
is_connected=$(reindexer_tool --dsn $ADDRESS --command '\databases list');
done
set -e
}

function CompareNamespacesLists {
local ns_list_actual=$1
local ns_list_expected=$2
local pid=$3

diff=$(echo ${ns_list_actual[@]} ${ns_list_expected[@]} | tr ' ' '\n' | sort | uniq -u) # compare in any order
if [ "$diff" == "" ]; then
echo "## PASS: namespaces list not changed"
else
echo "##### FAIL: namespaces list was changed"
echo "expected: $ns_list_expected"
echo "actual: $ns_list_actual"
KillAndRemoveServer $pid;
exit 1
fi
}

function CompareMemstats {
local actual=$1
local expected=$2
local pid=$3
diff=$(echo ${actual[@]} ${expected[@]} | tr ' ' '\n' | sed 's/\(.*\),$/\1/' | sort | uniq -u) # compare in any order
if [ "$diff" == "" ]; then
echo "## PASS: memstats not changed"
else
echo "##### FAIL: memstats was changed"
echo "expected: $expected"
echo "actual: $actual"
KillAndRemoveServer $pid;
exit 1
fi
}


RX_SERVER_CURRENT_VERSION_RPM="$(basename build/reindexer-*server*.rpm)"
VERSION_FROM_RPM=$(echo "$RX_SERVER_CURRENT_VERSION_RPM" | grep -o '.*server-..')
VERSION=$(echo ${VERSION_FROM_RPM: -2:1}) # one-digit version

echo "## choose latest release rpm file"
if [ $VERSION == 3 ]; then
LATEST_RELEASE=$(python3 cpp_src/cmd/reindexer_server/test/get_last_rx_version.py -v 3)
namespaces_list_expected=$'purchase_options_ext_dict\nchild_account_recommendations\n#config\n#activitystats\nradio_channels\ncollections\n#namespaces\nwp_imports_tasks\nepg_genres\nrecom_media_items_personal\nrecom_epg_archive_default\n#perfstats\nrecom_epg_live_default\nmedia_view_templates\nasset_video_servers\nwp_tasks_schedule\nadmin_roles\n#clientsstats\nrecom_epg_archive_personal\nrecom_media_items_similars\nmenu_items\naccount_recommendations\nkaraoke_items\nmedia_items\nbanners\n#queriesperfstats\nrecom_media_items_default\nrecom_epg_live_personal\nservices\n#memstats\nchannels\nmedia_item_recommendations\nwp_tasks_tasks\nepg'
elif [ $VERSION == 4 ]; then
LATEST_RELEASE=$(python3 cpp_src/cmd/reindexer_server/test/get_last_rx_version.py -v 4)
# replicationstats ns added for v4
namespaces_list_expected=$'purchase_options_ext_dict\nchild_account_recommendations\n#config\n#activitystats\n#replicationstats\nradio_channels\ncollections\n#namespaces\nwp_imports_tasks\nepg_genres\nrecom_media_items_personal\nrecom_epg_archive_default\n#perfstats\nrecom_epg_live_default\nmedia_view_templates\nasset_video_servers\nwp_tasks_schedule\nadmin_roles\n#clientsstats\nrecom_epg_archive_personal\nrecom_media_items_similars\nmenu_items\naccount_recommendations\nkaraoke_items\nmedia_items\nbanners\n#queriesperfstats\nrecom_media_items_default\nrecom_epg_live_personal\nservices\n#memstats\nchannels\nmedia_item_recommendations\nwp_tasks_tasks\nepg'
else
echo "Unknown version"
exit 1
fi

echo "## downloading latest release rpm file: $LATEST_RELEASE"
curl "http://repo.itv.restr.im/itv-api-ng/7/x86_64/$LATEST_RELEASE" --output $LATEST_RELEASE;
echo "## downloading example DB"
curl "https://github.com/restream/reindexer_testdata/-/raw/main/dump_demo.zip" --output dump_demo.zip;
unzip -o dump_demo.zip # unzips into demo_test.rxdump;

ADDRESS="cproto://127.0.0.1:6534/"
DB_NAME="test"

memstats_expected=$'[
{"name":"account_recommendations","replication":{"data_hash":6833710705,"data_count":1}},
{"name":"admin_roles","replication":{"data_hash":1896088071,"data_count":2}},
{"name":"asset_video_servers","replication":{"data_hash":7404222244,"data_count":97}},
{"name":"banners","replication":{"data_hash":0,"data_count":0}},
{"name":"channels","replication":{"data_hash":457292509431319,"data_count":3941}},
{"name":"child_account_recommendations","replication":{"data_hash":6252344969,"data_count":1}},
{"name":"collections","replication":{"data_hash":0,"data_count":0}},
{"name":"epg","replication":{"data_hash":-7049751653258,"data_count":1623116}},
{"name":"epg_genres","replication":{"data_hash":8373644068,"data_count":1315}},
{"name":"karaoke_items","replication":{"data_hash":5858155773472,"data_count":4500}},
{"name":"media_item_recommendations","replication":{"data_hash":-6520334670,"data_count":35886}},
{"name":"media_items","replication":{"data_hash":-1824301168479972392,"data_count":65448}},
{"name":"media_view_templates","replication":{"data_hash":0,"data_count":0}},
{"name":"menu_items","replication":{"data_hash":0,"data_count":0}},
{"name":"purchase_options_ext_dict","replication":{"data_hash":24651210926,"data_count":3}},
{"name":"radio_channels","replication":{"data_hash":37734732881,"data_count":28}},
{"name":"recom_epg_archive_default","replication":{"data_hash":0,"data_count":0}},
{"name":"recom_epg_archive_personal","replication":{"data_hash":0,"data_count":0}},
{"name":"recom_epg_live_default","replication":{"data_hash":0,"data_count":0}},
{"name":"recom_epg_live_personal","replication":{"data_hash":0,"data_count":0}},
{"name":"recom_media_items_default","replication":{"data_hash":8288213744,"data_count":3}},
{"name":"recom_media_items_personal","replication":{"data_hash":0,"data_count":0}},
{"name":"recom_media_items_similars","replication":{"data_hash":-672103903,"data_count":33538}},
{"name":"services","replication":{"data_hash":0,"data_count":0}},
{"name":"wp_imports_tasks","replication":{"data_hash":777859741066,"data_count":1145}},
{"name":"wp_tasks_schedule","replication":{"data_hash":12595790956,"data_count":4}},
{"name":"wp_tasks_tasks","replication":{"data_hash":28692716680,"data_count":281}}
]
Returned 27 rows'

echo "##### Forward compatibility test #####"

DB_PATH=$(pwd)"/rx_db"

echo "Database: "$DB_PATH

echo "## installing latest release: $LATEST_RELEASE"
yum install -y $LATEST_RELEASE > /dev/null;
# run RX server with disabled logging
reindexer_server -l warning --httplog=none --rpclog=none --db $DB_PATH &
server_pid=$!
sleep 2;

reindexer_tool --dsn $ADDRESS$DB_NAME -f demo_test.rxdump --createdb;
sleep 1;

namespaces_1=$(reindexer_tool --dsn $ADDRESS$DB_NAME --command '\namespaces list');
echo $namespaces_1;
CompareNamespacesLists "${namespaces_1[@]}" "${namespaces_list_expected[@]}" $server_pid;

memstats_1=$(reindexer_tool --dsn $ADDRESS$DB_NAME --command 'select name, replication.data_hash, replication.data_count from #memstats order by name');
CompareMemstats "${memstats_1[@]}" "${memstats_expected[@]}" $server_pid;

KillAndRemoveServer $server_pid;

echo "## installing current version: $RX_SERVER_CURRENT_VERSION_RPM"
yum install -y build/*.rpm > /dev/null;
reindexer_server -l0 --corelog=none --httplog=none --rpclog=none --db $DB_PATH &
server_pid=$!
sleep 2;

WaitForDB

namespaces_2=$(reindexer_tool --dsn $ADDRESS$DB_NAME --command '\namespaces list');
echo $namespaces_2;
CompareNamespacesLists "${namespaces_2[@]}" "${namespaces_1[@]}" $server_pid;


memstats_2=$(reindexer_tool --dsn $ADDRESS$DB_NAME --command 'select name, replication.data_hash, replication.data_count from #memstats order by name');
CompareMemstats "${memstats_2[@]}" "${memstats_1[@]}" $server_pid;

KillAndRemoveServer $server_pid;
rm -rf $DB_PATH;
sleep 1;

echo "##### Backward compatibility test #####"

echo "## installing current version: $RX_SERVER_CURRENT_VERSION_RPM"
yum install -y build/*.rpm > /dev/null;
reindexer_server -l warning --httplog=none --rpclog=none --db $DB_PATH &
server_pid=$!
sleep 2;

reindexer_tool --dsn $ADDRESS$DB_NAME -f demo_test.rxdump --createdb;
sleep 1;

namespaces_3=$(reindexer_tool --dsn $ADDRESS$DB_NAME --command '\namespaces list');
echo $namespaces_3;
CompareNamespacesLists "${namespaces_3[@]}" "${namespaces_list_expected[@]}" $server_pid;


memstats_3=$(reindexer_tool --dsn $ADDRESS$DB_NAME --command 'select name, replication.data_hash, replication.data_count from #memstats order by name');
CompareMemstats "${memstats_3[@]}" "${memstats_expected[@]}" $server_pid;

KillAndRemoveServer $server_pid;

echo "## installing latest release: $LATEST_RELEASE"
yum install -y $LATEST_RELEASE > /dev/null;
reindexer_server -l warning --httplog=none --rpclog=none --db $DB_PATH &
server_pid=$!
sleep 2;

WaitForDB

namespaces_4=$(reindexer_tool --dsn $ADDRESS$DB_NAME --command '\namespaces list');
echo $namespaces_4;
CompareNamespacesLists "${namespaces_4[@]}" "${namespaces_3[@]}" $server_pid;

memstats_4=$(reindexer_tool --dsn $ADDRESS$DB_NAME --command 'select name, replication.data_hash, replication.data_count from #memstats order by name');
CompareMemstats "${memstats_4[@]}" "${memstats_3[@]}" $server_pid;

KillAndRemoveServer $server_pid;
rm -rf $DB_PATH;
2 changes: 1 addition & 1 deletion cpp_src/cmd/reindexer_tool/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ if (NOT MSVC AND NOT WITH_STDLIB_DEBUG)
ExternalProject_Add(
replxx_lib
GIT_REPOSITORY "https://github.com/Restream/replxx"
GIT_TAG "b50b7b7a8c2835b45607cffabc18e4742072e9e6"
GIT_TAG "98aa91965d7495e030f31c6f05969177fe5ab81d"
CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${CMAKE_CURRENT_BINARY_DIR}
)
include_directories(${CMAKE_CURRENT_BINARY_DIR}/include)
Expand Down
Loading

0 comments on commit ce51824

Please sign in to comment.