MCPcopy Create free account
hub / github.com/ClickHouse/ClickHouse / dumpSessions

Function dumpSessions

programs/keeper-utils/KeeperUtils.cpp:361–456  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

359}
360
361void dumpSessions(const DB::KeeperMemoryStorage & storage, const std::string & output_file, const std::string & output_format, bool parallel_output)
362{
363
364 // Get session info
365 auto sessions = storage.getActiveSessions();
366 const auto & ephemerals = storage.committed_ephemerals;
367 const auto & session_auth = storage.committed_session_and_auth;
368
369 if (!output_file.empty())
370 {
371 SharedContextHolder shared_context;
372 ContextMutablePtr global_context;
373 shared_context = DB::Context::createShared();
374 global_context = DB::Context::createGlobal(shared_context.get());
375 global_context->makeGlobalContext();
376 DB::registerFormats();
377 WriteBufferFromFile output_buf(output_file);
378
379 // Define output columns
380 DB::ColumnsWithTypeAndName columns;
381 columns.emplace_back(std::make_shared<DB::DataTypeInt64>(), "session_id");
382 columns.emplace_back(std::make_shared<DB::DataTypeInt64>(), "timeout_ms");
383 columns.emplace_back(std::make_shared<DB::DataTypeUInt64>(), "ephemeral_nodes_count");
384 columns.emplace_back(std::make_shared<DB::DataTypeString>(), "auths");
385
386 DB::Block data(columns);
387 auto res_columns = data.cloneEmptyColumns();
388
389 for (const auto & [session_id, timeout] : sessions)
390 {
391 size_t i = 0;
392 res_columns[i++]->insert(session_id);
393 res_columns[i++]->insert(timeout);
394
395 // Count ephemeral nodes for this session
396 size_t ephemeral_count = 0;
397 if (auto it = ephemerals.find(session_id); it != ephemerals.end())
398 ephemeral_count = it->second.size();
399 res_columns[i++]->insert(ephemeral_count);
400
401 if (auto it = session_auth.find(session_id); it != session_auth.end())
402 {
403 std::string auths;
404 for (const auto & auth : it->second)
405 {
406 if (!auths.empty())
407 auths += ",";
408 auths += fmt::format("{}:{}", auth.scheme, auth.id);
409 }
410 res_columns[i++]->insert(auths);
411 }
412 else
413 {
414 res_columns[i++]->insert("");
415 }
416 }
417
418 data.setColumns(std::move(res_columns));

Callers 1

dumpStateMachineFunction · 0.85

Calls 15

registerFormatsFunction · 0.85
formatBlockFunction · 0.85
getActiveSessionsMethod · 0.80
makeGlobalContextMethod · 0.80
formatFunction · 0.50
emptyMethod · 0.45
getMethod · 0.45
emplace_backMethod · 0.45
cloneEmptyColumnsMethod · 0.45
insertMethod · 0.45
findMethod · 0.45
endMethod · 0.45

Tested by

no test coverage detected