diff --git a/.jenkins/Jenkinsfile b/.jenkins/Jenkinsfile index 5e6eeb918..64314742b 100644 --- a/.jenkins/Jenkinsfile +++ b/.jenkins/Jenkinsfile @@ -67,7 +67,6 @@ pipeline { } stage("Deploy Package") { - when { allOf { branch "${STABLE_BRANCH}" expression { "${BUILD_TYPE}" != 'coverage' } expression { "${BUILD_TYPE}" != 'sanitize' } @@ -78,6 +77,7 @@ pipeline { } } stage("Image") { + when { branch "${STABLE_BRANCH}" } steps { withDockerRegistry([credentialsId: 'sds-sds', url: "https://${HUB_URL}"]) { sh "docker push ${HUB_PATH}:${CONAN_CHANNEL}-${BUILD_TYPE}" @@ -85,7 +85,7 @@ pipeline { } post { success { - slackSend color: '#85B717', channel: '#sds-ci', message: "*${HUB_PATH}:${CONAN_CHANNEL}-${BUILD_TYPE}* has been uploaded to ECR." + slackSend color: '#85B717', channel: '#sds-ci', message: "*${HUB_PATH}:${SANITIZED_BRANCH}-${BUILD_TYPE}* has been uploaded to ECR." } } } diff --git a/conanfile.py b/conanfile.py index 973e39db9..2b8e7b2cc 100644 --- a/conanfile.py +++ b/conanfile.py @@ -2,7 +2,7 @@ class HomestoreConan(ConanFile): name = "homestore" - version = "3.7.6" + version = "3.8.0" homepage = "https://github.corp.ebay.com/SDS/homestore" description = "HomeStore" @@ -28,7 +28,7 @@ class HomestoreConan(ConanFile): 'testing': 'epoll_mode', 'skip_testing': False, 'sisl:prerelease': True, - "pistache:with_ssl": True, + 'pistache:with_ssl': True, } diff --git a/locks/base.lock b/locks/base.lock index 2f18366d2..33c9524e5 100644 --- a/locks/base.lock +++ b/locks/base.lock @@ -2,7 +2,7 @@ "graph_lock": { "nodes": { "0": { - "ref": "homestore/3.7.6", + "ref": "homestore/3.8.0", "requires": [ "1", "2", diff --git a/locks/coverage_deps.lock b/locks/coverage_deps.lock index 76d1504f2..da48f84c6 100644 --- a/locks/coverage_deps.lock +++ b/locks/coverage_deps.lock @@ -2,7 +2,7 @@ "graph_lock": { "nodes": { "0": { - "ref": "homestore/3.7.6", + "ref": "homestore/3.8.0", "options": "coverage=True\nfPIC=True\nsanitize=False\nshared=False\nskip_testing=False\ntesting=min\nabseil:fPIC=True\nabseil:shared=False\nboost:addr2line_location=/usr/bin/addr2line\nboost:asio_no_deprecated=False\nboost:buildid=None\nboost:bzip2=True\nboost:debug_level=0\nboost:diagnostic_definitions=False\nboost:error_code_header_only=False\nboost:extra_b2_flags=None\nboost:fPIC=True\nboost:filesystem_no_deprecated=False\nboost:filesystem_version=None\nboost:header_only=False\nboost:i18n_backend=deprecated\nboost:i18n_backend_iconv=libc\nboost:i18n_backend_icu=False\nboost:layout=system\nboost:lzma=False\nboost:magic_autolink=False\nboost:multithreading=True\nboost:namespace=boost\nboost:namespace_alias=False\nboost:numa=True\nboost:pch=True\nboost:python_executable=None\nboost:python_version=None\nboost:segmented_stacks=False\nboost:shared=False\nboost:system_no_deprecated=False\nboost:system_use_utf8=False\nboost:visibility=hidden\nboost:with_stacktrace_backtrace=True\nboost:without_atomic=False\nboost:without_chrono=False\nboost:without_container=False\nboost:without_context=False\nboost:without_contract=False\nboost:without_coroutine=False\nboost:without_date_time=False\nboost:without_exception=False\nboost:without_fiber=False\nboost:without_filesystem=False\nboost:without_graph=False\nboost:without_graph_parallel=True\nboost:without_iostreams=False\nboost:without_json=False\nboost:without_locale=False\nboost:without_log=False\nboost:without_math=False\nboost:without_mpi=True\nboost:without_nowide=False\nboost:without_program_options=False\nboost:without_python=True\nboost:without_random=False\nboost:without_regex=False\nboost:without_serialization=False\nboost:without_stacktrace=False\nboost:without_system=False\nboost:without_test=False\nboost:without_thread=False\nboost:without_timer=False\nboost:without_type_erasure=False\nboost:without_wave=False\nboost:zlib=True\nboost:zstd=False\nbreakpad:fPIC=True\nbzip2:build_executable=True\nbzip2:fPIC=True\nbzip2:shared=False\nc-ares:fPIC=True\nc-ares:shared=False\nc-ares:tools=True\ncivetweb:fPIC=True\ncivetweb:shared=False\ncivetweb:ssl_dynamic_loading=False\ncivetweb:with_caching=True\ncivetweb:with_cgi=True\ncivetweb:with_cxx=True\ncivetweb:with_duktape=False\ncivetweb:with_ipv6=True\ncivetweb:with_lua=False\ncivetweb:with_server_stats=False\ncivetweb:with_ssl=True\ncivetweb:with_static_files=True\ncivetweb:with_third_party_output=False\ncivetweb:with_websockets=True\ncivetweb:with_zlib=False\ncpr:fPIC=True\ncpr:shared=False\ncpr:signal=True\ncpr:with_ssl=auto\ncxxopts:unicode=False\ndate:fPIC=True\ndate:header_only=False\ndate:shared=False\ndate:use_system_tz_db=False\ndate:use_tz_db_in_dot=False\ndouble-conversion:fPIC=True\ndouble-conversion:shared=False\ndpdk:fPIC=True\ndpdk:native_build=False\ndpdk:numa=False\ndpdk:shared=False\nfarmhash:fPIC=True\nfarmhash:no_builtin_expect=False\nfarmhash:shared=False\nfio:native_build=False\nflatbuffers:fPIC=True\nflatbuffers:header_only=False\nflatbuffers:shared=False\nfmt:fPIC=True\nfmt:header_only=False\nfmt:shared=False\nfmt:with_fmt_alias=False\nfmt:with_os_api=True\nfolly:fPIC=True\nfolly:shared=False\nfolly:use_sse4_2=False\ngflags:fPIC=True\ngflags:namespace=gflags\ngflags:nothreads=True\ngflags:shared=False\nglog:fPIC=True\nglog:shared=False\nglog:with_gflags=True\nglog:with_threads=True\ngperftools:fPIC=True\ngperftools:shared=False\ngrpc:codegen=True\ngrpc:cpp_plugin=True\ngrpc:csharp_ext=False\ngrpc:csharp_plugin=True\ngrpc:fPIC=True\ngrpc:node_plugin=True\ngrpc:objective_c_plugin=True\ngrpc:php_plugin=True\ngrpc:python_plugin=True\ngrpc:ruby_plugin=True\ngrpc:secure=False\ngrpc:shared=False\niomgr:coverage=False\niomgr:fPIC=True\niomgr:sanitize=False\niomgr:shared=False\niomgr:testing=epoll_mode\nisa-l:fPIC=True\nisa-l:shared=False\nlibbacktrace:fPIC=True\nlibbacktrace:shared=False\nlibcurl:fPIC=True\nlibcurl:shared=False\nlibcurl:with_brotli=False\nlibcurl:with_c_ares=False\nlibcurl:with_ca_bundle=auto\nlibcurl:with_ca_fallback=False\nlibcurl:with_ca_path=auto\nlibcurl:with_cookies=True\nlibcurl:with_crypto_auth=True\nlibcurl:with_dict=True\nlibcurl:with_docs=False\nlibcurl:with_file=True\nlibcurl:with_ftp=True\nlibcurl:with_gopher=True\nlibcurl:with_http=True\nlibcurl:with_imap=True\nlibcurl:with_ipv6=True\nlibcurl:with_largemaxwritesize=False\nlibcurl:with_ldap=False\nlibcurl:with_libgsasl=False\nlibcurl:with_libidn=False\nlibcurl:with_libpsl=False\nlibcurl:with_librtmp=False\nlibcurl:with_libssh2=False\nlibcurl:with_mqtt=True\nlibcurl:with_nghttp2=False\nlibcurl:with_ntlm=True\nlibcurl:with_ntlm_wb=True\nlibcurl:with_pop3=True\nlibcurl:with_proxy=True\nlibcurl:with_rtsp=True\nlibcurl:with_smb=True\nlibcurl:with_smtp=True\nlibcurl:with_ssl=openssl\nlibcurl:with_symbol_hiding=False\nlibcurl:with_telnet=True\nlibcurl:with_tftp=True\nlibcurl:with_threaded_resolver=True\nlibcurl:with_unix_sockets=True\nlibcurl:with_verbose_debug=True\nlibcurl:with_verbose_strings=True\nlibcurl:with_zlib=True\nlibcurl:with_zstd=False\nlibdwarf:fPIC=True\nlibdwarf:shared=False\nlibdwarf:with_dwarfgen=False\nlibelf:fPIC=True\nlibelf:shared=False\nlibevent:disable_threads=False\nlibevent:fPIC=True\nlibevent:shared=False\nlibevent:with_openssl=True\nlibiberty:fPIC=True\nlibsodium:PIE=False\nlibsodium:fPIC=True\nlibsodium:shared=False\nlibsodium:use_soname=True\nlibunwind:coredump=True\nlibunwind:fPIC=True\nlibunwind:minidebuginfo=True\nlibunwind:ptrace=True\nlibunwind:setjmp=True\nlibunwind:shared=False\nlibunwind:zlibdebuginfo=True\nliburing:fPIC=True\nliburing:shared=False\nlz4:fPIC=True\nlz4:shared=False\nopenssl:386=False\nopenssl:enable_weak_ssl_ciphers=False\nopenssl:fPIC=True\nopenssl:no_aria=False\nopenssl:no_asm=False\nopenssl:no_async=False\nopenssl:no_bf=False\nopenssl:no_blake2=False\nopenssl:no_camellia=False\nopenssl:no_cast=False\nopenssl:no_chacha=False\nopenssl:no_cms=False\nopenssl:no_comp=False\nopenssl:no_ct=False\nopenssl:no_deprecated=False\nopenssl:no_des=False\nopenssl:no_dgram=False\nopenssl:no_dh=False\nopenssl:no_dsa=False\nopenssl:no_dso=False\nopenssl:no_ec=False\nopenssl:no_ecdh=False\nopenssl:no_ecdsa=False\nopenssl:no_engine=False\nopenssl:no_filenames=False\nopenssl:no_gost=False\nopenssl:no_hmac=False\nopenssl:no_idea=False\nopenssl:no_md4=False\nopenssl:no_md5=False\nopenssl:no_mdc2=False\nopenssl:no_ocsp=False\nopenssl:no_pinshared=False\nopenssl:no_rc2=False\nopenssl:no_rfc3779=False\nopenssl:no_rmd160=False\nopenssl:no_rsa=False\nopenssl:no_seed=False\nopenssl:no_sha=False\nopenssl:no_sm2=False\nopenssl:no_sm3=False\nopenssl:no_sm4=False\nopenssl:no_sock=False\nopenssl:no_srp=False\nopenssl:no_srtp=False\nopenssl:no_sse2=False\nopenssl:no_ssl=False\nopenssl:no_ssl3=False\nopenssl:no_stdio=False\nopenssl:no_tests=False\nopenssl:no_threads=False\nopenssl:no_tls1=False\nopenssl:no_ts=False\nopenssl:no_whirlpool=False\nopenssl:openssldir=None\nopenssl:shared=False\npistache:fPIC=True\npistache:shared=False\npistache:with_ssl=True\nprometheus-cpp:fPIC=True\nprometheus-cpp:shared=False\nprometheus-cpp:with_compression=True\nprometheus-cpp:with_pull=True\nprometheus-cpp:with_push=True\nprotobuf:debug_suffix=True\nprotobuf:fPIC=True\nprotobuf:lite=False\nprotobuf:shared=False\nprotobuf:with_rtti=True\nprotobuf:with_zlib=True\nre2:fPIC=True\nre2:shared=False\nre2:with_icu=False\nsisl:coverage=False\nsisl:fPIC=True\nsisl:malloc_impl=tcmalloc\nsisl:prerelease=True\nsisl:sanitize=False\nsisl:shared=False\nsnappy:fPIC=True\nsnappy:shared=False\nsnappy:with_bmi2=auto\nsnappy:with_ssse3=auto\nspdk:fPIC=True\nspdk:native_build=True\nspdk:shared=False\nspdlog:fPIC=True\nspdlog:header_only=False\nspdlog:no_exceptions=False\nspdlog:shared=False\nspdlog:wchar_filenames=False\nspdlog:wchar_support=False\nuserspace-rcu:fPIC=True\nuserspace-rcu:model=generic\nuserspace-rcu:shared=False\nxz_utils:fPIC=True\nxz_utils:shared=False\nzlib:fPIC=True\nzlib:shared=False\nzmarok-semver:fPIC=True\nzmarok-semver:shared=False\nzstd:build_programs=True\nzstd:fPIC=True\nzstd:shared=False\nzstd:threading=True", "requires": [ "1", @@ -25,6 +25,7 @@ "ref": "iomgr/8.8.1#a412cda093a472522157baef8143a9c7", "options": "coverage=False\nfPIC=True\nsanitize=False\nshared=False\ntesting=epoll_mode\nabseil:fPIC=True\nabseil:shared=False\nboost:addr2line_location=/usr/bin/addr2line\nboost:asio_no_deprecated=False\nboost:buildid=None\nboost:bzip2=True\nboost:debug_level=0\nboost:diagnostic_definitions=False\nboost:error_code_header_only=False\nboost:extra_b2_flags=None\nboost:fPIC=True\nboost:filesystem_no_deprecated=False\nboost:filesystem_version=None\nboost:header_only=False\nboost:i18n_backend=deprecated\nboost:i18n_backend_iconv=libc\nboost:i18n_backend_icu=False\nboost:layout=system\nboost:lzma=False\nboost:magic_autolink=False\nboost:multithreading=True\nboost:namespace=boost\nboost:namespace_alias=False\nboost:numa=True\nboost:pch=True\nboost:python_executable=None\nboost:python_version=None\nboost:segmented_stacks=False\nboost:shared=False\nboost:system_no_deprecated=False\nboost:system_use_utf8=False\nboost:visibility=hidden\nboost:with_stacktrace_backtrace=True\nboost:without_atomic=False\nboost:without_chrono=False\nboost:without_container=False\nboost:without_context=False\nboost:without_contract=False\nboost:without_coroutine=False\nboost:without_date_time=False\nboost:without_exception=False\nboost:without_fiber=False\nboost:without_filesystem=False\nboost:without_graph=False\nboost:without_graph_parallel=True\nboost:without_iostreams=False\nboost:without_json=False\nboost:without_locale=False\nboost:without_log=False\nboost:without_math=False\nboost:without_mpi=True\nboost:without_nowide=False\nboost:without_program_options=False\nboost:without_python=True\nboost:without_random=False\nboost:without_regex=False\nboost:without_serialization=False\nboost:without_stacktrace=False\nboost:without_system=False\nboost:without_test=False\nboost:without_thread=False\nboost:without_timer=False\nboost:without_type_erasure=False\nboost:without_wave=False\nboost:zlib=True\nboost:zstd=False\nbreakpad:fPIC=True\nbzip2:build_executable=True\nbzip2:fPIC=True\nbzip2:shared=False\nc-ares:fPIC=True\nc-ares:shared=False\nc-ares:tools=True\ncivetweb:fPIC=True\ncivetweb:shared=False\ncivetweb:ssl_dynamic_loading=False\ncivetweb:with_caching=True\ncivetweb:with_cgi=True\ncivetweb:with_cxx=True\ncivetweb:with_duktape=False\ncivetweb:with_ipv6=True\ncivetweb:with_lua=False\ncivetweb:with_server_stats=False\ncivetweb:with_ssl=True\ncivetweb:with_static_files=True\ncivetweb:with_third_party_output=False\ncivetweb:with_websockets=True\ncivetweb:with_zlib=False\ncpr:fPIC=True\ncpr:shared=False\ncpr:signal=True\ncpr:with_ssl=auto\ncxxopts:unicode=False\ndate:fPIC=True\ndate:header_only=False\ndate:shared=False\ndate:use_system_tz_db=False\ndate:use_tz_db_in_dot=False\ndouble-conversion:fPIC=True\ndouble-conversion:shared=False\ndpdk:fPIC=True\ndpdk:native_build=False\ndpdk:numa=False\ndpdk:shared=False\nfio:native_build=False\nflatbuffers:fPIC=True\nflatbuffers:header_only=False\nflatbuffers:shared=False\nfmt:fPIC=True\nfmt:header_only=False\nfmt:shared=False\nfmt:with_fmt_alias=False\nfmt:with_os_api=True\nfolly:fPIC=True\nfolly:shared=False\nfolly:use_sse4_2=False\ngflags:fPIC=True\ngflags:namespace=gflags\ngflags:nothreads=True\ngflags:shared=False\nglog:fPIC=True\nglog:shared=False\nglog:with_gflags=True\nglog:with_threads=True\ngperftools:fPIC=True\ngperftools:shared=False\ngrpc:codegen=True\ngrpc:cpp_plugin=True\ngrpc:csharp_ext=False\ngrpc:csharp_plugin=True\ngrpc:fPIC=True\ngrpc:node_plugin=True\ngrpc:objective_c_plugin=True\ngrpc:php_plugin=True\ngrpc:python_plugin=True\ngrpc:ruby_plugin=True\ngrpc:secure=False\ngrpc:shared=False\nlibbacktrace:fPIC=True\nlibbacktrace:shared=False\nlibcurl:fPIC=True\nlibcurl:shared=False\nlibcurl:with_brotli=False\nlibcurl:with_c_ares=False\nlibcurl:with_ca_bundle=auto\nlibcurl:with_ca_fallback=False\nlibcurl:with_ca_path=auto\nlibcurl:with_cookies=True\nlibcurl:with_crypto_auth=True\nlibcurl:with_dict=True\nlibcurl:with_docs=False\nlibcurl:with_file=True\nlibcurl:with_ftp=True\nlibcurl:with_gopher=True\nlibcurl:with_http=True\nlibcurl:with_imap=True\nlibcurl:with_ipv6=True\nlibcurl:with_largemaxwritesize=False\nlibcurl:with_ldap=False\nlibcurl:with_libgsasl=False\nlibcurl:with_libidn=False\nlibcurl:with_libpsl=False\nlibcurl:with_librtmp=False\nlibcurl:with_libssh2=False\nlibcurl:with_mqtt=True\nlibcurl:with_nghttp2=False\nlibcurl:with_ntlm=True\nlibcurl:with_ntlm_wb=True\nlibcurl:with_pop3=True\nlibcurl:with_proxy=True\nlibcurl:with_rtsp=True\nlibcurl:with_smb=True\nlibcurl:with_smtp=True\nlibcurl:with_ssl=openssl\nlibcurl:with_symbol_hiding=False\nlibcurl:with_telnet=True\nlibcurl:with_tftp=True\nlibcurl:with_threaded_resolver=True\nlibcurl:with_unix_sockets=True\nlibcurl:with_verbose_debug=True\nlibcurl:with_verbose_strings=True\nlibcurl:with_zlib=True\nlibcurl:with_zstd=False\nlibdwarf:fPIC=True\nlibdwarf:shared=False\nlibdwarf:with_dwarfgen=False\nlibelf:fPIC=True\nlibelf:shared=False\nlibevent:disable_threads=False\nlibevent:fPIC=True\nlibevent:shared=False\nlibevent:with_openssl=True\nlibiberty:fPIC=True\nlibsodium:PIE=False\nlibsodium:fPIC=True\nlibsodium:shared=False\nlibsodium:use_soname=True\nlibunwind:coredump=True\nlibunwind:fPIC=True\nlibunwind:minidebuginfo=True\nlibunwind:ptrace=True\nlibunwind:setjmp=True\nlibunwind:shared=False\nlibunwind:zlibdebuginfo=True\nliburing:fPIC=True\nliburing:shared=False\nlz4:fPIC=True\nlz4:shared=False\nopenssl:386=False\nopenssl:enable_weak_ssl_ciphers=False\nopenssl:fPIC=True\nopenssl:no_aria=False\nopenssl:no_asm=False\nopenssl:no_async=False\nopenssl:no_bf=False\nopenssl:no_blake2=False\nopenssl:no_camellia=False\nopenssl:no_cast=False\nopenssl:no_chacha=False\nopenssl:no_cms=False\nopenssl:no_comp=False\nopenssl:no_ct=False\nopenssl:no_deprecated=False\nopenssl:no_des=False\nopenssl:no_dgram=False\nopenssl:no_dh=False\nopenssl:no_dsa=False\nopenssl:no_dso=False\nopenssl:no_ec=False\nopenssl:no_ecdh=False\nopenssl:no_ecdsa=False\nopenssl:no_engine=False\nopenssl:no_filenames=False\nopenssl:no_gost=False\nopenssl:no_hmac=False\nopenssl:no_idea=False\nopenssl:no_md4=False\nopenssl:no_md5=False\nopenssl:no_mdc2=False\nopenssl:no_ocsp=False\nopenssl:no_pinshared=False\nopenssl:no_rc2=False\nopenssl:no_rfc3779=False\nopenssl:no_rmd160=False\nopenssl:no_rsa=False\nopenssl:no_seed=False\nopenssl:no_sha=False\nopenssl:no_sm2=False\nopenssl:no_sm3=False\nopenssl:no_sm4=False\nopenssl:no_sock=False\nopenssl:no_srp=False\nopenssl:no_srtp=False\nopenssl:no_sse2=False\nopenssl:no_ssl=False\nopenssl:no_ssl3=False\nopenssl:no_stdio=False\nopenssl:no_tests=False\nopenssl:no_threads=False\nopenssl:no_tls1=False\nopenssl:no_ts=False\nopenssl:no_whirlpool=False\nopenssl:openssldir=None\nopenssl:shared=False\npistache:fPIC=True\npistache:shared=False\npistache:with_ssl=True\nprometheus-cpp:fPIC=True\nprometheus-cpp:shared=False\nprometheus-cpp:with_compression=True\nprometheus-cpp:with_pull=True\nprometheus-cpp:with_push=True\nprotobuf:debug_suffix=True\nprotobuf:fPIC=True\nprotobuf:lite=False\nprotobuf:shared=False\nprotobuf:with_rtti=True\nprotobuf:with_zlib=True\nre2:fPIC=True\nre2:shared=False\nre2:with_icu=False\nsisl:coverage=False\nsisl:fPIC=True\nsisl:malloc_impl=tcmalloc\nsisl:prerelease=True\nsisl:sanitize=False\nsisl:shared=False\nsnappy:fPIC=True\nsnappy:shared=False\nsnappy:with_bmi2=auto\nsnappy:with_ssse3=auto\nspdk:fPIC=True\nspdk:native_build=True\nspdk:shared=False\nspdlog:fPIC=True\nspdlog:header_only=False\nspdlog:no_exceptions=False\nspdlog:shared=False\nspdlog:wchar_filenames=False\nspdlog:wchar_support=False\nuserspace-rcu:fPIC=True\nuserspace-rcu:model=generic\nuserspace-rcu:shared=False\nxz_utils:fPIC=True\nxz_utils:shared=False\nzlib:fPIC=True\nzlib:shared=False\nzmarok-semver:fPIC=True\nzmarok-semver:shared=False\nzstd:build_programs=True\nzstd:fPIC=True\nzstd:shared=False\nzstd:threading=True", "package_id": "a60f141fdcda106c7f50151ef1a6fad9ef113db1", + "prev": "bc318439a8c3901ea90b4af36abe54ae", "requires": [ "2", "3", diff --git a/locks/debug_deps.lock b/locks/debug_deps.lock index 6eb003f0c..5c6d7554c 100644 --- a/locks/debug_deps.lock +++ b/locks/debug_deps.lock @@ -2,7 +2,7 @@ "graph_lock": { "nodes": { "0": { - "ref": "homestore/3.7.6", + "ref": "homestore/3.8.0", "options": "coverage=False\nfPIC=True\nsanitize=False\nshared=False\nskip_testing=False\ntesting=epoll_mode\nabseil:fPIC=True\nabseil:shared=False\nboost:addr2line_location=/usr/bin/addr2line\nboost:asio_no_deprecated=False\nboost:buildid=None\nboost:bzip2=True\nboost:debug_level=0\nboost:diagnostic_definitions=False\nboost:error_code_header_only=False\nboost:extra_b2_flags=None\nboost:fPIC=True\nboost:filesystem_no_deprecated=False\nboost:filesystem_version=None\nboost:header_only=False\nboost:i18n_backend=deprecated\nboost:i18n_backend_iconv=libc\nboost:i18n_backend_icu=False\nboost:layout=system\nboost:lzma=False\nboost:magic_autolink=False\nboost:multithreading=True\nboost:namespace=boost\nboost:namespace_alias=False\nboost:numa=True\nboost:pch=True\nboost:python_executable=None\nboost:python_version=None\nboost:segmented_stacks=False\nboost:shared=False\nboost:system_no_deprecated=False\nboost:system_use_utf8=False\nboost:visibility=hidden\nboost:with_stacktrace_backtrace=True\nboost:without_atomic=False\nboost:without_chrono=False\nboost:without_container=False\nboost:without_context=False\nboost:without_contract=False\nboost:without_coroutine=False\nboost:without_date_time=False\nboost:without_exception=False\nboost:without_fiber=False\nboost:without_filesystem=False\nboost:without_graph=False\nboost:without_graph_parallel=True\nboost:without_iostreams=False\nboost:without_json=False\nboost:without_locale=False\nboost:without_log=False\nboost:without_math=False\nboost:without_mpi=True\nboost:without_nowide=False\nboost:without_program_options=False\nboost:without_python=True\nboost:without_random=False\nboost:without_regex=False\nboost:without_serialization=False\nboost:without_stacktrace=False\nboost:without_system=False\nboost:without_test=False\nboost:without_thread=False\nboost:without_timer=False\nboost:without_type_erasure=False\nboost:without_wave=False\nboost:zlib=True\nboost:zstd=False\nbreakpad:fPIC=True\nbzip2:build_executable=True\nbzip2:fPIC=True\nbzip2:shared=False\nc-ares:fPIC=True\nc-ares:shared=False\nc-ares:tools=True\ncivetweb:fPIC=True\ncivetweb:shared=False\ncivetweb:ssl_dynamic_loading=False\ncivetweb:with_caching=True\ncivetweb:with_cgi=True\ncivetweb:with_cxx=True\ncivetweb:with_duktape=False\ncivetweb:with_ipv6=True\ncivetweb:with_lua=False\ncivetweb:with_server_stats=False\ncivetweb:with_ssl=True\ncivetweb:with_static_files=True\ncivetweb:with_third_party_output=False\ncivetweb:with_websockets=True\ncivetweb:with_zlib=False\ncpr:fPIC=True\ncpr:shared=False\ncpr:signal=True\ncpr:with_ssl=auto\ncxxopts:unicode=False\ndate:fPIC=True\ndate:header_only=False\ndate:shared=False\ndate:use_system_tz_db=False\ndate:use_tz_db_in_dot=False\ndouble-conversion:fPIC=True\ndouble-conversion:shared=False\ndpdk:fPIC=True\ndpdk:native_build=False\ndpdk:numa=False\ndpdk:shared=False\nfarmhash:fPIC=True\nfarmhash:no_builtin_expect=False\nfarmhash:shared=False\nfio:native_build=False\nflatbuffers:fPIC=True\nflatbuffers:header_only=False\nflatbuffers:shared=False\nfmt:fPIC=True\nfmt:header_only=False\nfmt:shared=False\nfmt:with_fmt_alias=False\nfmt:with_os_api=True\nfolly:fPIC=True\nfolly:shared=False\nfolly:use_sse4_2=False\ngflags:fPIC=True\ngflags:namespace=gflags\ngflags:nothreads=True\ngflags:shared=False\nglog:fPIC=True\nglog:shared=False\nglog:with_gflags=True\nglog:with_threads=True\ngperftools:fPIC=True\ngperftools:shared=False\ngrpc:codegen=True\ngrpc:cpp_plugin=True\ngrpc:csharp_ext=False\ngrpc:csharp_plugin=True\ngrpc:fPIC=True\ngrpc:node_plugin=True\ngrpc:objective_c_plugin=True\ngrpc:php_plugin=True\ngrpc:python_plugin=True\ngrpc:ruby_plugin=True\ngrpc:secure=False\ngrpc:shared=False\niomgr:coverage=False\niomgr:fPIC=True\niomgr:sanitize=False\niomgr:shared=False\niomgr:testing=epoll_mode\nisa-l:fPIC=True\nisa-l:shared=False\nlibbacktrace:fPIC=True\nlibbacktrace:shared=False\nlibcurl:fPIC=True\nlibcurl:shared=False\nlibcurl:with_brotli=False\nlibcurl:with_c_ares=False\nlibcurl:with_ca_bundle=auto\nlibcurl:with_ca_fallback=False\nlibcurl:with_ca_path=auto\nlibcurl:with_cookies=True\nlibcurl:with_crypto_auth=True\nlibcurl:with_dict=True\nlibcurl:with_docs=False\nlibcurl:with_file=True\nlibcurl:with_ftp=True\nlibcurl:with_gopher=True\nlibcurl:with_http=True\nlibcurl:with_imap=True\nlibcurl:with_ipv6=True\nlibcurl:with_largemaxwritesize=False\nlibcurl:with_ldap=False\nlibcurl:with_libgsasl=False\nlibcurl:with_libidn=False\nlibcurl:with_libpsl=False\nlibcurl:with_librtmp=False\nlibcurl:with_libssh2=False\nlibcurl:with_mqtt=True\nlibcurl:with_nghttp2=False\nlibcurl:with_ntlm=True\nlibcurl:with_ntlm_wb=True\nlibcurl:with_pop3=True\nlibcurl:with_proxy=True\nlibcurl:with_rtsp=True\nlibcurl:with_smb=True\nlibcurl:with_smtp=True\nlibcurl:with_ssl=openssl\nlibcurl:with_symbol_hiding=False\nlibcurl:with_telnet=True\nlibcurl:with_tftp=True\nlibcurl:with_threaded_resolver=True\nlibcurl:with_unix_sockets=True\nlibcurl:with_verbose_debug=True\nlibcurl:with_verbose_strings=True\nlibcurl:with_zlib=True\nlibcurl:with_zstd=False\nlibdwarf:fPIC=True\nlibdwarf:shared=False\nlibdwarf:with_dwarfgen=False\nlibelf:fPIC=True\nlibelf:shared=False\nlibevent:disable_threads=False\nlibevent:fPIC=True\nlibevent:shared=False\nlibevent:with_openssl=True\nlibiberty:fPIC=True\nlibsodium:PIE=False\nlibsodium:fPIC=True\nlibsodium:shared=False\nlibsodium:use_soname=True\nlibunwind:coredump=True\nlibunwind:fPIC=True\nlibunwind:minidebuginfo=True\nlibunwind:ptrace=True\nlibunwind:setjmp=True\nlibunwind:shared=False\nlibunwind:zlibdebuginfo=True\nliburing:fPIC=True\nliburing:shared=False\nlz4:fPIC=True\nlz4:shared=False\nopenssl:386=False\nopenssl:enable_weak_ssl_ciphers=False\nopenssl:fPIC=True\nopenssl:no_aria=False\nopenssl:no_asm=False\nopenssl:no_async=False\nopenssl:no_bf=False\nopenssl:no_blake2=False\nopenssl:no_camellia=False\nopenssl:no_cast=False\nopenssl:no_chacha=False\nopenssl:no_cms=False\nopenssl:no_comp=False\nopenssl:no_ct=False\nopenssl:no_deprecated=False\nopenssl:no_des=False\nopenssl:no_dgram=False\nopenssl:no_dh=False\nopenssl:no_dsa=False\nopenssl:no_dso=False\nopenssl:no_ec=False\nopenssl:no_ecdh=False\nopenssl:no_ecdsa=False\nopenssl:no_engine=False\nopenssl:no_filenames=False\nopenssl:no_gost=False\nopenssl:no_hmac=False\nopenssl:no_idea=False\nopenssl:no_md4=False\nopenssl:no_md5=False\nopenssl:no_mdc2=False\nopenssl:no_ocsp=False\nopenssl:no_pinshared=False\nopenssl:no_rc2=False\nopenssl:no_rfc3779=False\nopenssl:no_rmd160=False\nopenssl:no_rsa=False\nopenssl:no_seed=False\nopenssl:no_sha=False\nopenssl:no_sm2=False\nopenssl:no_sm3=False\nopenssl:no_sm4=False\nopenssl:no_sock=False\nopenssl:no_srp=False\nopenssl:no_srtp=False\nopenssl:no_sse2=False\nopenssl:no_ssl=False\nopenssl:no_ssl3=False\nopenssl:no_stdio=False\nopenssl:no_tests=False\nopenssl:no_threads=False\nopenssl:no_tls1=False\nopenssl:no_ts=False\nopenssl:no_whirlpool=False\nopenssl:openssldir=None\nopenssl:shared=False\npistache:fPIC=True\npistache:shared=False\npistache:with_ssl=True\nprometheus-cpp:fPIC=True\nprometheus-cpp:shared=False\nprometheus-cpp:with_compression=True\nprometheus-cpp:with_pull=True\nprometheus-cpp:with_push=True\nprotobuf:debug_suffix=True\nprotobuf:fPIC=True\nprotobuf:lite=False\nprotobuf:shared=False\nprotobuf:with_rtti=True\nprotobuf:with_zlib=True\nre2:fPIC=True\nre2:shared=False\nre2:with_icu=False\nsisl:coverage=False\nsisl:fPIC=True\nsisl:malloc_impl=tcmalloc\nsisl:prerelease=True\nsisl:sanitize=False\nsisl:shared=False\nsnappy:fPIC=True\nsnappy:shared=False\nsnappy:with_bmi2=auto\nsnappy:with_ssse3=auto\nspdk:fPIC=True\nspdk:native_build=True\nspdk:shared=False\nspdlog:fPIC=True\nspdlog:header_only=False\nspdlog:no_exceptions=False\nspdlog:shared=False\nspdlog:wchar_filenames=False\nspdlog:wchar_support=False\nuserspace-rcu:fPIC=True\nuserspace-rcu:model=generic\nuserspace-rcu:shared=False\nxz_utils:fPIC=True\nxz_utils:shared=False\nzlib:fPIC=True\nzlib:shared=False\nzmarok-semver:fPIC=True\nzmarok-semver:shared=False\nzstd:build_programs=True\nzstd:fPIC=True\nzstd:shared=False\nzstd:threading=True", "requires": [ "1", @@ -25,6 +25,7 @@ "ref": "iomgr/8.8.1#a412cda093a472522157baef8143a9c7", "options": "coverage=False\nfPIC=True\nsanitize=False\nshared=False\ntesting=epoll_mode\nabseil:fPIC=True\nabseil:shared=False\nboost:addr2line_location=/usr/bin/addr2line\nboost:asio_no_deprecated=False\nboost:buildid=None\nboost:bzip2=True\nboost:debug_level=0\nboost:diagnostic_definitions=False\nboost:error_code_header_only=False\nboost:extra_b2_flags=None\nboost:fPIC=True\nboost:filesystem_no_deprecated=False\nboost:filesystem_version=None\nboost:header_only=False\nboost:i18n_backend=deprecated\nboost:i18n_backend_iconv=libc\nboost:i18n_backend_icu=False\nboost:layout=system\nboost:lzma=False\nboost:magic_autolink=False\nboost:multithreading=True\nboost:namespace=boost\nboost:namespace_alias=False\nboost:numa=True\nboost:pch=True\nboost:python_executable=None\nboost:python_version=None\nboost:segmented_stacks=False\nboost:shared=False\nboost:system_no_deprecated=False\nboost:system_use_utf8=False\nboost:visibility=hidden\nboost:with_stacktrace_backtrace=True\nboost:without_atomic=False\nboost:without_chrono=False\nboost:without_container=False\nboost:without_context=False\nboost:without_contract=False\nboost:without_coroutine=False\nboost:without_date_time=False\nboost:without_exception=False\nboost:without_fiber=False\nboost:without_filesystem=False\nboost:without_graph=False\nboost:without_graph_parallel=True\nboost:without_iostreams=False\nboost:without_json=False\nboost:without_locale=False\nboost:without_log=False\nboost:without_math=False\nboost:without_mpi=True\nboost:without_nowide=False\nboost:without_program_options=False\nboost:without_python=True\nboost:without_random=False\nboost:without_regex=False\nboost:without_serialization=False\nboost:without_stacktrace=False\nboost:without_system=False\nboost:without_test=False\nboost:without_thread=False\nboost:without_timer=False\nboost:without_type_erasure=False\nboost:without_wave=False\nboost:zlib=True\nboost:zstd=False\nbreakpad:fPIC=True\nbzip2:build_executable=True\nbzip2:fPIC=True\nbzip2:shared=False\nc-ares:fPIC=True\nc-ares:shared=False\nc-ares:tools=True\ncivetweb:fPIC=True\ncivetweb:shared=False\ncivetweb:ssl_dynamic_loading=False\ncivetweb:with_caching=True\ncivetweb:with_cgi=True\ncivetweb:with_cxx=True\ncivetweb:with_duktape=False\ncivetweb:with_ipv6=True\ncivetweb:with_lua=False\ncivetweb:with_server_stats=False\ncivetweb:with_ssl=True\ncivetweb:with_static_files=True\ncivetweb:with_third_party_output=False\ncivetweb:with_websockets=True\ncivetweb:with_zlib=False\ncpr:fPIC=True\ncpr:shared=False\ncpr:signal=True\ncpr:with_ssl=auto\ncxxopts:unicode=False\ndate:fPIC=True\ndate:header_only=False\ndate:shared=False\ndate:use_system_tz_db=False\ndate:use_tz_db_in_dot=False\ndouble-conversion:fPIC=True\ndouble-conversion:shared=False\ndpdk:fPIC=True\ndpdk:native_build=False\ndpdk:numa=False\ndpdk:shared=False\nfio:native_build=False\nflatbuffers:fPIC=True\nflatbuffers:header_only=False\nflatbuffers:shared=False\nfmt:fPIC=True\nfmt:header_only=False\nfmt:shared=False\nfmt:with_fmt_alias=False\nfmt:with_os_api=True\nfolly:fPIC=True\nfolly:shared=False\nfolly:use_sse4_2=False\ngflags:fPIC=True\ngflags:namespace=gflags\ngflags:nothreads=True\ngflags:shared=False\nglog:fPIC=True\nglog:shared=False\nglog:with_gflags=True\nglog:with_threads=True\ngperftools:fPIC=True\ngperftools:shared=False\ngrpc:codegen=True\ngrpc:cpp_plugin=True\ngrpc:csharp_ext=False\ngrpc:csharp_plugin=True\ngrpc:fPIC=True\ngrpc:node_plugin=True\ngrpc:objective_c_plugin=True\ngrpc:php_plugin=True\ngrpc:python_plugin=True\ngrpc:ruby_plugin=True\ngrpc:secure=False\ngrpc:shared=False\nlibbacktrace:fPIC=True\nlibbacktrace:shared=False\nlibcurl:fPIC=True\nlibcurl:shared=False\nlibcurl:with_brotli=False\nlibcurl:with_c_ares=False\nlibcurl:with_ca_bundle=auto\nlibcurl:with_ca_fallback=False\nlibcurl:with_ca_path=auto\nlibcurl:with_cookies=True\nlibcurl:with_crypto_auth=True\nlibcurl:with_dict=True\nlibcurl:with_docs=False\nlibcurl:with_file=True\nlibcurl:with_ftp=True\nlibcurl:with_gopher=True\nlibcurl:with_http=True\nlibcurl:with_imap=True\nlibcurl:with_ipv6=True\nlibcurl:with_largemaxwritesize=False\nlibcurl:with_ldap=False\nlibcurl:with_libgsasl=False\nlibcurl:with_libidn=False\nlibcurl:with_libpsl=False\nlibcurl:with_librtmp=False\nlibcurl:with_libssh2=False\nlibcurl:with_mqtt=True\nlibcurl:with_nghttp2=False\nlibcurl:with_ntlm=True\nlibcurl:with_ntlm_wb=True\nlibcurl:with_pop3=True\nlibcurl:with_proxy=True\nlibcurl:with_rtsp=True\nlibcurl:with_smb=True\nlibcurl:with_smtp=True\nlibcurl:with_ssl=openssl\nlibcurl:with_symbol_hiding=False\nlibcurl:with_telnet=True\nlibcurl:with_tftp=True\nlibcurl:with_threaded_resolver=True\nlibcurl:with_unix_sockets=True\nlibcurl:with_verbose_debug=True\nlibcurl:with_verbose_strings=True\nlibcurl:with_zlib=True\nlibcurl:with_zstd=False\nlibdwarf:fPIC=True\nlibdwarf:shared=False\nlibdwarf:with_dwarfgen=False\nlibelf:fPIC=True\nlibelf:shared=False\nlibevent:disable_threads=False\nlibevent:fPIC=True\nlibevent:shared=False\nlibevent:with_openssl=True\nlibiberty:fPIC=True\nlibsodium:PIE=False\nlibsodium:fPIC=True\nlibsodium:shared=False\nlibsodium:use_soname=True\nlibunwind:coredump=True\nlibunwind:fPIC=True\nlibunwind:minidebuginfo=True\nlibunwind:ptrace=True\nlibunwind:setjmp=True\nlibunwind:shared=False\nlibunwind:zlibdebuginfo=True\nliburing:fPIC=True\nliburing:shared=False\nlz4:fPIC=True\nlz4:shared=False\nopenssl:386=False\nopenssl:enable_weak_ssl_ciphers=False\nopenssl:fPIC=True\nopenssl:no_aria=False\nopenssl:no_asm=False\nopenssl:no_async=False\nopenssl:no_bf=False\nopenssl:no_blake2=False\nopenssl:no_camellia=False\nopenssl:no_cast=False\nopenssl:no_chacha=False\nopenssl:no_cms=False\nopenssl:no_comp=False\nopenssl:no_ct=False\nopenssl:no_deprecated=False\nopenssl:no_des=False\nopenssl:no_dgram=False\nopenssl:no_dh=False\nopenssl:no_dsa=False\nopenssl:no_dso=False\nopenssl:no_ec=False\nopenssl:no_ecdh=False\nopenssl:no_ecdsa=False\nopenssl:no_engine=False\nopenssl:no_filenames=False\nopenssl:no_gost=False\nopenssl:no_hmac=False\nopenssl:no_idea=False\nopenssl:no_md4=False\nopenssl:no_md5=False\nopenssl:no_mdc2=False\nopenssl:no_ocsp=False\nopenssl:no_pinshared=False\nopenssl:no_rc2=False\nopenssl:no_rfc3779=False\nopenssl:no_rmd160=False\nopenssl:no_rsa=False\nopenssl:no_seed=False\nopenssl:no_sha=False\nopenssl:no_sm2=False\nopenssl:no_sm3=False\nopenssl:no_sm4=False\nopenssl:no_sock=False\nopenssl:no_srp=False\nopenssl:no_srtp=False\nopenssl:no_sse2=False\nopenssl:no_ssl=False\nopenssl:no_ssl3=False\nopenssl:no_stdio=False\nopenssl:no_tests=False\nopenssl:no_threads=False\nopenssl:no_tls1=False\nopenssl:no_ts=False\nopenssl:no_whirlpool=False\nopenssl:openssldir=None\nopenssl:shared=False\npistache:fPIC=True\npistache:shared=False\npistache:with_ssl=True\nprometheus-cpp:fPIC=True\nprometheus-cpp:shared=False\nprometheus-cpp:with_compression=True\nprometheus-cpp:with_pull=True\nprometheus-cpp:with_push=True\nprotobuf:debug_suffix=True\nprotobuf:fPIC=True\nprotobuf:lite=False\nprotobuf:shared=False\nprotobuf:with_rtti=True\nprotobuf:with_zlib=True\nre2:fPIC=True\nre2:shared=False\nre2:with_icu=False\nsisl:coverage=False\nsisl:fPIC=True\nsisl:malloc_impl=tcmalloc\nsisl:prerelease=True\nsisl:sanitize=False\nsisl:shared=False\nsnappy:fPIC=True\nsnappy:shared=False\nsnappy:with_bmi2=auto\nsnappy:with_ssse3=auto\nspdk:fPIC=True\nspdk:native_build=True\nspdk:shared=False\nspdlog:fPIC=True\nspdlog:header_only=False\nspdlog:no_exceptions=False\nspdlog:shared=False\nspdlog:wchar_filenames=False\nspdlog:wchar_support=False\nuserspace-rcu:fPIC=True\nuserspace-rcu:model=generic\nuserspace-rcu:shared=False\nxz_utils:fPIC=True\nxz_utils:shared=False\nzlib:fPIC=True\nzlib:shared=False\nzmarok-semver:fPIC=True\nzmarok-semver:shared=False\nzstd:build_programs=True\nzstd:fPIC=True\nzstd:shared=False\nzstd:threading=True", "package_id": "a60f141fdcda106c7f50151ef1a6fad9ef113db1", + "prev": "bc318439a8c3901ea90b4af36abe54ae", "requires": [ "2", "3", diff --git a/locks/release_deps.lock b/locks/release_deps.lock index 0eaa08f72..93dc7e3dd 100644 --- a/locks/release_deps.lock +++ b/locks/release_deps.lock @@ -2,7 +2,7 @@ "graph_lock": { "nodes": { "0": { - "ref": "homestore/3.7.6", + "ref": "homestore/3.8.0", "options": "coverage=False\nfPIC=True\nsanitize=False\nshared=False\nskip_testing=False\ntesting=epoll_mode\nabseil:fPIC=True\nabseil:shared=False\nboost:addr2line_location=/usr/bin/addr2line\nboost:asio_no_deprecated=False\nboost:buildid=None\nboost:bzip2=True\nboost:debug_level=0\nboost:diagnostic_definitions=False\nboost:error_code_header_only=False\nboost:extra_b2_flags=None\nboost:fPIC=True\nboost:filesystem_no_deprecated=False\nboost:filesystem_version=None\nboost:header_only=False\nboost:i18n_backend=deprecated\nboost:i18n_backend_iconv=libc\nboost:i18n_backend_icu=False\nboost:layout=system\nboost:lzma=False\nboost:magic_autolink=False\nboost:multithreading=True\nboost:namespace=boost\nboost:namespace_alias=False\nboost:numa=True\nboost:pch=True\nboost:python_executable=None\nboost:python_version=None\nboost:segmented_stacks=False\nboost:shared=False\nboost:system_no_deprecated=False\nboost:system_use_utf8=False\nboost:visibility=hidden\nboost:with_stacktrace_backtrace=True\nboost:without_atomic=False\nboost:without_chrono=False\nboost:without_container=False\nboost:without_context=False\nboost:without_contract=False\nboost:without_coroutine=False\nboost:without_date_time=False\nboost:without_exception=False\nboost:without_fiber=False\nboost:without_filesystem=False\nboost:without_graph=False\nboost:without_graph_parallel=True\nboost:without_iostreams=False\nboost:without_json=False\nboost:without_locale=False\nboost:without_log=False\nboost:without_math=False\nboost:without_mpi=True\nboost:without_nowide=False\nboost:without_program_options=False\nboost:without_python=True\nboost:without_random=False\nboost:without_regex=False\nboost:without_serialization=False\nboost:without_stacktrace=False\nboost:without_system=False\nboost:without_test=False\nboost:without_thread=False\nboost:without_timer=False\nboost:without_type_erasure=False\nboost:without_wave=False\nboost:zlib=True\nboost:zstd=False\nbreakpad:fPIC=True\nbzip2:build_executable=True\nbzip2:fPIC=True\nbzip2:shared=False\nc-ares:fPIC=True\nc-ares:shared=False\nc-ares:tools=True\ncivetweb:fPIC=True\ncivetweb:shared=False\ncivetweb:ssl_dynamic_loading=False\ncivetweb:with_caching=True\ncivetweb:with_cgi=True\ncivetweb:with_cxx=True\ncivetweb:with_duktape=False\ncivetweb:with_ipv6=True\ncivetweb:with_lua=False\ncivetweb:with_server_stats=False\ncivetweb:with_ssl=True\ncivetweb:with_static_files=True\ncivetweb:with_third_party_output=False\ncivetweb:with_websockets=True\ncivetweb:with_zlib=False\ncpr:fPIC=True\ncpr:shared=False\ncpr:signal=True\ncpr:with_ssl=auto\ncxxopts:unicode=False\ndate:fPIC=True\ndate:header_only=False\ndate:shared=False\ndate:use_system_tz_db=False\ndate:use_tz_db_in_dot=False\ndouble-conversion:fPIC=True\ndouble-conversion:shared=False\ndpdk:fPIC=True\ndpdk:native_build=False\ndpdk:numa=False\ndpdk:shared=False\nfarmhash:fPIC=True\nfarmhash:no_builtin_expect=False\nfarmhash:shared=False\nfio:native_build=False\nflatbuffers:fPIC=True\nflatbuffers:header_only=False\nflatbuffers:shared=False\nfmt:fPIC=True\nfmt:header_only=False\nfmt:shared=False\nfmt:with_fmt_alias=False\nfmt:with_os_api=True\nfolly:fPIC=True\nfolly:shared=False\nfolly:use_sse4_2=False\ngflags:fPIC=True\ngflags:namespace=gflags\ngflags:nothreads=True\ngflags:shared=False\nglog:fPIC=True\nglog:shared=False\nglog:with_gflags=True\nglog:with_threads=True\ngperftools:fPIC=True\ngperftools:shared=False\ngrpc:codegen=True\ngrpc:cpp_plugin=True\ngrpc:csharp_ext=False\ngrpc:csharp_plugin=True\ngrpc:fPIC=True\ngrpc:node_plugin=True\ngrpc:objective_c_plugin=True\ngrpc:php_plugin=True\ngrpc:python_plugin=True\ngrpc:ruby_plugin=True\ngrpc:secure=False\ngrpc:shared=False\niomgr:coverage=False\niomgr:fPIC=True\niomgr:sanitize=False\niomgr:shared=False\niomgr:testing=epoll_mode\nisa-l:fPIC=True\nisa-l:shared=False\nlibbacktrace:fPIC=True\nlibbacktrace:shared=False\nlibcurl:fPIC=True\nlibcurl:shared=False\nlibcurl:with_brotli=False\nlibcurl:with_c_ares=False\nlibcurl:with_ca_bundle=auto\nlibcurl:with_ca_fallback=False\nlibcurl:with_ca_path=auto\nlibcurl:with_cookies=True\nlibcurl:with_crypto_auth=True\nlibcurl:with_dict=True\nlibcurl:with_docs=False\nlibcurl:with_file=True\nlibcurl:with_ftp=True\nlibcurl:with_gopher=True\nlibcurl:with_http=True\nlibcurl:with_imap=True\nlibcurl:with_ipv6=True\nlibcurl:with_largemaxwritesize=False\nlibcurl:with_ldap=False\nlibcurl:with_libgsasl=False\nlibcurl:with_libidn=False\nlibcurl:with_libpsl=False\nlibcurl:with_librtmp=False\nlibcurl:with_libssh2=False\nlibcurl:with_mqtt=True\nlibcurl:with_nghttp2=False\nlibcurl:with_ntlm=True\nlibcurl:with_ntlm_wb=True\nlibcurl:with_pop3=True\nlibcurl:with_proxy=True\nlibcurl:with_rtsp=True\nlibcurl:with_smb=True\nlibcurl:with_smtp=True\nlibcurl:with_ssl=openssl\nlibcurl:with_symbol_hiding=False\nlibcurl:with_telnet=True\nlibcurl:with_tftp=True\nlibcurl:with_threaded_resolver=True\nlibcurl:with_unix_sockets=True\nlibcurl:with_verbose_debug=True\nlibcurl:with_verbose_strings=True\nlibcurl:with_zlib=True\nlibcurl:with_zstd=False\nlibdwarf:fPIC=True\nlibdwarf:shared=False\nlibdwarf:with_dwarfgen=False\nlibelf:fPIC=True\nlibelf:shared=False\nlibevent:disable_threads=False\nlibevent:fPIC=True\nlibevent:shared=False\nlibevent:with_openssl=True\nlibiberty:fPIC=True\nlibsodium:PIE=False\nlibsodium:fPIC=True\nlibsodium:shared=False\nlibsodium:use_soname=True\nlibunwind:coredump=True\nlibunwind:fPIC=True\nlibunwind:minidebuginfo=True\nlibunwind:ptrace=True\nlibunwind:setjmp=True\nlibunwind:shared=False\nlibunwind:zlibdebuginfo=True\nliburing:fPIC=True\nliburing:shared=False\nlz4:fPIC=True\nlz4:shared=False\nopenssl:386=False\nopenssl:enable_weak_ssl_ciphers=False\nopenssl:fPIC=True\nopenssl:no_aria=False\nopenssl:no_asm=False\nopenssl:no_async=False\nopenssl:no_bf=False\nopenssl:no_blake2=False\nopenssl:no_camellia=False\nopenssl:no_cast=False\nopenssl:no_chacha=False\nopenssl:no_cms=False\nopenssl:no_comp=False\nopenssl:no_ct=False\nopenssl:no_deprecated=False\nopenssl:no_des=False\nopenssl:no_dgram=False\nopenssl:no_dh=False\nopenssl:no_dsa=False\nopenssl:no_dso=False\nopenssl:no_ec=False\nopenssl:no_ecdh=False\nopenssl:no_ecdsa=False\nopenssl:no_engine=False\nopenssl:no_filenames=False\nopenssl:no_gost=False\nopenssl:no_hmac=False\nopenssl:no_idea=False\nopenssl:no_md4=False\nopenssl:no_md5=False\nopenssl:no_mdc2=False\nopenssl:no_ocsp=False\nopenssl:no_pinshared=False\nopenssl:no_rc2=False\nopenssl:no_rfc3779=False\nopenssl:no_rmd160=False\nopenssl:no_rsa=False\nopenssl:no_seed=False\nopenssl:no_sha=False\nopenssl:no_sm2=False\nopenssl:no_sm3=False\nopenssl:no_sm4=False\nopenssl:no_sock=False\nopenssl:no_srp=False\nopenssl:no_srtp=False\nopenssl:no_sse2=False\nopenssl:no_ssl=False\nopenssl:no_ssl3=False\nopenssl:no_stdio=False\nopenssl:no_tests=False\nopenssl:no_threads=False\nopenssl:no_tls1=False\nopenssl:no_ts=False\nopenssl:no_whirlpool=False\nopenssl:openssldir=None\nopenssl:shared=False\npistache:fPIC=True\npistache:shared=False\npistache:with_ssl=True\nprometheus-cpp:fPIC=True\nprometheus-cpp:shared=False\nprometheus-cpp:with_compression=True\nprometheus-cpp:with_pull=True\nprometheus-cpp:with_push=True\nprotobuf:debug_suffix=True\nprotobuf:fPIC=True\nprotobuf:lite=False\nprotobuf:shared=False\nprotobuf:with_rtti=True\nprotobuf:with_zlib=True\nre2:fPIC=True\nre2:shared=False\nre2:with_icu=False\nsisl:coverage=False\nsisl:fPIC=True\nsisl:malloc_impl=tcmalloc\nsisl:prerelease=False\nsisl:sanitize=False\nsisl:shared=False\nsnappy:fPIC=True\nsnappy:shared=False\nsnappy:with_bmi2=auto\nsnappy:with_ssse3=auto\nspdk:fPIC=True\nspdk:native_build=True\nspdk:shared=False\nspdlog:fPIC=True\nspdlog:header_only=False\nspdlog:no_exceptions=False\nspdlog:shared=False\nspdlog:wchar_filenames=False\nspdlog:wchar_support=False\nuserspace-rcu:fPIC=True\nuserspace-rcu:model=generic\nuserspace-rcu:shared=False\nxz_utils:fPIC=True\nxz_utils:shared=False\nzlib:fPIC=True\nzlib:shared=False\nzmarok-semver:fPIC=True\nzmarok-semver:shared=False\nzstd:build_programs=True\nzstd:fPIC=True\nzstd:shared=False\nzstd:threading=True", "requires": [ "1", @@ -25,6 +25,7 @@ "ref": "iomgr/8.8.1#a412cda093a472522157baef8143a9c7", "options": "coverage=False\nfPIC=True\nsanitize=False\nshared=False\ntesting=epoll_mode\nabseil:fPIC=True\nabseil:shared=False\nboost:addr2line_location=/usr/bin/addr2line\nboost:asio_no_deprecated=False\nboost:buildid=None\nboost:bzip2=True\nboost:debug_level=0\nboost:diagnostic_definitions=False\nboost:error_code_header_only=False\nboost:extra_b2_flags=None\nboost:fPIC=True\nboost:filesystem_no_deprecated=False\nboost:filesystem_version=None\nboost:header_only=False\nboost:i18n_backend=deprecated\nboost:i18n_backend_iconv=libc\nboost:i18n_backend_icu=False\nboost:layout=system\nboost:lzma=False\nboost:magic_autolink=False\nboost:multithreading=True\nboost:namespace=boost\nboost:namespace_alias=False\nboost:numa=True\nboost:pch=True\nboost:python_executable=None\nboost:python_version=None\nboost:segmented_stacks=False\nboost:shared=False\nboost:system_no_deprecated=False\nboost:system_use_utf8=False\nboost:visibility=hidden\nboost:with_stacktrace_backtrace=True\nboost:without_atomic=False\nboost:without_chrono=False\nboost:without_container=False\nboost:without_context=False\nboost:without_contract=False\nboost:without_coroutine=False\nboost:without_date_time=False\nboost:without_exception=False\nboost:without_fiber=False\nboost:without_filesystem=False\nboost:without_graph=False\nboost:without_graph_parallel=True\nboost:without_iostreams=False\nboost:without_json=False\nboost:without_locale=False\nboost:without_log=False\nboost:without_math=False\nboost:without_mpi=True\nboost:without_nowide=False\nboost:without_program_options=False\nboost:without_python=True\nboost:without_random=False\nboost:without_regex=False\nboost:without_serialization=False\nboost:without_stacktrace=False\nboost:without_system=False\nboost:without_test=False\nboost:without_thread=False\nboost:without_timer=False\nboost:without_type_erasure=False\nboost:without_wave=False\nboost:zlib=True\nboost:zstd=False\nbreakpad:fPIC=True\nbzip2:build_executable=True\nbzip2:fPIC=True\nbzip2:shared=False\nc-ares:fPIC=True\nc-ares:shared=False\nc-ares:tools=True\ncivetweb:fPIC=True\ncivetweb:shared=False\ncivetweb:ssl_dynamic_loading=False\ncivetweb:with_caching=True\ncivetweb:with_cgi=True\ncivetweb:with_cxx=True\ncivetweb:with_duktape=False\ncivetweb:with_ipv6=True\ncivetweb:with_lua=False\ncivetweb:with_server_stats=False\ncivetweb:with_ssl=True\ncivetweb:with_static_files=True\ncivetweb:with_third_party_output=False\ncivetweb:with_websockets=True\ncivetweb:with_zlib=False\ncpr:fPIC=True\ncpr:shared=False\ncpr:signal=True\ncpr:with_ssl=auto\ncxxopts:unicode=False\ndate:fPIC=True\ndate:header_only=False\ndate:shared=False\ndate:use_system_tz_db=False\ndate:use_tz_db_in_dot=False\ndouble-conversion:fPIC=True\ndouble-conversion:shared=False\ndpdk:fPIC=True\ndpdk:native_build=False\ndpdk:numa=False\ndpdk:shared=False\nfio:native_build=False\nflatbuffers:fPIC=True\nflatbuffers:header_only=False\nflatbuffers:shared=False\nfmt:fPIC=True\nfmt:header_only=False\nfmt:shared=False\nfmt:with_fmt_alias=False\nfmt:with_os_api=True\nfolly:fPIC=True\nfolly:shared=False\nfolly:use_sse4_2=False\ngflags:fPIC=True\ngflags:namespace=gflags\ngflags:nothreads=True\ngflags:shared=False\nglog:fPIC=True\nglog:shared=False\nglog:with_gflags=True\nglog:with_threads=True\ngperftools:fPIC=True\ngperftools:shared=False\ngrpc:codegen=True\ngrpc:cpp_plugin=True\ngrpc:csharp_ext=False\ngrpc:csharp_plugin=True\ngrpc:fPIC=True\ngrpc:node_plugin=True\ngrpc:objective_c_plugin=True\ngrpc:php_plugin=True\ngrpc:python_plugin=True\ngrpc:ruby_plugin=True\ngrpc:secure=False\ngrpc:shared=False\nlibbacktrace:fPIC=True\nlibbacktrace:shared=False\nlibcurl:fPIC=True\nlibcurl:shared=False\nlibcurl:with_brotli=False\nlibcurl:with_c_ares=False\nlibcurl:with_ca_bundle=auto\nlibcurl:with_ca_fallback=False\nlibcurl:with_ca_path=auto\nlibcurl:with_cookies=True\nlibcurl:with_crypto_auth=True\nlibcurl:with_dict=True\nlibcurl:with_docs=False\nlibcurl:with_file=True\nlibcurl:with_ftp=True\nlibcurl:with_gopher=True\nlibcurl:with_http=True\nlibcurl:with_imap=True\nlibcurl:with_ipv6=True\nlibcurl:with_largemaxwritesize=False\nlibcurl:with_ldap=False\nlibcurl:with_libgsasl=False\nlibcurl:with_libidn=False\nlibcurl:with_libpsl=False\nlibcurl:with_librtmp=False\nlibcurl:with_libssh2=False\nlibcurl:with_mqtt=True\nlibcurl:with_nghttp2=False\nlibcurl:with_ntlm=True\nlibcurl:with_ntlm_wb=True\nlibcurl:with_pop3=True\nlibcurl:with_proxy=True\nlibcurl:with_rtsp=True\nlibcurl:with_smb=True\nlibcurl:with_smtp=True\nlibcurl:with_ssl=openssl\nlibcurl:with_symbol_hiding=False\nlibcurl:with_telnet=True\nlibcurl:with_tftp=True\nlibcurl:with_threaded_resolver=True\nlibcurl:with_unix_sockets=True\nlibcurl:with_verbose_debug=True\nlibcurl:with_verbose_strings=True\nlibcurl:with_zlib=True\nlibcurl:with_zstd=False\nlibdwarf:fPIC=True\nlibdwarf:shared=False\nlibdwarf:with_dwarfgen=False\nlibelf:fPIC=True\nlibelf:shared=False\nlibevent:disable_threads=False\nlibevent:fPIC=True\nlibevent:shared=False\nlibevent:with_openssl=True\nlibiberty:fPIC=True\nlibsodium:PIE=False\nlibsodium:fPIC=True\nlibsodium:shared=False\nlibsodium:use_soname=True\nlibunwind:coredump=True\nlibunwind:fPIC=True\nlibunwind:minidebuginfo=True\nlibunwind:ptrace=True\nlibunwind:setjmp=True\nlibunwind:shared=False\nlibunwind:zlibdebuginfo=True\nliburing:fPIC=True\nliburing:shared=False\nlz4:fPIC=True\nlz4:shared=False\nopenssl:386=False\nopenssl:enable_weak_ssl_ciphers=False\nopenssl:fPIC=True\nopenssl:no_aria=False\nopenssl:no_asm=False\nopenssl:no_async=False\nopenssl:no_bf=False\nopenssl:no_blake2=False\nopenssl:no_camellia=False\nopenssl:no_cast=False\nopenssl:no_chacha=False\nopenssl:no_cms=False\nopenssl:no_comp=False\nopenssl:no_ct=False\nopenssl:no_deprecated=False\nopenssl:no_des=False\nopenssl:no_dgram=False\nopenssl:no_dh=False\nopenssl:no_dsa=False\nopenssl:no_dso=False\nopenssl:no_ec=False\nopenssl:no_ecdh=False\nopenssl:no_ecdsa=False\nopenssl:no_engine=False\nopenssl:no_filenames=False\nopenssl:no_gost=False\nopenssl:no_hmac=False\nopenssl:no_idea=False\nopenssl:no_md4=False\nopenssl:no_md5=False\nopenssl:no_mdc2=False\nopenssl:no_ocsp=False\nopenssl:no_pinshared=False\nopenssl:no_rc2=False\nopenssl:no_rfc3779=False\nopenssl:no_rmd160=False\nopenssl:no_rsa=False\nopenssl:no_seed=False\nopenssl:no_sha=False\nopenssl:no_sm2=False\nopenssl:no_sm3=False\nopenssl:no_sm4=False\nopenssl:no_sock=False\nopenssl:no_srp=False\nopenssl:no_srtp=False\nopenssl:no_sse2=False\nopenssl:no_ssl=False\nopenssl:no_ssl3=False\nopenssl:no_stdio=False\nopenssl:no_tests=False\nopenssl:no_threads=False\nopenssl:no_tls1=False\nopenssl:no_ts=False\nopenssl:no_whirlpool=False\nopenssl:openssldir=None\nopenssl:shared=False\npistache:fPIC=True\npistache:shared=False\npistache:with_ssl=True\nprometheus-cpp:fPIC=True\nprometheus-cpp:shared=False\nprometheus-cpp:with_compression=True\nprometheus-cpp:with_pull=True\nprometheus-cpp:with_push=True\nprotobuf:debug_suffix=True\nprotobuf:fPIC=True\nprotobuf:lite=False\nprotobuf:shared=False\nprotobuf:with_rtti=True\nprotobuf:with_zlib=True\nre2:fPIC=True\nre2:shared=False\nre2:with_icu=False\nsisl:coverage=False\nsisl:fPIC=True\nsisl:malloc_impl=tcmalloc\nsisl:prerelease=False\nsisl:sanitize=False\nsisl:shared=False\nsnappy:fPIC=True\nsnappy:shared=False\nsnappy:with_bmi2=auto\nsnappy:with_ssse3=auto\nspdk:fPIC=True\nspdk:native_build=True\nspdk:shared=False\nspdlog:fPIC=True\nspdlog:header_only=False\nspdlog:no_exceptions=False\nspdlog:shared=False\nspdlog:wchar_filenames=False\nspdlog:wchar_support=False\nuserspace-rcu:fPIC=True\nuserspace-rcu:model=generic\nuserspace-rcu:shared=False\nxz_utils:fPIC=True\nxz_utils:shared=False\nzlib:fPIC=True\nzlib:shared=False\nzmarok-semver:fPIC=True\nzmarok-semver:shared=False\nzstd:build_programs=True\nzstd:fPIC=True\nzstd:shared=False\nzstd:threading=True", "package_id": "cc4d2523b1c516529104a9da81b2df33928b507b", + "prev": "7cf1827589931fde825f5568d0a50c81", "requires": [ "2", "3", diff --git a/locks/sanitize_deps.lock b/locks/sanitize_deps.lock index 8088289ac..12e906dfd 100644 --- a/locks/sanitize_deps.lock +++ b/locks/sanitize_deps.lock @@ -2,7 +2,7 @@ "graph_lock": { "nodes": { "0": { - "ref": "homestore/3.7.6", + "ref": "homestore/3.8.0", "options": "coverage=False\nfPIC=True\nsanitize=True\nshared=False\nskip_testing=False\ntesting=epoll_mode\nabseil:fPIC=True\nabseil:shared=False\nboost:addr2line_location=/usr/bin/addr2line\nboost:asio_no_deprecated=False\nboost:buildid=None\nboost:bzip2=True\nboost:debug_level=0\nboost:diagnostic_definitions=False\nboost:error_code_header_only=False\nboost:extra_b2_flags=None\nboost:fPIC=True\nboost:filesystem_no_deprecated=False\nboost:filesystem_version=None\nboost:header_only=False\nboost:i18n_backend=deprecated\nboost:i18n_backend_iconv=libc\nboost:i18n_backend_icu=False\nboost:layout=system\nboost:lzma=False\nboost:magic_autolink=False\nboost:multithreading=True\nboost:namespace=boost\nboost:namespace_alias=False\nboost:numa=True\nboost:pch=True\nboost:python_executable=None\nboost:python_version=None\nboost:segmented_stacks=False\nboost:shared=False\nboost:system_no_deprecated=False\nboost:system_use_utf8=False\nboost:visibility=hidden\nboost:with_stacktrace_backtrace=True\nboost:without_atomic=False\nboost:without_chrono=False\nboost:without_container=False\nboost:without_context=False\nboost:without_contract=False\nboost:without_coroutine=False\nboost:without_date_time=False\nboost:without_exception=False\nboost:without_fiber=False\nboost:without_filesystem=False\nboost:without_graph=False\nboost:without_graph_parallel=True\nboost:without_iostreams=False\nboost:without_json=False\nboost:without_locale=False\nboost:without_log=False\nboost:without_math=False\nboost:without_mpi=True\nboost:without_nowide=False\nboost:without_program_options=False\nboost:without_python=True\nboost:without_random=False\nboost:without_regex=False\nboost:without_serialization=False\nboost:without_stacktrace=False\nboost:without_system=False\nboost:without_test=False\nboost:without_thread=False\nboost:without_timer=False\nboost:without_type_erasure=False\nboost:without_wave=False\nboost:zlib=True\nboost:zstd=False\nbreakpad:fPIC=True\nbzip2:build_executable=True\nbzip2:fPIC=True\nbzip2:shared=False\nc-ares:fPIC=True\nc-ares:shared=False\nc-ares:tools=True\ncivetweb:fPIC=True\ncivetweb:shared=False\ncivetweb:ssl_dynamic_loading=False\ncivetweb:with_caching=True\ncivetweb:with_cgi=True\ncivetweb:with_cxx=True\ncivetweb:with_duktape=False\ncivetweb:with_ipv6=True\ncivetweb:with_lua=False\ncivetweb:with_server_stats=False\ncivetweb:with_ssl=True\ncivetweb:with_static_files=True\ncivetweb:with_third_party_output=False\ncivetweb:with_websockets=True\ncivetweb:with_zlib=False\ncpr:fPIC=True\ncpr:shared=False\ncpr:signal=True\ncpr:with_ssl=auto\ncxxopts:unicode=False\ndate:fPIC=True\ndate:header_only=False\ndate:shared=False\ndate:use_system_tz_db=False\ndate:use_tz_db_in_dot=False\ndouble-conversion:fPIC=True\ndouble-conversion:shared=False\ndpdk:fPIC=True\ndpdk:native_build=False\ndpdk:numa=False\ndpdk:shared=False\nfarmhash:fPIC=True\nfarmhash:no_builtin_expect=False\nfarmhash:shared=False\nfio:native_build=False\nflatbuffers:fPIC=True\nflatbuffers:header_only=False\nflatbuffers:shared=False\nfmt:fPIC=True\nfmt:header_only=False\nfmt:shared=False\nfmt:with_fmt_alias=False\nfmt:with_os_api=True\nfolly:fPIC=True\nfolly:shared=False\nfolly:use_sse4_2=False\ngflags:fPIC=True\ngflags:namespace=gflags\ngflags:nothreads=True\ngflags:shared=False\nglog:fPIC=True\nglog:shared=False\nglog:with_gflags=True\nglog:with_threads=True\ngrpc:codegen=True\ngrpc:cpp_plugin=True\ngrpc:csharp_ext=False\ngrpc:csharp_plugin=True\ngrpc:fPIC=True\ngrpc:node_plugin=True\ngrpc:objective_c_plugin=True\ngrpc:php_plugin=True\ngrpc:python_plugin=True\ngrpc:ruby_plugin=True\ngrpc:secure=False\ngrpc:shared=False\niomgr:coverage=False\niomgr:fPIC=True\niomgr:sanitize=False\niomgr:shared=False\niomgr:testing=epoll_mode\nisa-l:fPIC=True\nisa-l:shared=False\nlibbacktrace:fPIC=True\nlibbacktrace:shared=False\nlibcurl:fPIC=True\nlibcurl:shared=False\nlibcurl:with_brotli=False\nlibcurl:with_c_ares=False\nlibcurl:with_ca_bundle=auto\nlibcurl:with_ca_fallback=False\nlibcurl:with_ca_path=auto\nlibcurl:with_cookies=True\nlibcurl:with_crypto_auth=True\nlibcurl:with_dict=True\nlibcurl:with_docs=False\nlibcurl:with_file=True\nlibcurl:with_ftp=True\nlibcurl:with_gopher=True\nlibcurl:with_http=True\nlibcurl:with_imap=True\nlibcurl:with_ipv6=True\nlibcurl:with_largemaxwritesize=False\nlibcurl:with_ldap=False\nlibcurl:with_libgsasl=False\nlibcurl:with_libidn=False\nlibcurl:with_libpsl=False\nlibcurl:with_librtmp=False\nlibcurl:with_libssh2=False\nlibcurl:with_mqtt=True\nlibcurl:with_nghttp2=False\nlibcurl:with_ntlm=True\nlibcurl:with_ntlm_wb=True\nlibcurl:with_pop3=True\nlibcurl:with_proxy=True\nlibcurl:with_rtsp=True\nlibcurl:with_smb=True\nlibcurl:with_smtp=True\nlibcurl:with_ssl=openssl\nlibcurl:with_symbol_hiding=False\nlibcurl:with_telnet=True\nlibcurl:with_tftp=True\nlibcurl:with_threaded_resolver=True\nlibcurl:with_unix_sockets=True\nlibcurl:with_verbose_debug=True\nlibcurl:with_verbose_strings=True\nlibcurl:with_zlib=True\nlibcurl:with_zstd=False\nlibdwarf:fPIC=True\nlibdwarf:shared=False\nlibdwarf:with_dwarfgen=False\nlibelf:fPIC=True\nlibelf:shared=False\nlibevent:disable_threads=False\nlibevent:fPIC=True\nlibevent:shared=False\nlibevent:with_openssl=True\nlibiberty:fPIC=True\nlibsodium:PIE=False\nlibsodium:fPIC=True\nlibsodium:shared=False\nlibsodium:use_soname=True\nlibunwind:coredump=True\nlibunwind:fPIC=True\nlibunwind:minidebuginfo=True\nlibunwind:ptrace=True\nlibunwind:setjmp=True\nlibunwind:shared=False\nlibunwind:zlibdebuginfo=True\nliburing:fPIC=True\nliburing:shared=False\nlz4:fPIC=True\nlz4:shared=False\nopenssl:386=False\nopenssl:enable_weak_ssl_ciphers=False\nopenssl:fPIC=True\nopenssl:no_aria=False\nopenssl:no_asm=False\nopenssl:no_async=False\nopenssl:no_bf=False\nopenssl:no_blake2=False\nopenssl:no_camellia=False\nopenssl:no_cast=False\nopenssl:no_chacha=False\nopenssl:no_cms=False\nopenssl:no_comp=False\nopenssl:no_ct=False\nopenssl:no_deprecated=False\nopenssl:no_des=False\nopenssl:no_dgram=False\nopenssl:no_dh=False\nopenssl:no_dsa=False\nopenssl:no_dso=False\nopenssl:no_ec=False\nopenssl:no_ecdh=False\nopenssl:no_ecdsa=False\nopenssl:no_engine=False\nopenssl:no_filenames=False\nopenssl:no_gost=False\nopenssl:no_hmac=False\nopenssl:no_idea=False\nopenssl:no_md4=False\nopenssl:no_md5=False\nopenssl:no_mdc2=False\nopenssl:no_ocsp=False\nopenssl:no_pinshared=False\nopenssl:no_rc2=False\nopenssl:no_rfc3779=False\nopenssl:no_rmd160=False\nopenssl:no_rsa=False\nopenssl:no_seed=False\nopenssl:no_sha=False\nopenssl:no_sm2=False\nopenssl:no_sm3=False\nopenssl:no_sm4=False\nopenssl:no_sock=False\nopenssl:no_srp=False\nopenssl:no_srtp=False\nopenssl:no_sse2=False\nopenssl:no_ssl=False\nopenssl:no_ssl3=False\nopenssl:no_stdio=False\nopenssl:no_tests=False\nopenssl:no_threads=False\nopenssl:no_tls1=False\nopenssl:no_ts=False\nopenssl:no_whirlpool=False\nopenssl:openssldir=None\nopenssl:shared=False\npistache:fPIC=True\npistache:shared=False\npistache:with_ssl=True\nprometheus-cpp:fPIC=True\nprometheus-cpp:shared=False\nprometheus-cpp:with_compression=True\nprometheus-cpp:with_pull=True\nprometheus-cpp:with_push=True\nprotobuf:debug_suffix=True\nprotobuf:fPIC=True\nprotobuf:lite=False\nprotobuf:shared=False\nprotobuf:with_rtti=True\nprotobuf:with_zlib=True\nre2:fPIC=True\nre2:shared=False\nre2:with_icu=False\nsisl:coverage=False\nsisl:fPIC=True\nsisl:malloc_impl=libc\nsisl:prerelease=True\nsisl:sanitize=False\nsisl:shared=False\nsnappy:fPIC=True\nsnappy:shared=False\nsnappy:with_bmi2=auto\nsnappy:with_ssse3=auto\nspdk:fPIC=True\nspdk:native_build=True\nspdk:shared=False\nspdlog:fPIC=True\nspdlog:header_only=False\nspdlog:no_exceptions=False\nspdlog:shared=False\nspdlog:wchar_filenames=False\nspdlog:wchar_support=False\nuserspace-rcu:fPIC=True\nuserspace-rcu:model=generic\nuserspace-rcu:shared=False\nxz_utils:fPIC=True\nxz_utils:shared=False\nzlib:fPIC=True\nzlib:shared=False\nzmarok-semver:fPIC=True\nzmarok-semver:shared=False\nzstd:build_programs=True\nzstd:fPIC=True\nzstd:shared=False\nzstd:threading=True", "requires": [ "1", diff --git a/src/homeblks/home_blks.cpp b/src/homeblks/home_blks.cpp index e969b50fd..3572dce33 100644 --- a/src/homeblks/home_blks.cpp +++ b/src/homeblks/home_blks.cpp @@ -108,10 +108,10 @@ VolInterface* HomeBlks::init(const init_params& cfg, bool fake_reboot) { if (thread_started) { instance->m_init_thread_id = iomanager.iothread_self(); if (instance->is_safe_mode()) { - std::unique_lock< std::mutex > lk(instance->m_cv_mtx); + auto lk = std::unique_lock< std::mutex >{instance->m_cv_mtx}; /* we wait for gdb to attach in safe mode */ LOGINFO("Going to sleep. Waiting for user to send http command to wake up"); - instance->m_cv_wakeup_init.wait(lk); + instance->m_cv_wakeup_init.wait(lk, [instance]() { return instance->woke_up; }); } instance->init_devices(); } @@ -186,7 +186,13 @@ HomeBlks::HomeBlks(const init_params& cfg) : } } -void HomeBlks::wakeup_init() { m_cv_wakeup_init.notify_one(); } +void HomeBlks::wakeup_init() { + if (is_safe_mode() && !woke_up) { + auto lk = std::scoped_lock< std::mutex >{m_cv_mtx}; + woke_up = true; + } + m_cv_wakeup_init.notify_one(); +} void HomeBlks::attach_prepare_indx_cp(std::map< boost::uuids::uuid, indx_cp_ptr >* cur_icp_map, std::map< boost::uuids::uuid, indx_cp_ptr >* new_icp_map, hs_cp* cur_hcp, @@ -1071,7 +1077,7 @@ void HomeBlks::trigger_cp_init(uint32_t vol_mnt_cnt) { m_rdy = true; iomanager.run_on(m_init_thread_id, ([this](io_thread_addr_t addr) { this->init_done(); })); { - std::unique_lock< std::mutex > lk{m_cv_mtx}; + auto lk = std::scoped_lock< std::mutex >{m_cv_mtx}; m_init_finished = true; m_cv_init_cmplt.notify_all(); } @@ -1166,7 +1172,13 @@ nlohmann::json HomeBlks::dump_disk_metablks(const std::string& client) { bool HomeBlks::verify_metablk_store() { return MetaBlkMgrSI()->verify_metablk_store(); } -bool HomeBlks::is_safe_mode() { return HB_DYNAMIC_CONFIG(general_config->boot_safe_mode); } +bool HomeBlks::is_safe_mode() { + { + auto lk = std::scoped_lock< std::mutex >(m_cv_mtx); + if (woke_up) return false; + } + return HB_DYNAMIC_CONFIG(general_config->boot_safe_mode); +} void HomeBlks::list_snapshot(const VolumePtr&, std::vector< SnapshotPtr > snap_list) {} diff --git a/src/homeblks/home_blks.hpp b/src/homeblks/home_blks.hpp index 84eb613ed..39d7e2992 100644 --- a/src/homeblks/home_blks.hpp +++ b/src/homeblks/home_blks.hpp @@ -398,7 +398,8 @@ class HomeBlks : public VolInterface, public HomeStore< BLKSTORE_BUFFER_TYPE > { std::unique_ptr< HomeBlksHttpServer > m_hb_http_server; std::condition_variable m_cv_init_cmplt; // wait for init to complete - std::condition_variable m_cv_wakeup_init; // wait for init to complete + std::condition_variable m_cv_wakeup_init; // wait for safe_mode to wakeup + bool woke_up {false}; // wait for safe_mode to wakeup std::mutex m_cv_mtx; bool m_rdy = false; diff --git a/src/homelogstore/log_dev.cpp b/src/homelogstore/log_dev.cpp index 3d3f24d92..bb0b7f227 100644 --- a/src/homelogstore/log_dev.cpp +++ b/src/homelogstore/log_dev.cpp @@ -35,8 +35,8 @@ SISL_LOGGING_DECL(logstore) #define THIS_LOGDEV_PERIODIC_LOG(level, msg, ...) \ HS_PERIODIC_DETAILED_LOG(level, logstore, "logdev", m_family_id, , , msg, __VA_ARGS__) -LogDev::LogDev(const logstore_family_id_t f_id, const std::string& metablk_name) : - m_family_id{f_id}, m_logdev_meta{metablk_name} { +LogDev::LogDev(const logstore_family_id_t f_id, const std::string& logdev_name) : + m_family_id{f_id}, m_logdev_meta{logdev_name} { m_flush_size_multiple = 0; if (f_id == HomeLogStoreMgr::DATA_LOG_FAMILY_IDX) { m_flush_size_multiple = HS_DYNAMIC_CONFIG(logstore->flush_size_multiple_data_logdev); @@ -47,10 +47,6 @@ LogDev::LogDev(const logstore_family_id_t f_id, const std::string& metablk_name) LogDev::~LogDev() = default; -void LogDev::meta_blk_found(meta_blk* const mblk, const sisl::byte_view buf, const size_t size) { - m_logdev_meta.meta_buf_found(buf, static_cast< void* >(mblk)); -} - uint32_t LogDev::get_align_size() const { return m_blkstore->get_align_size(); } void LogDev::start(const bool format, JournalVirtualDev* blk_store) { @@ -77,7 +73,6 @@ void LogDev::start(const bool format, JournalVirtualDev* blk_store) { [[maybe_unused]] auto* const superblock{m_logdev_meta.create()}; m_blkstore->update_data_start_offset(0); } else { - HS_LOG_ASSERT(!m_logdev_meta.is_empty(), "Expected meta data to be read already before loading"); const auto store_list{m_logdev_meta.load()}; // Notify to the caller that a new log store was reserved earlier and it is being loaded, with its meta info @@ -182,10 +177,17 @@ void LogDev::do_load(const off_t device_cursor) { b.set_size(rec->size); if (m_last_truncate_idx == -1) { m_last_truncate_idx = header->start_idx() + i; } if (m_logfound_cb) { - THIS_LOGDEV_LOG(TRACE, "seq num {}, log indx {}, group dev offset {} size {}", rec->store_seq_num, - (header->start_idx() + i), group_dev_offset, rec->size); - m_logfound_cb(rec->store_id, rec->store_seq_num, {header->start_idx() + i, group_dev_offset}, - flush_ld_key, b, (header->nrecords() - (i + 1))); + // Validate if the id is present in rollback info + if (m_logdev_meta.is_rolled_back(rec->store_id, header->start_idx() + i)) { + THIS_LOGDEV_LOG( + DEBUG, "logstore_id[{}] log_idx={}, lsn={} has been rolledback, not notifying the logstore", + rec->store_id, (header->start_idx() + i), rec->store_seq_num); + } else { + THIS_LOGDEV_LOG(TRACE, "seq num {}, log indx {}, group dev offset {} size {}", rec->store_seq_num, + (header->start_idx() + i), group_dev_offset, rec->size); + m_logfound_cb(rec->store_id, rec->store_seq_num, {header->start_idx() + i, group_dev_offset}, + flush_ld_key, b, (header->nrecords() - (i + 1))); + } } ++i; } @@ -585,6 +587,9 @@ uint64_t LogDev::truncate(const logdev_key& key) { #endif } + // We can remove the rollback records of those upto which logid is getting truncated + m_logdev_meta.remove_rollback_record_upto(key.idx, false /* persist_now */); + m_logdev_meta.persist(); #ifdef _PRERELEASE if (garbage_collect && homestore_flip->test_flip("logdev_abort_after_garbage")) { @@ -602,6 +607,11 @@ void LogDev::update_store_superblk(const logstore_id_t idx, const logstore_super m_logdev_meta.update_store_superblk(idx, meta, persist_now); } +void LogDev::rollback(logstore_id_t store_id, logid_range_t id_range) { + std::unique_lock lg{m_meta_mutex}; + m_logdev_meta.add_rollback_record(store_id, id_range, true); +} + sisl::status_response LogDev::get_status(const sisl::status_request& request) const { sisl::status_response response; response.json["current_log_idx"] = m_log_idx.load(std::memory_order_relaxed); @@ -618,14 +628,34 @@ sisl::status_response LogDev::get_status(const sisl::status_request& request) co } /////////////////////////////// LogDevMetadata Section /////////////////////////////////////// -LogDevMetadata::LogDevMetadata(const std::string& metablk_name) : m_metablk_name{metablk_name} {} +LogDevMetadata::LogDevMetadata(const std::string& logdev_name) : m_name{logdev_name} { + MetaBlkMgrSI()->register_handler( + m_name, + [this](meta_blk* mblk, sisl::byte_view buf, size_t size) { + logdev_super_blk_found(std::move(buf), voidptr_cast(mblk)); + }, + nullptr); + + MetaBlkMgrSI()->register_handler( + m_name + "_rollback_sb", + [this](meta_blk* mblk, sisl::byte_view buf, size_t size) { + rollback_super_blk_found(std::move(buf), voidptr_cast(mblk)); + }, + nullptr); +} logdev_superblk* LogDevMetadata::create() { - const auto req_sz{required_sb_size(0)}; + auto req_sz{logdev_sb_size_needed(0)}; // TO DO: Might need to address alignment based on data or fast type - m_raw_buf = hs_utils::make_byte_array(req_sz, MetaBlkMgrSI()->is_aligned_buf_needed(req_sz), sisl::buftag::metablk, - MetaBlkMgrSI()->get_align_size()); - m_sb = new (m_raw_buf->bytes) logdev_superblk(); + m_raw_logdev_buf = hs_utils::make_byte_array(req_sz, MetaBlkMgrSI()->is_aligned_buf_needed(req_sz), + sisl::buftag::metablk, MetaBlkMgrSI()->get_align_size()); + m_sb = new (m_raw_logdev_buf->bytes) logdev_superblk(); + + req_sz = rollback_superblk::size_needed(1); + m_raw_rollback_buf = hs_utils::make_byte_array(req_sz, MetaBlkMgrSI()->is_aligned_buf_needed(req_sz), + sisl::buftag::metablk, MetaBlkMgrSI()->get_align_size()); + m_rollback_sb = new (m_raw_rollback_buf->bytes) rollback_superblk(); + m_rollback_info_dirty = true; logstore_superblk* const sb_area{m_sb->get_logstore_superblk()}; std::fill_n(sb_area, store_capacity(), logstore_superblk::default_value()); @@ -636,23 +666,57 @@ logdev_superblk* LogDevMetadata::create() { } void LogDevMetadata::reset() { - m_raw_buf.reset(); + m_raw_logdev_buf.reset(); m_sb = nullptr; - m_meta_mgr_cookie = nullptr; + m_logdev_cookie = nullptr; m_id_reserver.reset(); m_store_info.clear(); } -void LogDevMetadata::meta_buf_found(const sisl::byte_view& buf, void* const meta_cookie) { - m_meta_mgr_cookie = meta_cookie; - m_raw_buf = hs_utils::extract_byte_array(buf, true, MetaBlkMgrSI()->get_align_size()); - m_sb = reinterpret_cast< logdev_superblk* >(m_raw_buf->bytes); +void LogDevMetadata::logdev_super_blk_found(const sisl::byte_view& buf, void* meta_cookie) { + m_logdev_cookie = meta_cookie; + m_raw_logdev_buf = hs_utils::extract_byte_array(buf, true, MetaBlkMgrSI()->get_align_size()); + m_sb = reinterpret_cast< logdev_superblk* >(m_raw_logdev_buf->bytes); HS_REL_ASSERT_EQ(m_sb->get_magic(), logdev_superblk::LOGDEV_SB_MAGIC, "Invalid logdev metablk, magic mismatch"); HS_REL_ASSERT_EQ(m_sb->get_version(), logdev_superblk::LOGDEV_SB_VERSION, "Invalid version of logdev metablk"); } +void LogDevMetadata::rollback_super_blk_found(const sisl::byte_view& buf, void* meta_cookie) { + m_rollback_cookie = meta_cookie; + m_raw_rollback_buf = hs_utils::extract_byte_array(buf, true, MetaBlkMgrSI()->get_align_size()); + m_rollback_sb = reinterpret_cast< rollback_superblk* >(m_raw_rollback_buf->bytes); + + HS_REL_ASSERT_EQ(m_rollback_sb->get_magic(), rollback_superblk::ROLLBACK_SB_MAGIC, "Rollback sb magic mismatch"); + HS_REL_ASSERT_EQ(m_rollback_sb->get_version(), rollback_superblk::ROLLBACK_SB_VERSION, + "Rollback sb version mismatch"); +} + std::vector< std::pair< logstore_id_t, logstore_superblk > > LogDevMetadata::load() { + if (!m_sb) { + /// This code block is purely to make the UT work. The UT does not fully + // destruct the application, but does unregister the callbacks. We need + // to re-register here on the simulated "reboot" + MetaBlkMgrSI()->register_handler( + m_name, + [this](meta_blk* mblk, sisl::byte_view buf, size_t size) { + logdev_super_blk_found(std::move(buf), voidptr_cast(mblk)); + }, + nullptr); + + MetaBlkMgrSI()->register_handler( + m_name + "_rollback_sb", + [this](meta_blk* mblk, sisl::byte_view buf, size_t size) { + rollback_super_blk_found(std::move(buf), voidptr_cast(mblk)); + }, + nullptr); + homestore::MetaBlkMgr::instance()->read_sub_sb(m_name); + homestore::MetaBlkMgr::instance()->read_sub_sb(m_name + "_rollback_sb"); + } + + HS_REL_ASSERT_NE(m_raw_logdev_buf->bytes, nullptr, "Load called without getting metadata"); + HS_REL_ASSERT_LE(m_sb->get_version(), logdev_superblk::LOGDEV_SB_VERSION, "Logdev super blk version mismatch"); + std::vector< std::pair< logstore_id_t, logstore_superblk > > ret_list; ret_list.reserve(1024); if (store_capacity()) { @@ -662,9 +726,6 @@ std::vector< std::pair< logstore_id_t, logstore_superblk > > LogDevMetadata::loa m_id_reserver = std::make_unique< sisl::IDReserver >(); } - HS_REL_ASSERT_NE(m_raw_buf->bytes, nullptr, "Load called without getting metadata"); - HS_REL_ASSERT_LE(m_sb->get_version(), logdev_superblk::LOGDEV_SB_VERSION, "Logdev super blk version mismatch"); - const logstore_superblk* const store_sb{m_sb->get_logstore_superblk()}; logstore_id_t idx{0}; decltype(m_sb->num_stores) n{0}; @@ -678,6 +739,11 @@ std::vector< std::pair< logstore_id_t, logstore_superblk > > LogDevMetadata::loa ++idx; } + for (uint32_t i{0}; i < m_rollback_sb->num_records; ++i) { + const auto& rec = m_rollback_sb->at(i); + m_rollback_info.insert({rec.store_id, rec.idx_range}); + } + return ret_list; } @@ -689,11 +755,23 @@ void LogDevMetadata::persist() { } #endif - if (m_meta_mgr_cookie) { - MetaBlkMgrSI()->update_sub_sb(static_cast< const void* >(m_raw_buf->bytes), m_raw_buf->size, m_meta_mgr_cookie); + if (m_logdev_cookie) { + MetaBlkMgrSI()->update_sub_sb(static_cast< const void* >(m_raw_logdev_buf->bytes), m_raw_logdev_buf->size, + m_logdev_cookie); } else { - MetaBlkMgrSI()->add_sub_sb(m_metablk_name, static_cast< const void* >(m_raw_buf->bytes), m_raw_buf->size, - m_meta_mgr_cookie); + MetaBlkMgrSI()->add_sub_sb(m_name, static_cast< const void* >(m_raw_logdev_buf->bytes), m_raw_logdev_buf->size, + m_logdev_cookie); + } + + if (m_rollback_info_dirty) { + if (m_rollback_cookie) { + MetaBlkMgrSI()->update_sub_sb(static_cast< const void* >(m_raw_rollback_buf->bytes), + m_raw_rollback_buf->size, m_rollback_cookie); + } else { + MetaBlkMgrSI()->add_sub_sb(m_name + "_rollback_sb", static_cast< const void* >(m_raw_rollback_buf->bytes), + m_raw_rollback_buf->size, m_rollback_cookie); + } + m_rollback_info_dirty = false; } } @@ -715,6 +793,7 @@ logstore_id_t LogDevMetadata::reserve_store(const bool persist_now) { void LogDevMetadata::unreserve_store(const logstore_id_t idx, const bool persist_now) { m_id_reserver->unreserve(idx); m_store_info.erase(idx); + remove_all_rollback_records(idx, persist_now); resize_if_needed(); if (idx < *m_store_info.rbegin()) { @@ -761,22 +840,22 @@ void LogDevMetadata::set_start_dev_offset(const off_t offset, const logid_t key_ logid_t LogDevMetadata::get_start_log_idx() const { return m_sb->key_idx; } bool LogDevMetadata::resize_if_needed() { - auto req_sz{required_sb_size((m_store_info.size() == 0) ? 0u : *m_store_info.rbegin() + 1)}; + auto req_sz{logdev_sb_size_needed((m_store_info.size() == 0) ? 0u : *m_store_info.rbegin() + 1)}; if (MetaBlkMgrSI()->is_aligned_buf_needed(req_sz)) { req_sz = sisl::round_up(req_sz, MetaBlkMgrSI()->get_align_size()); } - if (req_sz != m_raw_buf->size) { - const auto old_buf{m_raw_buf}; + if (req_sz != m_raw_logdev_buf->size) { + const auto old_buf{m_raw_logdev_buf}; // TO DO: Might need to address alignment based on data or fast type - m_raw_buf = hs_utils::make_byte_array(req_sz, MetaBlkMgrSI()->is_aligned_buf_needed(req_sz), - sisl::buftag::metablk, MetaBlkMgrSI()->get_align_size()); - m_sb = new (m_raw_buf->bytes) logdev_superblk(); + m_raw_logdev_buf = hs_utils::make_byte_array(req_sz, MetaBlkMgrSI()->is_aligned_buf_needed(req_sz), + sisl::buftag::metablk, MetaBlkMgrSI()->get_align_size()); + m_sb = new (m_raw_logdev_buf->bytes) logdev_superblk(); logstore_superblk* const sb_area{m_sb->get_logstore_superblk()}; std::fill_n(sb_area, store_capacity(), logstore_superblk::default_value()); - std::memcpy(static_cast< void* >(m_raw_buf->bytes), static_cast< const void* >(old_buf->bytes), - std::min(old_buf->size, m_raw_buf->size)); + std::memcpy(static_cast< void* >(m_raw_logdev_buf->bytes), static_cast< const void* >(old_buf->bytes), + std::min(old_buf->size, m_raw_logdev_buf->size)); return true; } else { return false; @@ -784,6 +863,90 @@ bool LogDevMetadata::resize_if_needed() { } uint32_t LogDevMetadata::store_capacity() const { - return (m_raw_buf->size - sizeof(logdev_superblk)) / sizeof(logstore_superblk); + return (m_raw_logdev_buf->size - sizeof(logdev_superblk)) / sizeof(logstore_superblk); +} + +void LogDevMetadata::add_rollback_record(logstore_id_t store_id, logid_range_t id_range, bool persist_now) { + m_rollback_info.insert({store_id, id_range}); + resize_rollback_sb_if_needed(); + m_rollback_sb->add_record(store_id, id_range); + + m_rollback_info_dirty = true; + if (persist_now) { persist(); } +} + +void LogDevMetadata::remove_rollback_record_upto(logid_t upto_id, bool persist_now) { + uint32_t n_removed{0}; + for (auto i = m_rollback_sb->num_records; i > 0; --i) { + auto& rec = m_rollback_sb->at(i - 1); + if (rec.idx_range.second <= upto_id) { + m_rollback_sb->remove_ith_record(i - 1); + ++n_removed; + } + } + + if (n_removed) { + for (auto it = m_rollback_info.begin(); it != m_rollback_info.end();) { + if (it->second.second <= upto_id) { + it = m_rollback_info.erase(it); + } else { + ++it; + } + } + resize_rollback_sb_if_needed(); + m_rollback_info_dirty = true; + if (persist_now) { persist(); } + } +} + +void LogDevMetadata::remove_all_rollback_records(logstore_id_t store_id, bool persist_now) { + uint32_t n_removed{0}; + for (auto i = m_rollback_sb->num_records; i > 0; --i) { + auto& rec = m_rollback_sb->at(i - 1); + if (rec.store_id == store_id) { + m_rollback_sb->remove_ith_record(i - 1); + ++n_removed; + } + } + if (n_removed) { + m_rollback_info.erase(store_id); + resize_rollback_sb_if_needed(); + m_rollback_info_dirty = true; + if (persist_now) { persist(); } + } +} + +uint32_t LogDevMetadata::num_rollback_records(logstore_id_t store_id) const { + HS_DBG_ASSERT_EQ(m_rollback_sb->num_records, m_rollback_info.size(), + "Rollback record count mismatch between sb and in-memory"); + return m_rollback_info.count(store_id); +} + +bool LogDevMetadata::is_rolled_back(logstore_id_t store_id, logid_t logid) const { + auto it_pair = m_rollback_info.equal_range(store_id); + for (auto it = it_pair.first; it != it_pair.second; ++it) { + const logid_range_t& log_id_range = it->second; + if ((logid >= log_id_range.first) && (logid <= log_id_range.second)) { return true; } + } + return false; +} + +bool LogDevMetadata::resize_rollback_sb_if_needed() { + auto req_sz = rollback_superblk::size_needed(m_rollback_info.size()); + if (MetaBlkMgrSI()->is_aligned_buf_needed(req_sz)) { + req_sz = sisl::round_up(req_sz, MetaBlkMgrSI()->get_align_size()); + } + + if (req_sz != m_raw_rollback_buf->size) { + auto new_buf = hs_utils::make_byte_array(req_sz, MetaBlkMgrSI()->is_aligned_buf_needed(req_sz), + sisl::buftag::metablk, MetaBlkMgrSI()->get_align_size()); + m_rollback_sb = new (new_buf->bytes) rollback_superblk(); + std::memcpy(static_cast< void* >(new_buf->bytes), static_cast< const void* >(m_raw_rollback_buf->bytes), + std::min(m_raw_logdev_buf->size, new_buf->size)); + m_raw_rollback_buf = new_buf; + return true; + } else { + return false; + } } } // namespace homestore diff --git a/src/homelogstore/log_dev.hpp b/src/homelogstore/log_dev.hpp index 8c5246276..29a300753 100644 --- a/src/homelogstore/log_dev.hpp +++ b/src/homelogstore/log_dev.hpp @@ -465,11 +465,55 @@ struct logdev_superblk { }; #pragma pack() +#pragma pack(1) +typedef std::pair< logid_t, logid_t > logid_range_t; + +struct rollback_record { + logstore_id_t store_id; + logid_range_t idx_range; +}; + +struct rollback_superblk { + static constexpr uint32_t ROLLBACK_SB_MAGIC{0xDABAF00D}; + static constexpr uint32_t ROLLBACK_SB_VERSION{1}; + static constexpr uint32_t num_record_increment{8}; + + uint32_t magic{ROLLBACK_SB_MAGIC}; + uint32_t version{ROLLBACK_SB_VERSION}; + uint32_t num_records{0}; + + uint32_t get_magic() const { return magic; } + uint32_t get_version() const { return version; } + + static uint32_t size_needed(uint32_t nrecords) { + return sizeof(rollback_superblk) + (sisl::round_up(nrecords, num_record_increment) * sizeof(rollback_record)); + } + + rollback_record& at(uint32_t idx) { + auto r = r_cast< rollback_record* >(uintptr_cast(this) + sizeof(rollback_superblk)); + return r[idx]; + } + + void remove_ith_record(uint32_t i) { + uint8_t* rmem = uintptr_cast(&at(i)); + std::memmove(rmem, rmem + sizeof(rollback_record), sizeof(rollback_record) * (num_records - i - 1)); + --num_records; + } + + void add_record(logstore_id_t store_id, logid_range_t idx_range) { + rollback_record& r = at(num_records++); + r.store_id = store_id; + r.idx_range = idx_range; + } +}; +#pragma pack() + // This class represents the metadata of logdev providing methods to change/access log dev super block. class LogDevMetadata { friend class LogDev; + public: - LogDevMetadata(const std::string& metablk_name); + explicit LogDevMetadata(const std::string& logdev_name); LogDevMetadata(const LogDevMetadata&) = delete; LogDevMetadata& operator=(const LogDevMetadata&) = delete; LogDevMetadata(LogDevMetadata&&) noexcept = delete; @@ -478,7 +522,6 @@ class LogDevMetadata { [[nodiscard]] logdev_superblk* create(); void reset(); - void meta_buf_found(const sisl::byte_view& buf, void* const meta_cookie); [[nodiscard]] std::vector< std::pair< logstore_id_t, logstore_superblk > > load(); void persist(); @@ -499,7 +542,7 @@ class LogDevMetadata { private: bool resize_if_needed(); - [[nodiscard]] uint32_t required_sb_size(const uint32_t nstores) const { + [[nodiscard]] uint32_t logdev_sb_size_needed(const uint32_t nstores) const { // TO DO: Might need to differentiate based on data or fast type return size_needed(nstores); } @@ -510,12 +553,28 @@ class LogDevMetadata { [[nodiscard]] uint32_t store_capacity() const; - sisl::byte_array m_raw_buf; - std::string m_metablk_name; + void add_rollback_record(logstore_id_t store_id, logid_range_t id_range, bool persist_now); + void remove_rollback_record_upto(logid_t upto_id, bool persist_now); + void remove_all_rollback_records(logstore_id_t store_id, bool persist_now); + uint32_t num_rollback_records(logstore_id_t store_id) const; + bool is_rolled_back(logstore_id_t store_id, logid_t logid) const; + + bool resize_rollback_sb_if_needed(); + + void logdev_super_blk_found(const sisl::byte_view& buf, void* meta_cookie); + void rollback_super_blk_found(const sisl::byte_view& buf, void* meta_cookie); + + sisl::byte_array m_raw_logdev_buf; + sisl::byte_array m_raw_rollback_buf; + std::string m_name; logdev_superblk* m_sb{nullptr}; - void* m_meta_mgr_cookie{nullptr}; + rollback_superblk* m_rollback_sb{nullptr}; + void* m_logdev_cookie{nullptr}; + void* m_rollback_cookie{nullptr}; std::unique_ptr< sisl::IDReserver > m_id_reserver; std::set< logstore_id_t > m_store_info; + std::multimap< logstore_id_t, logid_range_t > m_rollback_info; + bool m_rollback_info_dirty{false}; }; class HomeStoreBase; @@ -548,6 +607,7 @@ enum log_dump_verbosity : uint8_t { CONTENT, HEADER }; class LogDev { friend class HomeLogStore; + public: // NOTE: Possibly change these in future to include constant correctness typedef std::function< void(logstore_id_t, logdev_key, logdev_key, uint32_t nremaining_in_batch, void*) > @@ -565,7 +625,7 @@ class LogDev { return HS_DYNAMIC_CONFIG(logstore.flush_in_current_thread); } - LogDev(const logstore_family_id_t f_id, const std::string& metablk_name); + LogDev(const logstore_family_id_t f_id, const std::string& logdev_name); LogDev(const LogDev&) = delete; LogDev& operator=(const LogDev&) = delete; LogDev(LogDev&&) noexcept = delete; @@ -722,7 +782,16 @@ class LogDev { * @return number of records to truncate */ [[nodiscard]] uint64_t truncate(const logdev_key& key); - void meta_blk_found(meta_blk* const mblk, const sisl::byte_view buf, const size_t size); + + /** + * @brief Rollback the logid range specific to the given store id. This method persists the information + * synchronously to the underlying storage. Once rolledback those logids in this range are ignored (only for + * this logstore) during load. + * + * @param store_id : Store id whose logids are to be rolled back or invalidated + * @param id_range : Log id range to rollback/invalidate + */ + void rollback(logstore_id_t store_id, logid_range_t id_range); void update_store_superblk(const logstore_id_t idx, const logstore_superblk& meta, const bool persist_now); diff --git a/src/homelogstore/log_store.cpp b/src/homelogstore/log_store.cpp index acb0e704c..feafefa9f 100644 --- a/src/homelogstore/log_store.cpp +++ b/src/homelogstore/log_store.cpp @@ -173,6 +173,11 @@ void HomeLogStore::on_write_completion(logstore_req* const req, const logdev_key m_flush_batch_max_lsn = std::max(m_flush_batch_max_lsn, req->seq_num); HISTOGRAM_OBSERVE(HomeLogStoreMgrSI().m_metrics, logstore_append_latency, get_elapsed_time_us(req->start_time)); (req->cb) ? req->cb(req, ld_key) : m_comp_cb(req, ld_key); + + if (m_sync_flush_waiter_lsn.load() == req->seq_num) { + // Sync flush is waiting for this lsn to be completed, wake up the sync flush cv + m_sync_flush_cv.notify_one(); + } } void HomeLogStore::on_read_completion(logstore_req* const req, const logdev_key ld_key) { @@ -437,6 +442,76 @@ logstore_seq_num_t HomeLogStore::get_contiguous_completed_seq_num(const logstore return (logstore_seq_num_t)m_records.completed_upto(from + 1); } +void HomeLogStore::flush_sync(logstore_seq_num_t upto_seq_num) { + // Logdev flush is async call and if flush_sync is called on the same thread which could potentially do logdev + // flush, waiting sync would cause deadlock. + HS_DBG_ASSERT_EQ(LogDev::flush_in_current_thread(), false, + "Logstore flush sync cannot be called on same thread which could do logdev flush"); + + if (upto_seq_num == invalid_lsn()) { upto_seq_num = m_records.active_upto(); } + + // if we have flushed already, we are done + if (m_records.completed_upto() >= upto_seq_num) { return; } + { + std::unique_lock lk(m_sync_flush_mtx); + // Step 1: Mark the waiter lsn to the seqnum we wanted to wait for. The completion of every lsn checks + // for this and if this lsn is completed, will make a callback which signals the cv. + m_sync_flush_waiter_lsn.store(upto_seq_num); + // Step 2: After marking this lsn, we again do a check, to avoid a race where completion checked for no lsn + // and the lsn is stored in step 1 above. + if (m_records.completed_upto() >= upto_seq_num) { return; } + // Step 3: Force a flush (with least threshold) + m_logdev.flush_if_needed(); + // Step 4: Wait for completion + m_sync_flush_cv.wait(lk, [this, upto_seq_num] { return m_records.completed_upto() >= upto_seq_num; }); + // NOTE: We are not resetting the lsn because same seq number should never have 2 completions and thus not + // doing it saves an atomic instruction + } +} + +uint64_t HomeLogStore::rollback_async(logstore_seq_num_t to_lsn, on_rollback_cb_t cb) { + // Validate if the lsn to which it is rolledback to is not truncated. + auto ret = m_records.status(to_lsn + 1); + if (ret.is_out_of_range) { + HS_LOG_ASSERT(false, "Attempted to rollback to {} which is already truncated", to_lsn); + return 0; + } + + // Ensure that there are no pending lsn to flush. If so lets flush them now. + const auto from_lsn = get_contiguous_issued_seq_num(0); + if (get_contiguous_completed_seq_num(0) < from_lsn) { flush_sync(); } + HS_DBG_ASSERT_EQ(get_contiguous_completed_seq_num(0), get_contiguous_issued_seq_num(0), + "Still some pending lsns to flush, concurrent write and rollback is not supported"); + + // Do an in-memory rollback of lsns before we persist the log ids. This is done, so that subsequent appends can + // be queued without waiting for rollback async operation completion. It is safe to do so, since before returning + // from this method, we will queue ourselves to the flush lock and thus subsequent writes are guaranteed to go after + // this rollback is completed. + m_seq_num.store(to_lsn + 1, std::memory_order_release); // Rollback the next append lsn + logid_range_t logid_range = std::make_pair(m_records.at(to_lsn + 1).m_dev_key.idx, + m_records.at(from_lsn).m_dev_key.idx); // Get the logid range to rollback + m_records.rollback(to_lsn); // Rollback all bitset records and from here on, we can't access any lsns beyond to_lsn + + if (m_logdev.try_lock_flush([logid_range, to_lsn, this, comp_cb = std::move(cb)]() { + // Rollback the log_ids in the range, for this log store (which persists this info in its superblk) + m_logdev.rollback(m_store_id, logid_range); + + // Remove all truncation barriers on rolled back lsns + for (auto it = std::rbegin(m_truncation_barriers); it != std::rend(m_truncation_barriers); ++it) { + if (it->seq_num > to_lsn) { + m_truncation_barriers.erase(std::next(it).base()); + } else { + break; + } + } + m_flush_batch_max_lsn = invalid_lsn(); // Reset the flush batch for next batch. + if (comp_cb) { comp_cb(to_lsn); } + })) { + m_logdev.unlock_flush(); + } + return from_lsn - to_lsn; +} + sisl::status_response HomeLogStore::get_status(const sisl::status_request& request) { sisl::status_response response; if (request.json.contains("type") && request.json["type"] == "logstore_record") { diff --git a/src/homelogstore/log_store.hpp b/src/homelogstore/log_store.hpp index 9a9650b20..c2d1b5d72 100644 --- a/src/homelogstore/log_store.hpp +++ b/src/homelogstore/log_store.hpp @@ -149,8 +149,6 @@ class HomeLogStoreMgr { HomeLogStoreMgr& operator=(HomeLogStoreMgr&&) noexcept = delete; [[nodiscard]] static HomeLogStoreMgr& instance(); - static void data_meta_blk_found_cb(meta_blk* const mblk, const sisl::byte_view buf, const size_t size); - static void ctrl_meta_blk_found_cb(meta_blk* const mblk, const sisl::byte_view buf, const size_t size); static void fake_reboot(); /** @@ -263,6 +261,9 @@ struct truncate_req { int trunc_outstanding{0}; }; +static constexpr logstore_seq_num_t invalid_lsn() { return std::numeric_limits< logstore_seq_num_t >::min(); } +typedef std::function< void(logstore_seq_num_t) > on_rollback_cb_t; + class HomeLogStore : public std::enable_shared_from_this< HomeLogStore > { public: friend class HomeLogStoreMgr; @@ -486,15 +487,13 @@ class HomeLogStore : public std::enable_shared_from_this< HomeLogStore > { } /** - * @brief Sync the log store to disk + * @brief Flush this log store (write/sync to disk) up to the sequence number * - * @param + * @param seq_num Sequence number upto which logs are to be flushed. If not provided, will wait to flush all seq + * numbers issued prior. * @return True on success */ - bool sync() { - // TODO: Implement this method - return true; - } + void flush_sync(logstore_seq_num_t upto_seq_num = invalid_lsn()); /** * @brief Rollback the given instance to the given sequence number @@ -502,10 +501,7 @@ class HomeLogStore : public std::enable_shared_from_this< HomeLogStore > { * @param seq_num Sequence number back which logs are to be rollbacked * @return True on success */ - bool rollback(const logstore_seq_num_t seq_num) { - // TODO: Implement this method - return true; - } + uint64_t rollback_async(logstore_seq_num_t to_lsn, on_rollback_cb_t cb); [[nodiscard]] LogStoreFamily& get_family() { return m_logstore_family; } @@ -540,6 +536,11 @@ class HomeLogStore : public std::enable_shared_from_this< HomeLogStore > { // batch logstore_seq_num_t m_flush_batch_max_lsn{std::numeric_limits< logstore_seq_num_t >::min()}; + // Sync flush sections + std::atomic< logstore_seq_num_t > m_sync_flush_waiter_lsn{invalid_lsn()}; + std::mutex m_sync_flush_mtx; + std::condition_variable m_sync_flush_cv; + std::vector< seq_ld_key_pair > m_truncation_barriers; // List of truncation barriers truncation_info m_safe_truncation_boundary; sisl::sobject_ptr m_sobject; diff --git a/src/homelogstore/log_store_family.cpp b/src/homelogstore/log_store_family.cpp index 07b6eeadd..17bb5c196 100644 --- a/src/homelogstore/log_store_family.cpp +++ b/src/homelogstore/log_store_family.cpp @@ -32,17 +32,13 @@ SISL_LOGGING_DECL(logstore) LogStoreFamily::LogStoreFamily(const logstore_family_id_t f_id) : m_family_id{f_id}, - m_metablk_name{std::string("LogDevFamily") + std::to_string(f_id)}, - m_log_dev{f_id, m_metablk_name} { -} - -void LogStoreFamily::meta_blk_found_cb(meta_blk* const mblk, const sisl::byte_view buf, const size_t size) { - m_log_dev.meta_blk_found(mblk, buf, size); + m_name{std::string("LogDevFamily") + std::to_string(f_id)}, + m_log_dev{f_id, m_name} { } void LogStoreFamily::start(const bool format, JournalVirtualDev* blk_store) { auto hb = HomeStoreBase::safe_instance(); - m_sobject = hb->sobject_mgr()->create_object("LogStoreFamily", m_metablk_name, + m_sobject = hb->sobject_mgr()->create_object("LogStoreFamily", m_name, std::bind(&LogStoreFamily::get_status, this, std::placeholders::_1)); m_log_dev.register_store_found_cb(bind_this(LogStoreFamily::on_log_store_found, 2)); diff --git a/src/homelogstore/log_store_family.hpp b/src/homelogstore/log_store_family.hpp index 436fd70bb..b1f4e8e84 100644 --- a/src/homelogstore/log_store_family.hpp +++ b/src/homelogstore/log_store_family.hpp @@ -54,7 +54,6 @@ class LogStoreFamily { LogStoreFamily& operator=(const LogStoreFamily&) = delete; LogStoreFamily& operator=(LogStoreFamily&&) noexcept = delete; - void meta_blk_found_cb(meta_blk* const mblk, const sisl::byte_view buf, const size_t size); void start(const bool format, JournalVirtualDev* blk_store); void stop(); @@ -69,7 +68,6 @@ class LogStoreFamily { void device_truncate_in_user_reactor(const std::shared_ptr< truncate_req >& treq); [[nodiscard]] nlohmann::json dump_log_store(const log_dump_req& dum_req); - std::string metablk_name() const { return m_metablk_name; } std::shared_ptr< HomeLogStore > find_logstore_by_id(logstore_id_t store_id); LogDev& logdev() { return m_log_dev; } @@ -77,7 +75,7 @@ class LogStoreFamily { sisl::status_response get_status(const sisl::status_request& request) const; sisl::sobject_ptr sobject() { return m_sobject; } - std::string get_name() const { return m_metablk_name; } + std::string get_name() const { return m_name; } [[nodiscard]] logdev_key do_device_truncate(const bool dry_run = false); @@ -98,7 +96,7 @@ class LogStoreFamily { std::unordered_set< logstore_id_t > m_unopened_store_id; std::unordered_map< logstore_id_t, logid_t > m_last_flush_info; logstore_family_id_t m_family_id; - std::string m_metablk_name; + std::string m_name; LogDev m_log_dev; sisl::sobject_ptr m_sobject; }; diff --git a/src/homelogstore/log_store_mgr.cpp b/src/homelogstore/log_store_mgr.cpp index 4d7e849a4..0cabdcada 100644 --- a/src/homelogstore/log_store_mgr.cpp +++ b/src/homelogstore/log_store_mgr.cpp @@ -37,20 +37,7 @@ HomeLogStoreMgr& HomeLogStoreMgr::instance() { HomeLogStoreMgr::HomeLogStoreMgr() : m_logstore_families{std::make_unique< LogStoreFamily >(DATA_LOG_FAMILY_IDX), - std::make_unique< LogStoreFamily >(CTRL_LOG_FAMILY_IDX)} { - MetaBlkMgrSI()->register_handler(data_log_family()->metablk_name(), HomeLogStoreMgr::data_meta_blk_found_cb, - nullptr); - MetaBlkMgrSI()->register_handler(ctrl_log_family()->metablk_name(), HomeLogStoreMgr::ctrl_meta_blk_found_cb, - nullptr); -} - -void HomeLogStoreMgr::data_meta_blk_found_cb(meta_blk* const mblk, const sisl::byte_view buf, const size_t size) { - HomeLogStoreMgrSI().m_logstore_families[DATA_LOG_FAMILY_IDX]->meta_blk_found_cb(mblk, buf, size); -} - -void HomeLogStoreMgr::ctrl_meta_blk_found_cb(meta_blk* const mblk, const sisl::byte_view buf, const size_t size) { - HomeLogStoreMgrSI().m_logstore_families[CTRL_LOG_FAMILY_IDX]->meta_blk_found_cb(mblk, buf, size); -} + std::make_unique< LogStoreFamily >(CTRL_LOG_FAMILY_IDX)} {} void HomeLogStoreMgr::start(const bool format) { m_hb = HomeStoreBase::safe_instance(); @@ -76,12 +63,7 @@ void HomeLogStoreMgr::stop() { m_hb.reset(); } -void HomeLogStoreMgr::fake_reboot() { - MetaBlkMgrSI()->register_handler(HomeLogStoreMgrSI().data_log_family()->metablk_name(), - HomeLogStoreMgr::data_meta_blk_found_cb, nullptr); - MetaBlkMgrSI()->register_handler(HomeLogStoreMgrSI().ctrl_log_family()->metablk_name(), - HomeLogStoreMgr::ctrl_meta_blk_found_cb, nullptr); -} +void HomeLogStoreMgr::fake_reboot() {} std::shared_ptr< HomeLogStore > HomeLogStoreMgr::create_new_log_store(const logstore_family_id_t family_id, const bool append_mode) { @@ -156,7 +138,7 @@ void HomeLogStoreMgr::start_threads() { } } -LogStoreFamily* HomeLogStoreMgr::get_family(std::string family_name){ +LogStoreFamily* HomeLogStoreMgr::get_family(std::string family_name) { for (auto& l : m_logstore_families) { if (l->get_name() == family_name) { return l.get(); } } @@ -167,20 +149,18 @@ nlohmann::json HomeLogStoreMgr::dump_log_store(const log_dump_req& dump_req) { nlohmann::json json_dump{}; // create root object if (dump_req.log_store == nullptr) { for (auto& family : m_logstore_families) { - json_dump[family->metablk_name()] = family->dump_log_store(dump_req); + json_dump[family->get_name()] = family->dump_log_store(dump_req); } } else { auto& family = dump_req.log_store->get_family(); // must use operator= construction as copy construction results in error nlohmann::json val = family.dump_log_store(dump_req); - json_dump[family.metablk_name()] = std::move(val); + json_dump[family.get_name()] = std::move(val); } return json_dump; } -sisl::status_response HomeLogStoreMgr::get_status(const sisl::status_request& request) const { - return {}; -} +sisl::status_response HomeLogStoreMgr::get_status(const sisl::status_request& request) const { return {}; } HomeLogStoreMgrMetrics::HomeLogStoreMgrMetrics() : sisl::MetricsGroup("LogStores", "AllLogStores") { REGISTER_COUNTER(logstores_count, "Total number of log stores", sisl::_publish_as::publish_as_gauge);