diff --git a/be/src/http/ev_http_server.cpp b/be/src/http/ev_http_server.cpp index cf8e71c5dd..af962052c3 100644 --- a/be/src/http/ev_http_server.cpp +++ b/be/src/http/ev_http_server.cpp @@ -70,14 +70,14 @@ static int on_connection(struct evhttp_request* req, void* param) { } EvHttpServer::EvHttpServer(int port, int num_workers) - : _host("0.0.0.0"), _port(port), _num_workers(num_workers) { + : _host("0.0.0.0"), _port(port), _num_workers(num_workers), _real_port(0) { DCHECK_GT(_num_workers, 0); auto res = pthread_rwlock_init(&_rw_lock, nullptr); DCHECK_EQ(res, 0); } EvHttpServer::EvHttpServer(const std::string& host, int port, int num_workers) - : _host(host), _port(port), _num_workers(num_workers) { + : _host(host), _port(port), _num_workers(num_workers), _real_port(0) { DCHECK_GT(_num_workers, 0); auto res = pthread_rwlock_init(&_rw_lock, nullptr); DCHECK_EQ(res, 0); @@ -145,6 +145,14 @@ Status EvHttpServer::_bind() { << ", errmsg=" << strerror_r(errno, buf, sizeof(buf)); return Status::InternalError(ss.str()); } + if (_port == 0) { + struct sockaddr_in addr; + socklen_t socklen = sizeof(addr); + const int rc = getsockname(_server_fd, (struct sockaddr *)&addr, &socklen); + if (rc == 0) { + _real_port = ntohs(addr.sin_port); + } + } res = butil::make_non_blocking(_server_fd); if (res < 0) { char buf[64]; diff --git a/be/src/http/ev_http_server.h b/be/src/http/ev_http_server.h index acc6d71f9e..466104e9d3 100644 --- a/be/src/http/ev_http_server.h +++ b/be/src/http/ev_http_server.h @@ -46,6 +46,11 @@ public: // callback int on_header(struct evhttp_request* ev_req); + // get real port + int get_real_port() { + return _real_port; + } + private: Status _bind(); HttpHandler* _find_handler(HttpRequest* req); @@ -55,6 +60,8 @@ private: std::string _host; int _port; int _num_workers; + // used for unittest, set port to 0, os will choose a free port; + int _real_port; int _server_fd = -1; std::vector _workers; diff --git a/be/src/runtime/small_file_mgr.cpp b/be/src/runtime/small_file_mgr.cpp index 7954b04e0d..b228cb2222 100644 --- a/be/src/runtime/small_file_mgr.cpp +++ b/be/src/runtime/small_file_mgr.cpp @@ -166,13 +166,9 @@ Status SmallFileMgr::_download_file( HttpClient client; std::stringstream url_ss; -#ifndef BE_TEST TMasterInfo* master_info = _exec_env->master_info(); url_ss << master_info->network_address.hostname << ":" << master_info->http_port << "/api/get_small_file?" << "file_id=" << file_id << "&token=" << master_info->token; -#else - url_ss << "127.0.0.1:29997/api/get_small_file?file_id=" << file_id; -#endif std::string url = url_ss.str(); diff --git a/be/test/exec/es_scan_reader_test.cpp b/be/test/exec/es_scan_reader_test.cpp index 32f8af5def..cba77356d6 100644 --- a/be/test/exec/es_scan_reader_test.cpp +++ b/be/test/exec/es_scan_reader_test.cpp @@ -192,6 +192,7 @@ static RestSearchAction rest_search_action = RestSearchAction(); static RestSearchScrollAction rest_search_scroll_action = RestSearchScrollAction(); static RestClearScrollAction rest_clear_scroll_action = RestClearScrollAction(); static EvHttpServer* mock_es_server = nullptr; +static int real_port = 0; class MockESServerTest : public testing::Test { public: @@ -199,11 +200,13 @@ public: ~MockESServerTest() override { } static void SetUpTestCase() { - mock_es_server = new EvHttpServer(29386); + mock_es_server = new EvHttpServer(0); mock_es_server->register_handler(POST, "/{index}/{type}/_search", &rest_search_action); mock_es_server->register_handler(POST, "/_search/scroll", &rest_search_scroll_action); mock_es_server->register_handler(DELETE, "/_search/scroll", &rest_clear_scroll_action); mock_es_server->start(); + real_port = mock_es_server->get_real_port(); + ASSERT_NE(0, real_port); } static void TearDownTestCase() { @@ -212,7 +215,7 @@ public: }; TEST_F(MockESServerTest, workflow) { - std::string target = "http://127.0.0.1:29386"; + std::string target = "http://127.0.0.1:" + std::to_string(real_port); std::vector fields = {"id", "value"}; std::map props; props[ESScanReader::KEY_INDEX] = "tindex"; diff --git a/be/test/exec/orc_scanner_test.cpp b/be/test/exec/orc_scanner_test.cpp index 1fdee6ceaa..60c01902b6 100644 --- a/be/test/exec/orc_scanner_test.cpp +++ b/be/test/exec/orc_scanner_test.cpp @@ -544,6 +544,8 @@ TEST_F(OrcScannerTest, normal3) { node.__set_type(TTypeNodeType::SCALAR); TScalarType scalar_type; scalar_type.__set_type(TPrimitiveType::DECIMAL); + scalar_type.__set_precision(64); + scalar_type.__set_scale(64); node.__set_scalar_type(scalar_type); decimal_type.types.push_back(node); } diff --git a/be/test/exec/tablet_sink_test.cpp b/be/test/exec/tablet_sink_test.cpp index eed036b113..0760f1d8e4 100644 --- a/be/test/exec/tablet_sink_test.cpp +++ b/be/test/exec/tablet_sink_test.cpp @@ -33,6 +33,10 @@ #include "util/brpc_stub_cache.h" #include "util/cpu_info.h" #include "runtime/descriptor_helper.h" +#include "runtime/bufferpool/reservation_tracker.h" +#include "runtime/exec_env.h" +#include "runtime/result_queue_mgr.h" +#include "runtime/thread_resource_mgr.h" namespace doris { namespace stream_load { @@ -45,26 +49,27 @@ public: virtual ~OlapTableSinkTest() { } void SetUp() override { k_add_batch_status = Status::OK(); - - _env._thread_mgr = new ThreadResourceMgr(); - _env._master_info = new TMasterInfo(); - _env._load_stream_mgr = new LoadStreamMgr(); - _env._brpc_stub_cache = new BrpcStubCache(); + _env = ExecEnv::GetInstance(); + _env->_thread_mgr = new ThreadResourceMgr(); + _env->_master_info = new TMasterInfo(); + _env->_load_stream_mgr = new LoadStreamMgr(); + _env->_brpc_stub_cache = new BrpcStubCache(); + _env->_buffer_reservation = new ReservationTracker(); config::tablet_writer_rpc_timeout_sec = 600; } void TearDown() override { - delete _env._brpc_stub_cache; - _env._brpc_stub_cache = nullptr; - delete _env._load_stream_mgr; - _env._load_stream_mgr = nullptr; - delete _env._master_info; - _env._master_info = nullptr; - delete _env._thread_mgr; - _env._thread_mgr = nullptr; + delete _env->_brpc_stub_cache; + _env->_brpc_stub_cache = nullptr; + delete _env->_load_stream_mgr; + _env->_load_stream_mgr = nullptr; + delete _env->_master_info; + _env->_master_info = nullptr; + delete _env->_thread_mgr; + _env->_thread_mgr = nullptr; } private: - ExecEnv _env; + ExecEnv* _env; }; TDataSink get_data_sink(TDescriptorTable* desc_tbl) { @@ -335,7 +340,7 @@ TEST_F(OlapTableSinkTest, normal) { TUniqueId fragment_id; TQueryOptions query_options; query_options.batch_size = 1; - RuntimeState state(fragment_id, query_options, TQueryGlobals(), &_env); + RuntimeState state(fragment_id, query_options, TQueryGlobals(), _env); state.init_mem_trackers(TUniqueId()); // state._query_mem_tracker.reset(new MemTracker()); // state._instance_mem_tracker.reset(new MemTracker(-1, "test", state._query_mem_tracker.get())); @@ -443,7 +448,7 @@ TEST_F(OlapTableSinkTest, convert) { TUniqueId fragment_id; TQueryOptions query_options; query_options.batch_size = 1024; - RuntimeState state(fragment_id, query_options, TQueryGlobals(), &_env); + RuntimeState state(fragment_id, query_options, TQueryGlobals(), _env); state.init_mem_trackers(TUniqueId()); ObjectPool obj_pool; @@ -570,7 +575,7 @@ TEST_F(OlapTableSinkTest, init_fail1) { TUniqueId fragment_id; TQueryOptions query_options; query_options.batch_size = 1; - RuntimeState state(fragment_id, query_options, TQueryGlobals(), &_env); + RuntimeState state(fragment_id, query_options, TQueryGlobals(), _env); state.init_mem_trackers(TUniqueId()); ObjectPool obj_pool; @@ -628,7 +633,7 @@ TEST_F(OlapTableSinkTest, init_fail3) { TUniqueId fragment_id; TQueryOptions query_options; query_options.batch_size = 1; - RuntimeState state(fragment_id, query_options, TQueryGlobals(), &_env); + RuntimeState state(fragment_id, query_options, TQueryGlobals(), _env); state.init_mem_trackers(TUniqueId()); ObjectPool obj_pool; @@ -687,7 +692,7 @@ TEST_F(OlapTableSinkTest, init_fail4) { TUniqueId fragment_id; TQueryOptions query_options; query_options.batch_size = 1; - RuntimeState state(fragment_id, query_options, TQueryGlobals(), &_env); + RuntimeState state(fragment_id, query_options, TQueryGlobals(), _env); state.init_mem_trackers(TUniqueId()); ObjectPool obj_pool; @@ -754,7 +759,7 @@ TEST_F(OlapTableSinkTest, add_batch_failed) { TUniqueId fragment_id; TQueryOptions query_options; query_options.batch_size = 1; - RuntimeState state(fragment_id, query_options, TQueryGlobals(), &_env); + RuntimeState state(fragment_id, query_options, TQueryGlobals(), _env); state.init_mem_trackers(TUniqueId()); ObjectPool obj_pool; @@ -849,7 +854,7 @@ TEST_F(OlapTableSinkTest, decimal) { TUniqueId fragment_id; TQueryOptions query_options; query_options.batch_size = 1; - RuntimeState state(fragment_id, query_options, TQueryGlobals(), &_env); + RuntimeState state(fragment_id, query_options, TQueryGlobals(), _env); state.init_mem_trackers(TUniqueId()); ObjectPool obj_pool; diff --git a/be/test/exprs/bitmap_function_test.cpp b/be/test/exprs/bitmap_function_test.cpp index f41015932d..c1bf245129 100644 --- a/be/test/exprs/bitmap_function_test.cpp +++ b/be/test/exprs/bitmap_function_test.cpp @@ -149,14 +149,20 @@ TEST_F(BitmapFunctionsTest, bitmap_union) { StringVal src1 = convert_bitmap_to_string(ctx, bitmap1); BitmapFunctions::bitmap_union(ctx, src1, &dst); - BitmapValue bitmap2; StringVal src2 = convert_bitmap_to_string(ctx, bitmap1); BitmapFunctions::bitmap_union(ctx, src2, &dst); + BitmapValue bitmap3(2048); + StringVal src3 = convert_bitmap_to_string(ctx, bitmap3); + BitmapFunctions::bitmap_union(ctx, src3, &dst); + + StringVal src4 = convert_bitmap_to_string(ctx, bitmap3); + BitmapFunctions::bitmap_union(ctx, src4, &dst); + StringVal serialized = BitmapFunctions::bitmap_serialize(ctx, dst); BigIntVal result = BitmapFunctions::bitmap_count(ctx, serialized); - BigIntVal expected(1); + BigIntVal expected(2); ASSERT_EQ(expected, result); } diff --git a/be/test/http/http_client_test.cpp b/be/test/http/http_client_test.cpp index ccfb74cf3e..99917dce38 100644 --- a/be/test/http/http_client_test.cpp +++ b/be/test/http/http_client_test.cpp @@ -71,6 +71,8 @@ public: static HttpClientTestSimpleGetHandler s_simple_get_handler = HttpClientTestSimpleGetHandler(); static HttpClientTestSimplePostHandler s_simple_post_handler = HttpClientTestSimplePostHandler(); static EvHttpServer* s_server = nullptr; +static int real_port = 0; +static std::string hostname = ""; class HttpClientTest : public testing::Test { public: @@ -78,11 +80,14 @@ public: ~HttpClientTest() override { } static void SetUpTestCase() { - s_server = new EvHttpServer(29998); + s_server = new EvHttpServer(0); s_server->register_handler(GET, "/simple_get", &s_simple_get_handler); s_server->register_handler(HEAD, "/simple_get", &s_simple_get_handler); s_server->register_handler(POST, "/simple_post", &s_simple_post_handler); s_server->start(); + real_port = s_server->get_real_port(); + ASSERT_NE(0, real_port); + hostname = "http://127.0.0.1:" + std::to_string(real_port); } static void TearDownTestCase() { @@ -92,7 +97,7 @@ public: TEST_F(HttpClientTest, get_normal) { HttpClient client; - auto st = client.init("http://127.0.0.1:29998/simple_get"); + auto st = client.init(hostname + "/simple_get"); ASSERT_TRUE(st.ok()); client.set_method(GET); client.set_basic_auth("test1", ""); @@ -102,7 +107,7 @@ TEST_F(HttpClientTest, get_normal) { ASSERT_STREQ("test1", response.c_str()); // for head - st = client.init("http://127.0.0.1:29998/simple_get"); + st = client.init(hostname + "/simple_get"); ASSERT_TRUE(st.ok()); client.set_method(HEAD); client.set_basic_auth("test1", ""); @@ -113,7 +118,7 @@ TEST_F(HttpClientTest, get_normal) { TEST_F(HttpClientTest, download) { HttpClient client; - auto st = client.init("http://127.0.0.1:29998/simple_get"); + auto st = client.init(hostname + "/simple_get"); ASSERT_TRUE(st.ok()); client.set_basic_auth("test1", ""); std::string local_file = ".http_client_test.dat"; @@ -129,7 +134,7 @@ TEST_F(HttpClientTest, download) { TEST_F(HttpClientTest, get_failed) { HttpClient client; - auto st = client.init("http://127.0.0.1:29998/simple_get"); + auto st = client.init(hostname + "/simple_get"); ASSERT_TRUE(st.ok()); client.set_method(GET); client.set_basic_auth("test1", ""); @@ -140,7 +145,7 @@ TEST_F(HttpClientTest, get_failed) { TEST_F(HttpClientTest, post_normal) { HttpClient client; - auto st = client.init("http://127.0.0.1:29998/simple_post"); + auto st = client.init(hostname + "/simple_post"); ASSERT_TRUE(st.ok()); client.set_method(POST); client.set_basic_auth("test1", ""); @@ -154,7 +159,7 @@ TEST_F(HttpClientTest, post_normal) { TEST_F(HttpClientTest, post_failed) { HttpClient client; - auto st = client.init("http://127.0.0.1:29998/simple_pos"); + auto st = client.init(hostname + "/simple_pos"); ASSERT_TRUE(st.ok()); client.set_method(POST); client.set_basic_auth("test1", ""); diff --git a/be/test/runtime/memory_scratch_sink_test.cpp b/be/test/runtime/memory_scratch_sink_test.cpp index d228a9cb03..a4fa09d550 100644 --- a/be/test/runtime/memory_scratch_sink_test.cpp +++ b/be/test/runtime/memory_scratch_sink_test.cpp @@ -30,6 +30,7 @@ #include "gen_cpp/PlanNodes_types.h" #include "olap/options.h" #include "olap/row.h" +#include "runtime/bufferpool/reservation_tracker.h" #include "runtime/exec_env.h" #include "runtime/memory_scratch_sink.h" #include "runtime/mem_tracker.h" @@ -87,7 +88,7 @@ public: private: ObjectPool _obj_pool; - ExecEnv _exec_env; + ExecEnv* _exec_env; // std::vector _exprs; TDescriptorTable _t_desc_table; RuntimeState* _state; @@ -101,6 +102,7 @@ private: void MemoryScratchSinkTest::init() { + _exec_env = ExecEnv::GetInstance(); init_desc_tbl(); init_runtime_state(); } @@ -108,14 +110,15 @@ void MemoryScratchSinkTest::init() { void MemoryScratchSinkTest::init_runtime_state() { ResultQueueMgr* result_queue_mgr = new ResultQueueMgr(); ThreadResourceMgr* thread_mgr = new ThreadResourceMgr(); - _exec_env._result_queue_mgr = result_queue_mgr; - _exec_env._thread_mgr = thread_mgr; + _exec_env->_result_queue_mgr = result_queue_mgr; + _exec_env->_thread_mgr = thread_mgr; + _exec_env->_buffer_reservation = new ReservationTracker(); TQueryOptions query_options; query_options.batch_size = 1024; TUniqueId query_id; query_id.lo = 10; query_id.hi = 100; - _state = new RuntimeState(query_id, query_options, TQueryGlobals(), &_exec_env); + _state = new RuntimeState(query_id, query_options, TQueryGlobals(), _exec_env); _state->init_instance_mem_tracker(); _mem_tracker = new MemTracker(-1, "MemoryScratchSinkTest", _state->instance_mem_tracker()); _state->set_desc_tbl(_desc_tbl); diff --git a/be/test/runtime/small_file_mgr_test.cpp b/be/test/runtime/small_file_mgr_test.cpp index 121ddddeeb..5c6e875615 100644 --- a/be/test/runtime/small_file_mgr_test.cpp +++ b/be/test/runtime/small_file_mgr_test.cpp @@ -27,6 +27,8 @@ #include "http/http_channel.h" #include "http/http_handler.h" #include "http/http_request.h" +#include "gen_cpp/HeartbeatService_types.h" +#include "runtime/exec_env.h" int main(int argc, char* argv[]); @@ -76,6 +78,7 @@ public: static SmallFileMgrTestHandler s_test_handler = SmallFileMgrTestHandler(); static EvHttpServer* s_server = nullptr; +static int real_port = 0; class SmallFileMgrTest: public testing::Test { public: @@ -83,9 +86,11 @@ public: virtual ~SmallFileMgrTest() { } static void SetUpTestCase() { - s_server = new EvHttpServer(29997); + s_server = new EvHttpServer(0); s_server->register_handler(GET, "/api/get_small_file", &s_test_handler); s_server->start(); + real_port = s_server->get_real_port(); + ASSERT_NE(0, real_port); } static void TearDownTestCase() { @@ -100,7 +105,14 @@ public: }; TEST_F(SmallFileMgrTest, test_get_file) { - SmallFileMgr mgr(nullptr, g_download_path); + TNetworkAddress addr; + addr.__set_hostname("http://127.0.0.1"); + TMasterInfo info; + info.__set_network_address(addr); + info.__set_http_port(real_port); + ExecEnv* env = ExecEnv::GetInstance(); + env->_master_info = &info; + SmallFileMgr mgr(env, g_download_path); Status st = mgr.init(); ASSERT_TRUE(st.ok()); diff --git a/be/test/runtime/user_function_cache_test.cpp b/be/test/runtime/user_function_cache_test.cpp index a4dc1fc317..b7e7513202 100644 --- a/be/test/runtime/user_function_cache_test.cpp +++ b/be/test/runtime/user_function_cache_test.cpp @@ -63,6 +63,8 @@ public: static UserFunctionTestHandler s_test_handler = UserFunctionTestHandler(); static EvHttpServer* s_server = nullptr; +static int real_port = 0; +static std::string hostname = ""; std::string my_add_md5sum; @@ -86,9 +88,12 @@ public: UserFunctionCacheTest() { } virtual ~UserFunctionCacheTest() { } static void SetUpTestCase() { - s_server = new EvHttpServer(29987); + s_server = new EvHttpServer(0); s_server->register_handler(GET, "/{FILE}", &s_test_handler); s_server->start(); + real_port = s_server->get_real_port(); + ASSERT_NE(0, real_port); + hostname = "http://127.0.0.1:" + std::to_string(real_port); // compile code to so system("g++ -shared ./be/test/runtime/test_data/user_function_cache/lib/my_add.cc -o ./be/test/runtime/test_data/user_function_cache/lib/my_add.so"); @@ -130,7 +135,7 @@ TEST_F(UserFunctionCacheTest, download_normal) { // get my_add st = cache.get_function_ptr(1, "_Z6my_addv", - "http://127.0.0.1:29987/my_add.so", + hostname + "/my_add.so", my_add_md5sum, &fn_ptr, &entry); ASSERT_TRUE(st.ok()); ASSERT_TRUE(k_is_downloaded); @@ -140,7 +145,7 @@ TEST_F(UserFunctionCacheTest, download_normal) { // get my_del st = cache.get_function_ptr(1, "_Z6my_delv", - "http://127.0.0.1:29987/my_add.so", + hostname + "/my_add.so", my_add_md5sum, &fn_ptr, &entry); ASSERT_TRUE(st.ok()); ASSERT_NE(nullptr, fn_ptr); @@ -149,7 +154,7 @@ TEST_F(UserFunctionCacheTest, download_normal) { // get my_mul st = cache.get_function_ptr(1, "_Z6my_mulv", - "http://127.0.0.1:29987/my_add.so", + hostname + "/my_add.so", my_add_md5sum, &fn_ptr, &entry); ASSERT_FALSE(st.ok()); @@ -165,7 +170,7 @@ TEST_F(UserFunctionCacheTest, load_normal) { UserFunctionCacheEntry* entry = nullptr; st = cache.get_function_ptr(1, "_Z6my_addv", - "http://127.0.0.1:29987/my_add.so", + hostname + "/my_add.so", my_add_md5sum, &fn_ptr, &entry); ASSERT_TRUE(st.ok()); ASSERT_FALSE(k_is_downloaded); @@ -183,7 +188,7 @@ TEST_F(UserFunctionCacheTest, download_fail) { UserFunctionCacheEntry* entry = nullptr; st = cache.get_function_ptr(2, "_Z6my_delv", - "http://127.0.0.1:29987/my_del.so", + hostname + "/my_del.so", my_add_md5sum, &fn_ptr, &entry); ASSERT_FALSE(st.ok()); } @@ -199,7 +204,7 @@ TEST_F(UserFunctionCacheTest, md5_fail) { UserFunctionCacheEntry* entry = nullptr; st = cache.get_function_ptr(1, "_Z6my_addv", - "http://127.0.0.1:29987/my_add.so", + hostname + "/my_add.so", "1234", &fn_ptr, &entry); ASSERT_FALSE(st.ok()); } @@ -218,7 +223,7 @@ TEST_F(UserFunctionCacheTest, bad_so) { UserFunctionCacheEntry* entry = nullptr; st = cache.get_function_ptr(2, "_Z6my_addv", - "http://127.0.0.1:29987/my_add.so", + hostname + "/my_add.so", "abc", &fn_ptr, &entry); ASSERT_FALSE(st.ok()); } diff --git a/be/test/util/arrow/arrow_work_flow_test.cpp b/be/test/util/arrow/arrow_work_flow_test.cpp index d6c49ea3f4..0f9f32f545 100644 --- a/be/test/util/arrow/arrow_work_flow_test.cpp +++ b/be/test/util/arrow/arrow_work_flow_test.cpp @@ -29,6 +29,7 @@ #include "gen_cpp/PlanNodes_types.h" #include "gen_cpp/Types_types.h" #include "olap/row.h" +#include "runtime/bufferpool/reservation_tracker.h" #include "runtime/exec_env.h" #include "runtime/mem_tracker.h" #include "runtime/result_queue_mgr.h" @@ -42,7 +43,6 @@ #include "util/cpu_info.h" #include "util/logging.h" - namespace doris { class ArrowWorkFlowTest : public testing::Test { @@ -74,28 +74,30 @@ private: TDescriptorTable _t_desc_table; DescriptorTbl* _desc_tbl; TPlanNode _tnode; - ExecEnv _exec_env; + ExecEnv* _exec_env; RuntimeState* _state; MemTracker *_mem_tracker; RowDescriptor* _row_desc; }; // end class ArrowWorkFlowTest void ArrowWorkFlowTest::init() { + _exec_env = ExecEnv::GetInstance(); init_desc_tbl(); init_runtime_state(); } void ArrowWorkFlowTest::init_runtime_state() { ResultQueueMgr* result_queue_mgr = new ResultQueueMgr(); - ThreadResourceMgr* thread_mgr = new ThreadResourceMgr(); - _exec_env._result_queue_mgr = result_queue_mgr; - _exec_env._thread_mgr = thread_mgr; + ThreadResourceMgr* thrbg56gead_mgr = new ThreadResourceMgr(); + _exec_env->_result_queue_mgr = result_queue_mgr; + _exec_env->_thread_mgr = thread_mgr; + _exec_env->_buffer_reservation = new ReservationTracker(); TQueryOptions query_options; query_options.batch_size = 1024; TUniqueId query_id; query_id.lo = 10; query_id.hi = 100; - _state = new RuntimeState(query_id, query_options, TQueryGlobals(), &_exec_env); + _state = new RuntimeState(query_id, query_options, TQueryGlobals(), _exec_env); _state->init_instance_mem_tracker(); _mem_tracker = new MemTracker(-1, "ArrowWorkFlowTest", _state->instance_mem_tracker()); _state->set_desc_tbl(_desc_tbl);