diff options
author | robot-piglet <robot-piglet@yandex-team.com> | 2023-11-23 12:11:32 +0300 |
---|---|---|
committer | robot-piglet <robot-piglet@yandex-team.com> | 2023-11-23 13:02:05 +0300 |
commit | 9201d0db8fffd56fed895bb7dc4e747dba1d0952 (patch) | |
tree | 013c38f07183a73acc38deee949011fb2c40de74 | |
parent | 84dae038d8c9caf41667706b01c3785c5ae27242 (diff) | |
download | ydb-9201d0db8fffd56fed895bb7dc4e747dba1d0952.tar.gz |
Intermediate changes
-rw-r--r-- | yt/yql/plugin/bridge/interface.h | 6 | ||||
-rw-r--r-- | yt/yql/plugin/bridge/plugin.cpp | 15 | ||||
-rw-r--r-- | yt/yql/plugin/bridge/ya.make | 1 | ||||
-rw-r--r-- | yt/yql/plugin/dynamic/dylib.exports | 2 | ||||
-rw-r--r-- | yt/yql/plugin/dynamic/impl.cpp | 4 | ||||
-rw-r--r-- | yt/yql/plugin/plugin.h | 2 |
6 files changed, 16 insertions, 14 deletions
diff --git a/yt/yql/plugin/bridge/interface.h b/yt/yql/plugin/bridge/interface.h index 0b1b82f7b5..4905264965 100644 --- a/yt/yql/plugin/bridge/interface.h +++ b/yt/yql/plugin/bridge/interface.h @@ -10,14 +10,12 @@ //////////////////////////////////////////////////////////////////////////////// // NB(mpereskokova): don't forget to update min_required_abi_version at yt/yql/agent/config.cpp and abi_version in yt/yql/plugin/dynamic/impl.cpp during breaking changes -using TFuncBridgeGetABIVersion = ssize_t(); +using TFuncBridgeGetAbiVersion = ssize_t(); //////////////////////////////////////////////////////////////////////////////// struct TBridgeYqlPluginOptions { - ssize_t RequiredABIVersion; - const char* SingletonsConfig = nullptr; ssize_t SingletonsConfigLength = 0; @@ -96,6 +94,6 @@ using TFuncBridgeGetProgress = TBridgeQueryResult*(TBridgeYqlPlugin* plugin, con XX(BridgeFreeQueryResult) \ XX(BridgeRun) \ XX(BridgeGetProgress) \ - XX(BridgeGetABIVersion) + XX(BridgeGetAbiVersion) //////////////////////////////////////////////////////////////////////////////// diff --git a/yt/yql/plugin/bridge/plugin.cpp b/yt/yql/plugin/bridge/plugin.cpp index 5b00db4a08..0bc72592cf 100644 --- a/yt/yql/plugin/bridge/plugin.cpp +++ b/yt/yql/plugin/bridge/plugin.cpp @@ -3,10 +3,10 @@ #include "interface.h" #include <yt/yql/plugin/plugin.h> -#include <util/system/dynlib.h> -#include <vector> -#include <optional> +#include <yt/yt/core/misc/error.h> + +#include <util/system/dynlib.h> namespace NYT::NYqlPlugin { namespace NBridge { @@ -27,6 +27,10 @@ std::optional<TString> ToString(const char* str, size_t strLength) //////////////////////////////////////////////////////////////////////////////// +const auto RequiredAbiVersion = 0; + +//////////////////////////////////////////////////////////////////////////////// + class TDynamicYqlPlugin { public: @@ -38,6 +42,10 @@ public: #define XX(function) function = reinterpret_cast<TFunc ## function*>(Library_.Sym(#function)); FOR_EACH_BRIDGE_INTERFACE_FUNCTION(XX); #undef XX + + if (RequiredAbiVersion != BridgeGetAbiVersion()) { + THROW_ERROR_EXCEPTION("YQL plugin ABI version mismatch; expected version %v, actual version %v", RequiredAbiVersion, BridgeGetAbiVersion()); + } } protected: @@ -61,7 +69,6 @@ public: TString singletonsConfig = options.SingletonsConfig ? options.SingletonsConfig.ToString() : "{}"; TBridgeYqlPluginOptions bridgeOptions { - .RequiredABIVersion = options.RequiredABIVersion, .SingletonsConfig = singletonsConfig.data(), .SingletonsConfigLength = static_cast<int>(singletonsConfig.size()), .GatewayConfig = options.GatewayConfig.AsStringBuf().Data(), diff --git a/yt/yql/plugin/bridge/ya.make b/yt/yql/plugin/bridge/ya.make index 93425c5284..3f2bc1fe04 100644 --- a/yt/yql/plugin/bridge/ya.make +++ b/yt/yql/plugin/bridge/ya.make @@ -6,6 +6,7 @@ SRCS( PEERDIR( yt/yql/plugin + yt/yt/core ) END() diff --git a/yt/yql/plugin/dynamic/dylib.exports b/yt/yql/plugin/dynamic/dylib.exports index b979ce7e18..e4dd9fc44e 100644 --- a/yt/yql/plugin/dynamic/dylib.exports +++ b/yt/yql/plugin/dynamic/dylib.exports @@ -4,7 +4,7 @@ BridgeFreeYqlPlugin BridgeFreeQueryResult BridgeRun BridgeGetProgress -BridgeGetABIVersion +BridgeGetAbiVersion # YQL <-> YQL UDFs interface. UdfAllocateWithSize diff --git a/yt/yql/plugin/dynamic/impl.cpp b/yt/yql/plugin/dynamic/impl.cpp index af1989d97c..aba5a5bc66 100644 --- a/yt/yql/plugin/dynamic/impl.cpp +++ b/yt/yql/plugin/dynamic/impl.cpp @@ -10,15 +10,13 @@ extern "C" { //////////////////////////////////////////////////////////////////////////////// -ssize_t BridgeGetABIVersion() +ssize_t BridgeGetAbiVersion() { return 0; } TBridgeYqlPlugin* BridgeCreateYqlPlugin(const TBridgeYqlPluginOptions* bridgeOptions) { - YT_VERIFY(bridgeOptions->RequiredABIVersion == BridgeGetABIVersion()); - static const TYsonString EmptyMap = TYsonString(TString("{}")); auto operationAttributes = bridgeOptions->OperationAttributes diff --git a/yt/yql/plugin/plugin.h b/yt/yql/plugin/plugin.h index f34e0ef070..9c9cc50798 100644 --- a/yt/yql/plugin/plugin.h +++ b/yt/yql/plugin/plugin.h @@ -26,8 +26,6 @@ using TQueryId = TGuid; class TYqlPluginOptions { public: - int RequiredABIVersion; - TYsonString SingletonsConfig; TYsonString GatewayConfig; TYsonString FileStorageConfig; |